diff --git a/designer-base/pom.xml b/designer-base/pom.xml index 520ce6f2f..8d6e8bffb 100644 --- a/designer-base/pom.xml +++ b/designer-base/pom.xml @@ -8,6 +8,13 @@ design 10.0-FEATURE-SNAPSHOT + + + io.socket + socket.io-client + 0.7.0 + + com.fr.report designer-base 10.0-FEATURE-SNAPSHOT diff --git a/designer-base/src/com/fr/design/DesignerEnvManager.java b/designer-base/src/com/fr/design/DesignerEnvManager.java index f372c9ef7..06d205860 100644 --- a/designer-base/src/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/com/fr/design/DesignerEnvManager.java @@ -4,21 +4,22 @@ package com.fr.design; import com.fr.base.BaseXMLUtils; -import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.base.Utils; -import com.fr.dav.LocalEnv; +import com.fr.base.env.resource.EnvConfigUtils; +import com.fr.base.env.resource.LocalEnvConfig; +import com.fr.base.env.resource.RemoteEnvConfig; +import com.fr.core.env.EnvConfig; import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; import com.fr.design.constants.UIConstants; -import com.fr.env.RemoteEnv; import com.fr.env.SignIn; import com.fr.file.FILEFactory; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogFormatter; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.Constants; import com.fr.stable.EnvChangedListener; import com.fr.stable.ListMap; @@ -33,10 +34,9 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLWriter; import com.fr.stable.xml.XMLableReader; -import javax.swing.SwingWorker; +import javax.swing.*; import javax.swing.SwingWorker.StateValue; -import java.awt.Color; -import java.awt.Rectangle; +import java.awt.*; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; @@ -72,7 +72,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private boolean showPaintToolBar = true; private int maxNumberOrPreviewRow = 200; // name和Env的键值对 - private Map nameEnvMap = new ListMap(); + private Map nameEnvMap = new ListMap(); // marks: 当前报表服务器名字 private String curEnvName = null; private boolean showProjectPane = true; @@ -191,7 +191,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (installHome != null) { String name = Inter.getLocText("FR-Engine_DEFAULT"); String envPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); - designerEnvManager.putEnv(name, LocalEnv.createEnv(envPath)); + designerEnvManager.putEnv(name, new LocalEnvConfig(envPath)); designerEnvManager.setCurEnvName(name); } } @@ -227,7 +227,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { try { Thread.sleep(5000); } catch (InterruptedException e) { - FRLogger.getLogger().error("Map Save Error"); + FineLoggerFactory.getLogger().error("Map Save Error"); } } } @@ -323,7 +323,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { FRContext.getLogger().error(e.getMessage(), e); } // 清空前一个版本中的工作目录和最近打开 - nameEnvMap = new ListMap(); + nameEnvMap = new ListMap(); recentOpenedFilePathList = new ArrayList(); curEnvName = null; designerEnvManager.saveXMLFile(); @@ -470,7 +470,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return 是默认则返回true */ public boolean isCurrentEnvDefault() { - Env currentEnv = this.getEnv(curEnvName); + EnvConfig currentEnv = this.getEnv(curEnvName); String defaultEnvPath = StableUtils.pathJoin(new String[]{StableUtils.getInstallHome(), ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); return ComparatorUtils.equals(new File(defaultEnvPath).getPath(), currentEnv.getPath()); } @@ -478,21 +478,19 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 返回默认环境 */ - public Env getDefaultEnv() { + public EnvConfig getDefaultEnv() { String installHome = StableUtils.getInstallHome(); - String defaultenvPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); + String defaultenvPath = StableUtils.pathJoin(installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME); defaultenvPath = new File(defaultenvPath).getPath(); - if (nameEnvMap.size() >= 0) { - Iterator> entryIt = nameEnvMap.entrySet().iterator(); - while (entryIt.hasNext()) { - Entry entry = entryIt.next(); - Env env = entry.getValue(); - if (ComparatorUtils.equals(defaultenvPath, env.getPath())) { - return env; - } + Iterator> entryIt = nameEnvMap.entrySet().iterator(); + while (entryIt.hasNext()) { + Entry entry = entryIt.next(); + EnvConfig env = entry.getValue(); + if (ComparatorUtils.equals(defaultenvPath, env.getPath())) { + return env; } } - Env newDefaultEnv = LocalEnv.createEnv(defaultenvPath); + EnvConfig newDefaultEnv = new LocalEnvConfig(defaultenvPath); this.putEnv(Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}), newDefaultEnv); return newDefaultEnv; } @@ -505,10 +503,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { String defaultenvPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); defaultenvPath = new File(defaultenvPath).getPath(); if (nameEnvMap.size() >= 0) { - Iterator> entryIt = nameEnvMap.entrySet().iterator(); + Iterator> entryIt = nameEnvMap.entrySet().iterator(); while (entryIt.hasNext()) { - Entry entry = entryIt.next(); - Env env = entry.getValue(); + Entry entry = entryIt.next(); + EnvConfig env = entry.getValue(); if (ComparatorUtils.equals(defaultenvPath, env.getPath())) { return entry.getKey(); } @@ -680,7 +678,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 根据名称返回环境 */ - public Env getEnv(String name) { + public EnvConfig getEnv(String name) { return this.nameEnvMap.get(name); } @@ -690,7 +688,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @param name 名称 * @param env 对应的环境 */ - public void putEnv(String name, Env env) { + public void putEnv(String name, EnvConfig env) { this.nameEnvMap.put(name, env); } @@ -1401,7 +1399,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if ((tmpVal = reader.getAttrAsString("webinfLocation", null)) != null) { // marks:兼容6.1的 // marks:设置默认的目录. - Env reportServer = LocalEnv.createEnv(tmpVal); + EnvConfig reportServer = new LocalEnvConfig(tmpVal); String curReportServerName = Inter.getLocText("Server-Embedded_Server"); this.putEnv(curReportServerName, reportServer); @@ -1454,11 +1452,11 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } if (reader.isChildNode()) { - if (reader.getTagName().equals("Env")) { // description. + if (reader.getTagName().contains("Env")) { // description. // marks:获取名字 String reportServerName = reader.getAttrAsString("name", null); - Env env = readEnv(reader); + EnvConfig env = readEnv(reader); if (env == null) { return; } @@ -1584,7 +1582,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { Iterator nameIt = this.getEnvNameIterator(); while (nameIt.hasNext()) { String envName = nameIt.next(); - Env env = this.getEnv(envName); + EnvConfig env = this.getEnv(envName); writeEnv(writer, envName, env); } @@ -1743,44 +1741,44 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } /* - * 写Env为xml - */ - private static void writeEnv(XMLPrintWriter writer, String name, Env env) { + * 写Env为xml + */ + private static void writeEnv(XMLPrintWriter writer, String name, EnvConfig env) { if (env == null) { return; } - writer.startTAG("Env"); + writer.startTAG("EnvConfig"); writer.classAttr(env.getClass()); writer.attr("name", name); - env.writeXML(writer); - + EnvConfigXMLAdapter xmlAdapter = env instanceof RemoteEnvConfig + ? new RemoteEnvConfigXMLAdapter() + : new LocalEnvConfigXMLAdapter(); + xmlAdapter.fromEnvConfig(env).writeXML(writer); writer.end(); } /* - * 从xml读Env - */ - private static Env readEnv(XMLableReader reader) { - Env env = null; - + * 从xml读Env + */ + private static EnvConfig readEnv(XMLableReader reader) { + EnvConfigXMLAdapter xmlAdapter = null; String tmpVal; //temp value if ((tmpVal = reader.getAttrAsString("class", null)) != null) { - if (tmpVal.endsWith(".LocalEnv")) { - env = LocalEnv.createEnv(); - } else if (tmpVal.endsWith(".RemoteEnv")) { - env = new RemoteEnv(); + if (tmpVal.contains(".LocalEnv")) { + xmlAdapter = new LocalEnvConfigXMLAdapter(); + } else if (tmpVal.contains(".RemoteEnv")) { + xmlAdapter = new RemoteEnvConfigXMLAdapter(); } } - if (env == null) { - return env; + if (xmlAdapter == null) { + return null; } - reader.readXMLObject(env); - - return env; + reader.readXMLObject(xmlAdapter); + return xmlAdapter.toEnvConfig(); } public AlphaFineConfigManager getAlphaFineConfigManager() { @@ -1790,4 +1788,78 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { public void setAlphaFineConfigManager(AlphaFineConfigManager alphaFineConfigManager) { this.alphaFineConfigManager = alphaFineConfigManager; } + + private interface EnvConfigXMLAdapter extends XMLReadable, XMLWriter { + EnvConfig toEnvConfig(); + + EnvConfigXMLAdapter fromEnvConfig(EnvConfig envConfig); + } + + private static class LocalEnvConfigXMLAdapter implements EnvConfigXMLAdapter { + private String path; + + public void readXML(XMLableReader reader) { + if (reader.isChildNode()) { + if ("DIR".equals(reader.getTagName())) { + this.path = reader.getElementValue(); + } + } + } + + public void writeXML(XMLPrintWriter writer) { + writer.startTAG("DIR").textNode(this.path).end(); + } + + public EnvConfig toEnvConfig() { + return new LocalEnvConfig(path); + } + + public EnvConfigXMLAdapter fromEnvConfig(EnvConfig envConfig) { + this.path = envConfig.getPath(); + return this; + } + + } + + private static class RemoteEnvConfigXMLAdapter implements EnvConfigXMLAdapter { + private String path; + private String username; + private String password; + + public void readXML(XMLableReader reader) { + if (reader.isChildNode()) { + String tmpVal; + if ("DIR".equals(reader.getTagName())) { + if ((tmpVal = reader.getAttrAsString("path", null)) != null) { + this.path = tmpVal; + } + if ((tmpVal = reader.getAttrAsString("user", null)) != null) { + this.username = tmpVal; + } + if ((tmpVal = reader.getAttrAsString("password", null)) != null) { + this.password = tmpVal; + } + } + } + } + + public void writeXML(XMLPrintWriter writer) { + writer.startTAG("DIR") + .attr("path", this.path) + .attr("user", this.username) + .attr("password", this.password) + .end(); + } + + public EnvConfig toEnvConfig() { + return new RemoteEnvConfig(path, username, password); + } + + public EnvConfigXMLAdapter fromEnvConfig(EnvConfig envConfig) { + this.path = envConfig.getPath(); + this.username = EnvConfigUtils.getUsername(envConfig); + this.password = EnvConfigUtils.getPassword(envConfig); + return this; + } + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/ExtraDesignClassManager.java b/designer-base/src/com/fr/design/ExtraDesignClassManager.java index ce5878946..179251539 100644 --- a/designer-base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer-base/src/com/fr/design/ExtraDesignClassManager.java @@ -18,9 +18,9 @@ import com.fr.design.gui.core.WidgetOptionFactory; import com.fr.design.menu.ShortCut; import com.fr.design.widget.Appearance; import com.fr.form.ui.Widget; -import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; import com.fr.general.IOUtils; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.AbstractExtraClassManager; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.injectable.PluginSingleInjection; @@ -208,7 +208,7 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement return (Feedback) clazz.newInstance(); } } catch (Exception e) { - FRLogger.getLogger().info("no feed back support"); + FineLoggerFactory.getLogger().info("no feed back support"); } return Feedback.EMPTY; } diff --git a/designer-base/src/com/fr/design/RestartHelper.java b/designer-base/src/com/fr/design/RestartHelper.java index 53aa5e56b..2900e09f5 100644 --- a/designer-base/src/com/fr/design/RestartHelper.java +++ b/designer-base/src/com/fr/design/RestartHelper.java @@ -2,11 +2,18 @@ package com.fr.design; import com.fr.design.mainframe.DesignerContext; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; -import com.fr.stable.*; - -import java.io.*; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.ArrayUtils; +import com.fr.stable.OperatingSystem; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.util.ArrayList; @@ -39,7 +46,7 @@ public class RestartHelper { properties.load(file2DeleteInputStream); file2DeleteInputStream.close(); } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } if (ArrayUtils.getLength(files) != 0) { @@ -53,7 +60,7 @@ public class RestartHelper { properties.store(file2DeleteOutputStream, "save"); file2DeleteOutputStream.close(); } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @@ -71,7 +78,7 @@ public class RestartHelper { properties.load(file2MoveInputStream); file2MoveInputStream.close(); } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } if (!map.isEmpty()) { @@ -84,7 +91,7 @@ public class RestartHelper { properties.store(file2MoveOutputStream, "save"); file2MoveOutputStream.close(); } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @@ -156,10 +163,10 @@ public class RestartHelper { FileChannel restartLockFC = randomAccessFile.getChannel(); FileLock restartLock = restartLockFC.tryLock(); if(restartLock == null) { - FRLogger.getLogger().error("restart lock null!"); + FineLoggerFactory.getLogger().error("restart lock null!"); } }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } if (OperatingSystem.isMacOS()) { restartInMacOS(installHome, filesToBeDelete); @@ -167,7 +174,7 @@ public class RestartHelper { restartInWindows(installHome, filesToBeDelete); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } finally { DesignerContext.getDesignerFrame().exit(); } diff --git a/designer-base/src/com/fr/design/actions/community/BBSAction.java b/designer-base/src/com/fr/design/actions/community/BBSAction.java index 09add551d..01cdcee95 100644 --- a/designer-base/src/com/fr/design/actions/community/BBSAction.java +++ b/designer-base/src/com/fr/design/actions/community/BBSAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class BBSAction extends UpdateAction { @@ -46,12 +45,12 @@ public class BBSAction extends UpdateAction Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } public static final MenuKeySet BBS = new MenuKeySet() { diff --git a/designer-base/src/com/fr/design/actions/community/BugAction.java b/designer-base/src/com/fr/design/actions/community/BugAction.java index 497a12caa..5d5e6893c 100644 --- a/designer-base/src/com/fr/design/actions/community/BugAction.java +++ b/designer-base/src/com/fr/design/actions/community/BugAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class BugAction extends UpdateAction { @@ -40,12 +39,12 @@ public void actionPerformed(ActionEvent arg0) Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/community/NeedAction.java b/designer-base/src/com/fr/design/actions/community/NeedAction.java index bf9b3a509..b353dcaa8 100644 --- a/designer-base/src/com/fr/design/actions/community/NeedAction.java +++ b/designer-base/src/com/fr/design/actions/community/NeedAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class NeedAction extends UpdateAction { @@ -41,12 +40,12 @@ public class NeedAction extends UpdateAction Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/community/QuestionAction.java b/designer-base/src/com/fr/design/actions/community/QuestionAction.java index 7e8ced10b..6cf5f479c 100644 --- a/designer-base/src/com/fr/design/actions/community/QuestionAction.java +++ b/designer-base/src/com/fr/design/actions/community/QuestionAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class QuestionAction extends UpdateAction { @@ -40,12 +39,12 @@ public void actionPerformed(ActionEvent arg0) Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/community/SignAction.java b/designer-base/src/com/fr/design/actions/community/SignAction.java index 30170bc86..839d2b9d7 100644 --- a/designer-base/src/com/fr/design/actions/community/SignAction.java +++ b/designer-base/src/com/fr/design/actions/community/SignAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class SignAction extends UpdateAction { @@ -41,12 +40,12 @@ public class SignAction extends UpdateAction Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/community/UpAction.java b/designer-base/src/com/fr/design/actions/community/UpAction.java index 999b7e9e8..acbe2522b 100644 --- a/designer-base/src/com/fr/design/actions/community/UpAction.java +++ b/designer-base/src/com/fr/design/actions/community/UpAction.java @@ -1,22 +1,21 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + public class UpAction extends UpdateAction { @@ -41,12 +40,12 @@ public class UpAction extends UpdateAction Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/community/VideoAction.java b/designer-base/src/com/fr/design/actions/community/VideoAction.java index ea53fbf8f..cedbe6273 100644 --- a/designer-base/src/com/fr/design/actions/community/VideoAction.java +++ b/designer-base/src/com/fr/design/actions/community/VideoAction.java @@ -1,23 +1,22 @@ package com.fr.design.actions.community; -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Locale; - -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Locale; + public class VideoAction extends UpdateAction { @@ -47,12 +46,12 @@ public class VideoAction extends UpdateAction Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/core/ActionFactory.java b/designer-base/src/com/fr/design/actions/core/ActionFactory.java index 7bc73acbb..00824285c 100644 --- a/designer-base/src/com/fr/design/actions/core/ActionFactory.java +++ b/designer-base/src/com/fr/design/actions/core/ActionFactory.java @@ -7,10 +7,9 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.MenuKeySet; import com.fr.design.selection.QuickEditor; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; -import javax.swing.Action; -import javax.swing.KeyStroke; +import javax.swing.*; import java.awt.event.KeyEvent; import java.lang.reflect.Constructor; import java.util.ArrayList; @@ -55,6 +54,20 @@ public class ActionFactory { private ActionFactory() { } + + /** + * 元素编辑器释放模板对象 + */ + public static void editorRelease() { + for (Map.Entry entry : cellEditor.entrySet()) { + entry.getValue().release(); + } + for (Map.Entry entry : floatEditor.entrySet()) { + entry.getValue().release(); + } + } + + /** * 注册无需每次实例化的单元格元素编辑器 * @@ -336,7 +349,7 @@ public class ActionFactory { if (c == null) { Class cClazz = findQuickEditorClass(clazz, editorClassMap); if (cClazz == null) { - FRLogger.getLogger().error("No Such Editor"); + FineLoggerFactory.getLogger().error("No Such Editor"); return null; } try { diff --git a/designer-base/src/com/fr/design/actions/file/LocalePane.java b/designer-base/src/com/fr/design/actions/file/LocalePane.java index 4dd25c504..a5017bf04 100644 --- a/designer-base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer-base/src/com/fr/design/actions/file/LocalePane.java @@ -4,33 +4,40 @@ package com.fr.design.actions.file; -import java.awt.BorderLayout; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.*; - -import javax.swing.JTable; -import javax.swing.RowFilter; -import javax.swing.SwingWorker; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableRowSorter; - import com.fr.base.Env; import com.fr.base.FRContext; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; -import com.fr.general.*; +import com.fr.general.GeneralUtils; +import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; -import com.fr.stable.StringUtils; import com.fr.stable.bridge.StableFactory; import com.fr.stable.project.ProjectConstants; +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; +import java.awt.*; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; +import java.util.ResourceBundle; +import java.util.Set; +import java.util.Vector; + /** * @author : richie * @since : 8.0 @@ -235,7 +242,7 @@ public class LocalePane extends BasicPane { out.flush(); out.close(); } catch (Exception e) { - FRLogger.getLogger().info(e.getMessage()); + FineLoggerFactory.getLogger().info(e.getMessage()); } } } diff --git a/designer-base/src/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/com/fr/design/actions/file/PreferencePane.java index dd6eaa9ad..fd9024293 100644 --- a/designer-base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/com/fr/design/actions/file/PreferencePane.java @@ -1,7 +1,6 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; -import com.fr.base.ServerConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; @@ -23,8 +22,9 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; -import com.fr.general.FRLevel; import com.fr.general.Inter; +import com.fr.general.log.Log4jConfig; +import com.fr.third.apache.log4j.Level; import javax.swing.*; import java.awt.*; @@ -81,7 +81,7 @@ public class PreferencePane extends BasicPane { private static final String MINUS = "MINUS"; private static final String DISPLAY_MINUS = "-"; - private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; + private static final Level[] LOG = {Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG}; private static java.util.List LANGUAGE = new ArrayList<>(); private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 @@ -125,7 +125,7 @@ public class PreferencePane extends BasicPane { LANGUAGE.clear(); Map map = Inter.getSupportLocaleMap(); LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); - for(Locale locale : map.keySet()){ + for (Locale locale : map.keySet()) { LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); } } @@ -177,7 +177,7 @@ public class PreferencePane extends BasicPane { advancePane.add(spaceUpPane); } - private static String getLocaledLanguage(String key, Locale locale){ + private static String getLocaledLanguage(String key, Locale locale) { StringBuilder sb = new StringBuilder(); sb.append(Inter.getLocText(key)).append("("); sb.append(Inter.getLocText(key, locale)).append(")"); @@ -362,8 +362,8 @@ public class PreferencePane extends BasicPane { logLevelPane.add(logLevelComboBox); logLevelComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - - ServerConfig.getInstance().setServerLogLevel(((FRLevel) logLevelComboBox.getSelectedItem()).getLevel()); + + Log4jConfig.getInstance().setRootLevel((Level) logLevelComboBox.getSelectedItem()); } }); } @@ -380,7 +380,7 @@ public class PreferencePane extends BasicPane { languageLabel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - final LocalePane localePane = new LocalePane(); + final LocalePane localePane = new LocalePane(); BasicDialog dlg = localePane.showLargeWindow(SwingUtilities.getWindowAncestor(PreferencePane.this), new DialogActionAdapter() { @Override public void doOk() { @@ -542,8 +542,8 @@ public class PreferencePane extends BasicPane { paginationLineColorTBButton.setColor(designerEnvManager.getPaginationLineColor()); this.logExportDirectoryField.setText(designerEnvManager.getLogLocation()); - - this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(ServerConfig.getInstance().getServerLogLevel())); + + this.logLevelComboBox.setSelectedItem(Log4jConfig.getInstance().getRootLevel()); this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); designerEnvLanguageIndex = designerEnvManager.getLanguage(); @@ -622,8 +622,8 @@ public class PreferencePane extends BasicPane { if (maxUndoLimit.getSelectedIndex() == SELECTED_INDEX_5) { designerEnvManager.setUndoLimit(MAX_UNDO_LIMIT_50); } - - ServerConfig.getInstance().setServerLogLevel(((FRLevel) logLevelComboBox.getSelectedItem()).getLevel()); + + Log4jConfig.getInstance().setRootLevel(((Level) logLevelComboBox.getSelectedItem())); } diff --git a/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java index 57574ae25..278dfe5cc 100644 --- a/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -1,14 +1,13 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; -import com.fr.base.Env; -import com.fr.base.FRContext; -import com.fr.dav.LocalEnv; +import com.fr.base.env.resource.LocalEnvConfig; +import com.fr.base.env.resource.RemoteEnvConfig; +import com.fr.core.env.EnvConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.ResponseDataSourceChange; -import com.fr.design.dialog.InformationWarnPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -18,21 +17,16 @@ import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.env.RemoteEnv; import com.fr.env.SignIn; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.EnvChangedListener; -import com.fr.stable.ProductConstants; -import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.JOptionPane; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.logging.Level; - public class SwitchExistEnv extends MenuDef { @@ -42,18 +36,20 @@ public class SwitchExistEnv extends MenuDef { this.setHasScrollSubMenu(true); initMenuDef(); JTemplate t = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if(t != null) { - GeneralContext.addEnvWillChangedListener(t.getFullPathName(), new EnvChangedListener() { - public void envChanged() { - SwitchExistEnv.this.clearShortCuts(); - initMenuDef(); - } - }); + if (t != null) { + GeneralContext.addEnvWillChangedListener( + t.getFullPathName(), + new EnvChangedListener() { + public void envChanged() { + SwitchExistEnv.this.clearShortCuts(); + initMenuDef(); + } + }); } } private void initMenuDef() { - //ButtonGroup group = new ButtonGroup(); + // ButtonGroup group = new ButtonGroup(); Iterator nameIt = DesignerEnvManager.getEnvManager().getEnvNameIterator(); while (nameIt.hasNext()) { String name = nameIt.next(); @@ -66,15 +62,14 @@ public class SwitchExistEnv extends MenuDef { public static class GetExistEnvAction extends UpdateAction implements ResponseDataSourceChange { public GetExistEnvAction() { - } public GetExistEnvAction(String envName) { this.setName(envName); - Env env = DesignerEnvManager.getEnvManager().getEnv(envName); - if (env instanceof LocalEnv) { + EnvConfig env = DesignerEnvManager.getEnvManager().getEnv(envName); + if (env instanceof LocalEnvConfig) { this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/data/bind/localconnect.png")); - } else if (env instanceof RemoteEnv) { + } else if (env instanceof RemoteEnvConfig) { this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/data/bind/distanceconnect.png")); } } @@ -102,28 +97,24 @@ public class SwitchExistEnv extends MenuDef { */ public void actionPerformed(ActionEvent e) { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - Env selectedEnv = envManager.getEnv(this.getName()); + EnvConfig selectedEnv = envManager.getEnv(this.getName()); try { if (selectedEnv instanceof RemoteEnv && !((RemoteEnv) selectedEnv).testServerConnection()) { - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); - return; - } - String remoteVersion = selectedEnv.getDesignerVersion(); - if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { - String infor = Inter.getLocText("Server-version-tip"); - String moreInfo = Inter.getLocText("Server-version-tip-moreInfo"); - FRLogger.getLogger().log(Level.WARNING, infor); - new InformationWarnPane(infor, moreInfo, Inter.getLocText("Tooltips")).show(); + JOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); return; } SignIn.signIn(selectedEnv); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); fireDSChanged(); } catch (Exception em) { - FRContext.getLogger().error(em.getMessage(), em); - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); + FineLoggerFactory.getLogger().error(em.getMessage(), em); + JOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); TemplatePane.getInstance().editItems(); } } } -} \ No newline at end of file +} diff --git a/designer-base/src/com/fr/design/actions/help/FeedBackPane.java b/designer-base/src/com/fr/design/actions/help/FeedBackPane.java index e7894e77f..d4f212f3d 100644 --- a/designer-base/src/com/fr/design/actions/help/FeedBackPane.java +++ b/designer-base/src/com/fr/design/actions/help/FeedBackPane.java @@ -7,6 +7,8 @@ package com.fr.design.actions.help; import com.fr.base.FRContext; import com.fr.base.FeedBackInfo; import com.fr.design.constants.LayoutConstants; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; @@ -16,13 +18,11 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; +import com.fr.design.utils.DesignUtils; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; -import com.fr.design.utils.DesignUtils; import javax.swing.*; import javax.swing.border.Border; @@ -33,7 +33,12 @@ import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.Date; import java.util.concurrent.CancellationException; @@ -275,7 +280,7 @@ public class FeedBackPane extends BasicPane { try { return DesignUtils.sendFeedBack(feedBackInfo); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } } diff --git a/designer-base/src/com/fr/design/actions/help/ForumAction.java b/designer-base/src/com/fr/design/actions/help/ForumAction.java index 5a07cca92..292ad13f3 100644 --- a/designer-base/src/com/fr/design/actions/help/ForumAction.java +++ b/designer-base/src/com/fr/design/actions/help/ForumAction.java @@ -10,6 +10,7 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import javax.swing.*; @@ -48,12 +49,12 @@ public class ForumAction extends UpdateAction { Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } diff --git a/designer-base/src/com/fr/design/actions/help/SupportQQAction.java b/designer-base/src/com/fr/design/actions/help/SupportQQAction.java index ae59df4a5..703c5632e 100644 --- a/designer-base/src/com/fr/design/actions/help/SupportQQAction.java +++ b/designer-base/src/com/fr/design/actions/help/SupportQQAction.java @@ -5,10 +5,10 @@ package com.fr.design.actions.help; import com.fr.base.BaseUtils; -import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; import javax.swing.*; @@ -38,9 +38,9 @@ public class SupportQQAction extends UpdateAction { Desktop.getDesktop().browse(new URI(ProductConstants.SUPPORT_QQ)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } } diff --git a/designer-base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java b/designer-base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java index a868e404d..0ab5edd25 100644 --- a/designer-base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java +++ b/designer-base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java @@ -8,12 +8,17 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayoutHelper; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; /** * Created by XiaXiang on 2017/4/6. @@ -202,7 +207,7 @@ public class AlphaFineConfigPane extends BasicPane { DesignerEnvManager.loadLogSetting(); DesignerEnvManager.getEnvManager().saveXMLFile(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } diff --git a/designer-base/src/com/fr/design/condition/LiteConditionPane.java b/designer-base/src/com/fr/design/condition/LiteConditionPane.java index 58e859ba3..5efa85dc5 100644 --- a/designer-base/src/com/fr/design/condition/LiteConditionPane.java +++ b/designer-base/src/com/fr/design/condition/LiteConditionPane.java @@ -3,7 +3,11 @@ package com.fr.design.condition; import com.fr.base.BaseFormula; import com.fr.base.BaseUtils; import com.fr.data.DataConstants; -import com.fr.data.condition.*; +import com.fr.data.condition.CommonCondition; +import com.fr.data.condition.FormulaCondition; +import com.fr.data.condition.JoinCondition; +import com.fr.data.condition.ListCondition; +import com.fr.data.condition.ObjectCondition; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.formula.FormulaFactory; @@ -18,9 +22,9 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.scrollruler.ModLineBorder; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.data.Condition; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import javax.swing.*; @@ -960,7 +964,7 @@ public abstract class LiteConditionPane extends BasicBeanPa try{ newCondition = (Condition)joinCondition.getCondition().clone(); }catch (CloneNotSupportedException e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return newCondition; } 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 5e9c16bde..5fabd7c2b 100644 --- a/designer-base/src/com/fr/design/data/datapane/ChoosePane.java +++ b/designer-base/src/com/fr/design/data/datapane/ChoosePane.java @@ -33,8 +33,8 @@ import com.fr.design.mainframe.DesignerFrame; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.ConnectionConfig; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import javax.swing.*; @@ -85,6 +85,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha private PopupMenuListener popupMenuListener = new PopupMenuListener() { + @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { new Thread() { @Override @@ -94,26 +95,41 @@ public class ChoosePane extends BasicBeanPane implements Refresha }.start(); } + @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { } + @Override public void popupMenuCanceled(PopupMenuEvent e) { } }; private PopupMenuListener listener = new PopupMenuListener() { + @Override public void popupMenuCanceled(PopupMenuEvent e) { } + @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { } + @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { executePopulateWorker(); } }; + private FocusAdapter focusAdapter = new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + if (schemaBox.getSelectedIndex() == -1) { + schemaBox.updateUI(); + schemaBox.showPopup(); + } + } + }; + public ChoosePane() { this(null); } @@ -146,6 +162,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha private void initBoxListener() { addDSBoxListener(); schemaBox.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent evt) { tableNameComboBox.setSelectedItem(""); } @@ -176,16 +193,9 @@ public class ChoosePane extends BasicBeanPane implements Refresha } protected void addFocusListener() { - schemaBox.addFocusListener(new FocusAdapter() { - public void focusGained(FocusEvent e) { - if (schemaBox.getSelectedIndex() == -1) { - schemaBox.updateUI(); - schemaBox.showPopup(); - } - } - }); } + @SuppressWarnings("unchecked") protected void initDsNameComboBox() { dsNameComboBox.setRefreshingModel(true); ConnectionConfig connectionConfig = ConnectionConfig.getInstance(); @@ -233,12 +243,18 @@ public class ChoosePane extends BasicBeanPane implements Refresha } populateWorker = new SwingWorker() { - protected com.fr.data.impl.Connection doInBackground() throws Exception { + @SuppressWarnings("unchecked") + @Override + protected com.fr.data.impl.Connection doInBackground() { + schemaBox.setRefreshingModel(true); schemaBox.addItem(Inter.getLocText("FR-Designer_Loading") + "..."); schemaBox.setSelectedItem(null); + schemaBox.setRefreshingModel(false); return getConnection(); } + @SuppressWarnings("unchecked") + @Override public void done() { try { com.fr.data.impl.Connection selectedDatabase = get(); @@ -261,12 +277,14 @@ public class ChoosePane extends BasicBeanPane implements Refresha schemaBox.setSelectedIndex(index); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } schemaBox.setRefreshingModel(false); schemaBox.removePopupMenuListener(listener); schemaBox.setPopupVisible(true); schemaBox.addPopupMenuListener(listener); + schemaBox.removeFocusListener(focusAdapter); + schemaBox.addFocusListener(focusAdapter); } }; populateWorker.execute(); @@ -292,7 +310,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha return null; // peter:选中了当前的零长度的节点,直接返回. } ConnectionConfig connectionConfig = ConnectionConfig.getInstance(); - for (Map.Entry entry: connectionConfig.getConnections().entrySet()) { + for (Map.Entry entry : connectionConfig.getConnections().entrySet()) { if (ComparatorUtils.equals(selectedDSName, entry.getKey())) { return entry.getValue(); } @@ -303,6 +321,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha /** * 刷新没多大用。而且要刷新也不是这儿刷新。 */ + @Override public void refresh() { DBUtils.refreshDatabase(); String schema = StringUtils.isEmpty(schemaBox.getSelectedItem()) ? null : schemaBox.getSelectedItem(); @@ -312,6 +331,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha } TreeCellRenderer tableNameTreeRenderer = new DefaultTreeCellRenderer() { + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); if (value instanceof DefaultMutableTreeNode) { @@ -328,6 +348,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha }; public static UIComboBoxRenderer listCellRenderer = new UIComboBoxRenderer() { + @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value instanceof TreePath) { @@ -344,16 +365,18 @@ public class ChoosePane extends BasicBeanPane implements Refresha /** - * 添加项目监听事件 - * @param aListener 事件监听器 + * 添加项目监听事件 + * + * @param aListener 事件监听器 */ public void addItemListener(ItemListener aListener) { this.tableNameComboBox.addItemListener(aListener); } /** - * 删除项目监听事件 - * @param aListener 事件监听器 + * 删除项目监听事件 + * + * @param aListener 事件监听器 */ public void removeItemListener(ItemListener aListener) { this.tableNameComboBox.removeItemListener(aListener); @@ -398,9 +421,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha } } ((DefaultTreeModel) tree.getModel()).reload(); - /** - * daniel 展开所有tree - */ + // daniel 展开所有tree TreeNode root = (TreeNode) tree.getModel().getRoot(); TreePath parent = new TreePath(root); TreeNode node = (TreeNode) parent.getLastPathComponent(); @@ -416,42 +437,41 @@ public class ChoosePane extends BasicBeanPane implements Refresha /** * 创建选中的数据集数据 - * @return 数据集数据 + * + * @return 数据集数据 */ public TableData createSelectTableData() { DataBaseItems paras = this.updateBean(); boolean connect = false; com.fr.data.impl.Connection database = DBUtils.checkDBConnection(paras.getDatabaseName()); if (database == null) { - failedToFindTable(); + failedToFindTable(); return TableData.EMPTY_TABLEDATA; } try { connect = FRContext.getCurrentEnv().testConnection(database); - } catch (Exception e1) { - connect = false; + } catch (Exception ignored) { } if (!connect) { DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); JOptionPane.showMessageDialog(designerFrame, Inter.getLocText("Datasource-Connection_failed"), - Inter.getLocText("FR-Designer_Failed"), JOptionPane.INFORMATION_MESSAGE); - failedToFindTable(); + Inter.getLocText("FR-Designer_Failed"), JOptionPane.INFORMATION_MESSAGE); + failedToFindTable(); return null; } // 显示Table数据. TableData tableData = null; if (FRContext.getCurrentEnv() instanceof LocalEnv) { - TableData tableDataLocal = new DBTableData(database, DataCoreUtils.createSelectSQL(paras.getSchemaName(), paras.getTableName(), + tableData = new DBTableData(database, DataCoreUtils.createSelectSQL(paras.getSchemaName(), paras.getTableName(), DialectFactory.getDialectByName(paras.getDatabaseName()))); - tableData = tableDataLocal; } else { try { TableData tableDataLocal = new DBTableData(database, DataCoreUtils.createSelectSQL(paras.getSchemaName(), paras.getTableName(), DialectFactory.getDialectByName(paras.getDatabaseName()))); tableData = FRContext.getCurrentEnv().previewTableData(tableDataLocal, java.util.Collections.EMPTY_MAP, DesignerEnvManager.getEnvManager().getMaxNumberOrPreviewRow()); } catch (Exception e) { - failedToFindTable(); + failedToFindTable(); FRContext.getLogger().error(e.getMessage(), e); } } @@ -463,8 +483,8 @@ public class ChoosePane extends BasicBeanPane implements Refresha return this.dsNameComboBox.getSelectedItem(); } - protected void failedToFindTable() { - } + protected void failedToFindTable() { + } protected String getTableName() { String tableName = ""; @@ -485,7 +505,8 @@ public class ChoosePane extends BasicBeanPane implements Refresha /** * 得到当前的ColumnName[] - * @return 返回当前的ColumnName[] + * + * @return 返回当前的ColumnName[] */ public String[] currentColumnNames() { String[] colNames = null; @@ -493,21 +514,19 @@ public class ChoosePane extends BasicBeanPane implements Refresha DataBaseItems paras = this.updateBean(); String selectedDSName = paras.getDatabaseName(); if (StringUtils.isBlank(selectedDSName)) { - return colNames = new String[0]; // peter:选中了当前的零长度的节点,直接返回. + // peter:选中了当前的零长度的节点,直接返回. + return new String[0]; } String selectedTableObject = paras.getTableName(); if (StringUtils.isEmpty(selectedTableObject)) { - return colNames = new String[0]; + return new String[0]; } - java.sql.Connection conn = null; try { // daniel:增加参数 colNames = FRContext.getCurrentEnv().getColumns(selectedDSName, paras.getSchemaName(), selectedTableObject); } catch (Exception e2) { FRContext.getLogger().error(e2.getMessage(), e2); - } finally { - DBUtils.closeConnection(conn); } if (colNames == null) { @@ -517,9 +536,10 @@ public class ChoosePane extends BasicBeanPane implements Refresha } /** - * 预览key value对应的数据 + * 预览key value对应的数据 + * * @param key 键 - * @param value 值 + * @param value 值 */ public void preview(int key, int value) { PreviewTablePane.previewTableData(createSelectTableData(), key, value); @@ -528,6 +548,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha /** * 默认预览 */ + @Override public void preview() { preview(-1, -1); } @@ -540,10 +561,12 @@ public class ChoosePane extends BasicBeanPane implements Refresha } /** - *注册listener,相应数据集改变 + * 注册listener,相应数据集改变 */ + @Override public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { + @Override public void stateChanged(ChangeEvent e) { initDsNameComboBox(); } @@ -578,6 +601,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha this.refreshingModel = refreshingModel; } + @Override public void setSelectedItem(Object ob) { this.getModel().setSelectedItem(ob); if (ob != null && StringUtils.isEmpty(ob.toString())) { @@ -591,11 +615,13 @@ public class ChoosePane extends BasicBeanPane implements Refresha private class ComboBoxEditor extends UIComboBoxEditor { private Object item; + @Override public void setItem(Object item) { this.item = item; textField.setText((item == null) ? "" : item.toString()); } + @Override public Object getItem() { return this.item; } diff --git a/designer-base/src/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java b/designer-base/src/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java index 680a69f61..94b38f681 100644 --- a/designer-base/src/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java +++ b/designer-base/src/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java @@ -12,9 +12,10 @@ import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.scrollruler.ModLineBorder; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.EncodeConstants; -import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.*; import java.awt.*; @@ -121,7 +122,7 @@ public abstract class DatabaseConnectionPane { - private ColumnRowPane crPane; - - public ColumnRowEditor() { - this(""); - } - - public ColumnRowEditor(String name) { - this(null, name); - } - - - public ColumnRowEditor(ColumnRow value) { - this(value, ""); - } - - public ColumnRowEditor(ColumnRow value, String name) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - crPane = new ColumnRowPane(); - this.add(crPane, BorderLayout.CENTER); - this.setValue(value); - this.setName(name); - } - - @Override - public ColumnRow getValue() { - return this.crPane.update(); - } - - @Override - public void setValue(ColumnRow value) { - if (value == null) { - value = ColumnRow.valueOf(0, 0); - } - - this.crPane.populate(value); - } - - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - - this.crPane.setEnabled(enabled); - } - - @Override - public void requestFocus() { - this.crPane.requestFocus(); - } - - public String getIconName() { - return "cell"; - } - - @Override - public boolean accept(Object object) { - return object instanceof ColumnRow; - } + private ColumnRowPane crPane; + + public ColumnRowEditor() { + this(""); + } + + public ColumnRowEditor(String name) { + this(null, name); + } + + + public ColumnRowEditor(ColumnRow value) { + this(value, ""); + } + + public ColumnRowEditor(ColumnRow value, String name) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + crPane = new ColumnRowPane(); + this.add(crPane, BorderLayout.CENTER); + this.setValue(value); + this.setName(name); + } + + @Override + public ColumnRow getValue() { + return this.crPane.update(); + } + + @Override + public void setValue(ColumnRow value) { + if (value == null) { + value = ColumnRow.valueOf(0, 0); + } + + this.crPane.populate(value); + } + + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + + this.crPane.setEnabled(enabled); + } + + @Override + public void requestFocus() { + this.crPane.requestFocus(); + } + + @Override + public String getIconName() { + return "cell"; + } + + @Override + public boolean accept(Object object) { + return object instanceof ColumnRow; + } + + @Override + public void clearData() { + super.clearData(); + this.setValue(null); + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/editor/editor/TextEditor.java b/designer-base/src/com/fr/design/editor/editor/TextEditor.java index 8700db078..630f6956a 100644 --- a/designer-base/src/com/fr/design/editor/editor/TextEditor.java +++ b/designer-base/src/com/fr/design/editor/editor/TextEditor.java @@ -3,26 +3,31 @@ */ package com.fr.design.editor.editor; -import java.awt.BorderLayout; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; - import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.stable.StringUtils; +import java.awt.BorderLayout; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + /** * CellEditor used to edit String object. * - * @editor zhou + * @author zhou * @since 2012-3-29下午6:00:43 */ public class TextEditor extends Editor { - private UITextField textField; // text field. - // the old value of text field. + /** + * text field. + */ + private UITextField textField; + /** + * the old value of text field. + */ private String oldValue = StringUtils.EMPTY; /** @@ -93,7 +98,7 @@ public class TextEditor extends Editor { value = StringUtils.EMPTY; } - oldValue = value.toString(); + oldValue = value; this.textField.setText(oldValue); } @@ -110,6 +115,7 @@ public class TextEditor extends Editor { /** * 请求焦点 */ + @Override public void requestFocus() { this.textField.requestFocus(); } @@ -133,10 +139,12 @@ public class TextEditor extends Editor { /** * 被选中时文本输入框请求焦点 */ + @Override public void selected() { this.textField.requestFocus(); } + @Override public String getIconName() { return "type_string"; } @@ -147,7 +155,15 @@ public class TextEditor extends Editor { * @param object 需要判断的object * @return 是字符类型则返回true */ + @Override public boolean accept(Object object) { return object instanceof String; } + + @Override + public void clearData() { + super.clearData(); + this.textField.setText(StringUtils.EMPTY); + this.oldValue = StringUtils.EMPTY; + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/extra/LoginDialog.java b/designer-base/src/com/fr/design/extra/LoginDialog.java index 6ae8a63f9..33983baf2 100644 --- a/designer-base/src/com/fr/design/extra/LoginDialog.java +++ b/designer-base/src/com/fr/design/extra/LoginDialog.java @@ -4,8 +4,12 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StableUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Frame; /** * Created by vito on 2017/5/5. @@ -15,6 +19,15 @@ public class LoginDialog extends UIDialog { public LoginDialog(Frame frame, Component pane) { super(frame); + init(pane); + } + + public LoginDialog(Dialog dialog, Component pane) { + super(dialog); + init(pane); + } + + private void init(Component pane) { if (StableUtils.getMajorJavaVersion() == 8) { setUndecorated(true); } diff --git a/designer-base/src/com/fr/design/extra/PluginDetailPane.java b/designer-base/src/com/fr/design/extra/PluginDetailPane.java index a5d44a614..831ccbbc5 100644 --- a/designer-base/src/com/fr/design/extra/PluginDetailPane.java +++ b/designer-base/src/com/fr/design/extra/PluginDetailPane.java @@ -1,8 +1,8 @@ package com.fr.design.extra; import com.fr.design.dialog.BasicPane; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.view.PluginView; import com.fr.stable.StringUtils; @@ -44,7 +44,7 @@ public class PluginDetailPane extends BasicPane { try { Desktop.getDesktop().browse(linkUrl.toURI()); } catch (IOException | URISyntaxException e1) { - FRLogger.getLogger().error(e1.getMessage()); + FineLoggerFactory.getLogger().error(e1.getMessage()); } } } diff --git a/designer-base/src/com/fr/design/extra/PluginFromStorePane.java b/designer-base/src/com/fr/design/extra/PluginFromStorePane.java index fe8b2a9dd..1e30a1656 100644 --- a/designer-base/src/com/fr/design/extra/PluginFromStorePane.java +++ b/designer-base/src/com/fr/design/extra/PluginFromStorePane.java @@ -5,9 +5,9 @@ import com.fr.config.MarketConfig; import com.fr.design.extra.tradition.callback.UpdateOnlineCallback; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.manage.control.PluginTaskResult; @@ -15,11 +15,7 @@ import com.fr.plugin.manage.control.ProgressCallback; import com.fr.plugin.view.PluginView; import com.fr.stable.StringUtils; -import javax.swing.JComponent; -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.SwingConstants; +import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.File; import java.util.List; @@ -180,7 +176,7 @@ public class PluginFromStorePane extends PluginAbstractLoadingViewPane task = new PluginTask<>(webEngine, callback, new GetPluginFromStoreExecutor(new JSONObject(info))); threadPoolExecutor.submit(task); } catch (JSONException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } @@ -491,10 +489,10 @@ public class PluginWebBridge { } } catch (NullPointerException e) { //此为uri为空时抛出异常 - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (IOException e) { //此为无法获取系统默认浏览器 - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } } @@ -506,7 +504,7 @@ public class PluginWebBridge { try { Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.register"))); } catch (Exception e) { - FRContext.getLogger().info(e.getMessage()); + FineLoggerFactory.getLogger().info(e.getMessage()); } } diff --git a/designer-base/src/com/fr/design/extra/QQLoginWebPane.java b/designer-base/src/com/fr/design/extra/QQLoginWebPane.java index 82648531c..f74219691 100644 --- a/designer-base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer-base/src/com/fr/design/extra/QQLoginWebPane.java @@ -2,6 +2,7 @@ package com.fr.design.extra; import com.fr.base.FRContext; import com.fr.general.*; +import com.fr.log.FineLoggerFactory; import javafx.application.Platform; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; @@ -148,7 +149,7 @@ public class QQLoginWebPane extends JFXPanel { } }); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java index 10643e6f2..a8ca35831 100644 --- a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -22,6 +22,9 @@ import javax.swing.JOptionPane; import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Component; +import java.awt.Dialog; +import java.awt.Frame; +import java.awt.Window; import java.io.File; import java.io.IOException; import java.lang.reflect.Constructor; @@ -133,18 +136,22 @@ public class WebViewDlgHelper { if (StableUtils.getMajorJavaVersion() == VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { - int rv = JOptionPane.showConfirmDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(SHOP_SCRIPTS); - } + confirmDownLoadShopJS(); } else { - showLoginDlg(); + showLoginDlg(DesignerContext.getDesignerFrame()); + updateShopScripts(SHOP_SCRIPTS); + } + } + } + + + public static void createLoginDialog(Window parent) { + if (StableUtils.getMajorJavaVersion() == VERSION_8) { + File file = new File(StableUtils.pathJoin(installHome, "scripts")); + if (!file.exists()) { + confirmDownLoadShopJS(); + } else { + showLoginDlg(parent); updateShopScripts(SHOP_SCRIPTS); } } @@ -164,6 +171,20 @@ public class WebViewDlgHelper { } } + + private static void confirmDownLoadShopJS() { + int rv = JOptionPane.showConfirmDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(SHOP_SCRIPTS); + } + } + private static void showPluginDlg(String mainJsPath) { try { Class clazz = Class.forName("com.fr.design.extra.PluginWebPane"); @@ -179,13 +200,17 @@ public class WebViewDlgHelper { } } - private static void showLoginDlg() { + private static void showLoginDlg(Window window) { try { Class clazz = Class.forName("com.fr.design.extra.LoginWebPane"); Constructor constructor = clazz.getConstructor(String.class); Component webPane = (Component) constructor.newInstance(installHome); - - UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), webPane); + UIDialog qqdlg; + if (window instanceof Dialog) { + qqdlg = new LoginDialog((Dialog) window, webPane); + } else { + qqdlg = new LoginDialog((Frame) window, webPane); + } LoginWebBridge.getHelper().setDialogHandle(qqdlg); qqdlg.setVisible(true); } catch (Throwable ignored) { diff --git a/designer-base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java b/designer-base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java index 4b4bddab4..c5a159a10 100644 --- a/designer-base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java +++ b/designer-base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java @@ -4,11 +4,11 @@ import com.fr.design.extra.PluginConstants; import com.fr.design.extra.PluginOperateUtils; import com.fr.design.extra.PluginUtils; import com.fr.design.extra.Process; -import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; /** @@ -23,7 +23,7 @@ public class GetPluginFromStoreExecutor implements Executor { private String scope; public GetPluginFromStoreExecutor(JSONObject info) { - this.category = info.optString("category"); + this.category = info.optString("categories"); this.fee = info.optString("fee"); this.seller = info.optString("seller"); this.scope = info.optString("scope"); @@ -72,7 +72,7 @@ public class GetPluginFromStoreExecutor implements Executor { JSONArray resultJSONArray = PluginUtils.filterPluginsFromVersion(resultArr); result = resultJSONArray.toString(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } else { result = PluginConstants.CONNECTION_404; diff --git a/designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java b/designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java index 303d8aee7..2d7917d55 100644 --- a/designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java +++ b/designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java @@ -2,9 +2,9 @@ package com.fr.design.extra.exe; import com.fr.design.extra.PluginsReaderFromStore; import com.fr.design.extra.Process; -import com.fr.general.FRLogger; import com.fr.json.JSONArray; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.view.PluginView; import com.fr.stable.StringUtils; @@ -42,7 +42,7 @@ public class ReadUpdateOnlineExecutor implements Executor { } result = jsonArray.toString(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } } diff --git a/designer-base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java b/designer-base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java index c46dd5d4e..456b77dd1 100644 --- a/designer-base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java +++ b/designer-base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java @@ -3,11 +3,11 @@ package com.fr.design.extra.exe; import com.fr.design.extra.PluginOperateUtils; import com.fr.design.extra.PluginUtils; import com.fr.design.extra.Process; -import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; /** @@ -50,7 +50,7 @@ public class SearchOnlineExecutor implements Executor { JSONArray resultJSONArray = PluginUtils.filterPluginsFromVersion(jsonArray); result = resultJSONArray.toString(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } } diff --git a/designer-base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java b/designer-base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java index 834f4370d..b9d04ecd1 100644 --- a/designer-base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java +++ b/designer-base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java @@ -2,8 +2,8 @@ package com.fr.design.extra.exe.callback; import com.fr.design.extra.PluginOperateUtils; import com.fr.design.extra.PluginUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; @@ -37,7 +37,7 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback { public void done(PluginTaskResult result) { if (result.isSuccess()) { jsCallback.execute("success"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Install_Success")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Plugin_Install_Success")); } else if (result.errorCode() == PluginErrorCode.NeedDealWithPluginDependency) { int rv = JOptionPane.showOptionDialog( @@ -76,7 +76,7 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback { PluginOperateUtils.updatePluginFromDisk(zipFile, jsCallback); }else { jsCallback.execute("failed"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Install_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Install_Failed")); JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Plugin_Install_Failed"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java b/designer-base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java index 88f125a98..49da09b9c 100644 --- a/designer-base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java +++ b/designer-base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java @@ -1,8 +1,8 @@ package com.fr.design.extra.exe.callback; import com.fr.design.extra.PluginOperateUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.control.AbstractDealPreTaskCallback; @@ -35,7 +35,7 @@ public class InstallOnlineCallback extends AbstractDealPreTaskCallback { String pluginInfo = PluginOperateUtils.getSuccessInfo(result); if (result.isSuccess()) { jsCallback.execute("success"); - FRLogger.getLogger().info(pluginInfo + Inter.getLocText("FR-Plugin_Install_Success")); + FineLoggerFactory.getLogger().info(pluginInfo + Inter.getLocText("FR-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, pluginInfo + Inter.getLocText("FR-Plugin_Install_Success")); } else if(result.errorCode() == PluginErrorCode.HasLowerPluginWhenInstall){ int rv = JOptionPane.showOptionDialog( @@ -55,7 +55,7 @@ public class InstallOnlineCallback extends AbstractDealPreTaskCallback { PluginOperateUtils.updatePluginOnline(pluginMarker, jsCallback); }else { jsCallback.execute("failed"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Install_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Install_Failed")); JOptionPane.showMessageDialog(null, pluginInfo, Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/extra/exe/callback/UninstallPluginCallback.java b/designer-base/src/com/fr/design/extra/exe/callback/UninstallPluginCallback.java index 894903bff..be67ce617 100644 --- a/designer-base/src/com/fr/design/extra/exe/callback/UninstallPluginCallback.java +++ b/designer-base/src/com/fr/design/extra/exe/callback/UninstallPluginCallback.java @@ -1,8 +1,8 @@ package com.fr.design.extra.exe.callback; import com.fr.design.extra.PluginUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; @@ -25,7 +25,7 @@ public class UninstallPluginCallback extends AbstractPluginTaskCallback { public void done(PluginTaskResult result) { if (result.isSuccess()) { jsCallback.execute("success"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Delete_Success")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Delete_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Plugin_Delete_Success")); }else if (result.errorCode() == PluginErrorCode.NeedUninstallDependingPluginFirst) { int rv = JOptionPane.showOptionDialog( @@ -44,7 +44,7 @@ public class UninstallPluginCallback extends AbstractPluginTaskCallback { PluginManager.getController().uninstall(pluginMarker, true, new UninstallPluginCallback(pluginMarker, jsCallback)); } else { jsCallback.execute("failed"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Delete_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Delete_Failed")); JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java b/designer-base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java index 89f5e1c05..586538a93 100644 --- a/designer-base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java +++ b/designer-base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java @@ -2,8 +2,8 @@ package com.fr.design.extra.exe.callback; import com.fr.design.extra.PluginOperateUtils; import com.fr.design.extra.PluginUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; @@ -37,7 +37,7 @@ public class UpdateFromDiskCallback extends AbstractPluginTaskCallback { public void done(PluginTaskResult result) { if (result.isSuccess()) { jsCallback.execute("success"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Update_Success")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Update_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Plugin_Update_Success")); } else if (result.errorCode() == PluginErrorCode.NeedDealWithPluginDependency) { int rv = JOptionPane.showOptionDialog( @@ -76,7 +76,7 @@ public class UpdateFromDiskCallback extends AbstractPluginTaskCallback { PluginOperateUtils.installPluginFromDisk(zipFile, jsCallback); }else { jsCallback.execute("failed"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Update_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Update_Failed")); JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java b/designer-base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java index 441e27d95..8219fbe06 100644 --- a/designer-base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java +++ b/designer-base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java @@ -1,9 +1,8 @@ package com.fr.design.extra.exe.callback; -import com.fr.design.extra.PluginUtils; import com.fr.design.extra.PluginOperateUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.manage.control.AbstractDealPreTaskCallback; import com.fr.plugin.manage.control.PluginTask; import com.fr.plugin.manage.control.PluginTaskResult; @@ -32,11 +31,11 @@ public class UpdateOnlineCallback extends AbstractDealPreTaskCallback { String pluginInfo = PluginOperateUtils.getSuccessInfo(result); if (result.isSuccess()) { jsCallback.execute("success"); - FRLogger.getLogger().info(pluginInfo + Inter.getLocText("FR-Plugin_Update_Success")); + FineLoggerFactory.getLogger().info(pluginInfo + Inter.getLocText("FR-Plugin_Update_Success")); JOptionPane.showMessageDialog(null,pluginInfo + Inter.getLocText("FR-Plugin_Update_Success")); } else { jsCallback.execute("failed"); - FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Update_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Plugin_Update_Failed")); JOptionPane.showMessageDialog(null, pluginInfo, Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/extra/tradition/callback/UpdateOnlineCallback.java b/designer-base/src/com/fr/design/extra/tradition/callback/UpdateOnlineCallback.java index ef594f89f..78661fabd 100644 --- a/designer-base/src/com/fr/design/extra/tradition/callback/UpdateOnlineCallback.java +++ b/designer-base/src/com/fr/design/extra/tradition/callback/UpdateOnlineCallback.java @@ -2,8 +2,8 @@ package com.fr.design.extra.tradition.callback; import com.fr.design.extra.PluginStatusCheckCompletePane; import com.fr.design.extra.PluginUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; @@ -31,7 +31,7 @@ public class UpdateOnlineCallback implements ProgressCallback { public void done(PluginTaskResult result){ if (result.isSuccess()) { - FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Update_Success")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Update_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else if (result.errorCode() == PluginErrorCode.OperationNotSupport) { int rv = JOptionPane.showOptionDialog( @@ -49,7 +49,7 @@ public class UpdateOnlineCallback implements ProgressCallback { } PluginManager.getController().update(pluginMarker, toPluginMarker, new UpdateOnlineCallback(pluginMarker, toPluginMarker, pane)); } else { - FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Failed")); + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Failed")); JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer-base/src/com/fr/design/file/HistoryTemplateListPane.java b/designer-base/src/com/fr/design/file/HistoryTemplateListPane.java index dfd1f123f..b9ffee91a 100644 --- a/designer-base/src/com/fr/design/file/HistoryTemplateListPane.java +++ b/designer-base/src/com/fr/design/file/HistoryTemplateListPane.java @@ -1,40 +1,37 @@ package com.fr.design.file; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.*; -import java.util.List; -import java.util.logging.Level; - -import javax.swing.*; - +import com.fr.base.FRContext; import com.fr.base.chart.chartdata.CallbackEvent; -import com.fr.design.constants.UIConstants; +import com.fr.dav.LocalEnv; +import com.fr.design.DesignModelAdapter; import com.fr.design.DesignerEnvManager; +import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import com.fr.base.FRContext; import com.fr.design.data.datapane.TableDataTreePane; -import com.fr.dav.LocalEnv; -import com.fr.design.DesignModelAdapter; import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.UIList; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.design.module.DesignModuleFactory; +import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.Constants; import com.fr.stable.project.ProjectConstants; -import com.fr.design.utils.gui.GUIPaintUtils; + +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class HistoryTemplateListPane extends JPanel implements FileOperations, CallbackEvent { //最大保存内存中面板数,为0时关闭优化内存 @@ -120,7 +117,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C try { historyList.remove(contains(selected)); selected.getEditingFILE().closeTemplate(); - FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"Template", "alraedy_close"}, new String[]{selected.getEditingFILE().getName(), "."})); + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "alraedy_close"}, new String[]{selected.getEditingFILE().getName(), "."})); MutilTempalteTabPane.getInstance().refreshOpenedTemplate(historyList); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); diff --git a/designer-base/src/com/fr/design/file/MutilTempalteTabPane.java b/designer-base/src/com/fr/design/file/MutilTempalteTabPane.java index 5a05f20d2..e2c026465 100644 --- a/designer-base/src/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer-base/src/com/fr/design/file/MutilTempalteTabPane.java @@ -8,14 +8,13 @@ import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIScrollPopUpMenu; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; -import com.fr.design.mainframe.JVirtualTemplate; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.file.FILE; import com.fr.file.FileNodeFILE; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.Constants; import com.fr.stable.ProductConstants; import com.fr.stable.project.ProjectConstants; @@ -23,10 +22,18 @@ import com.fr.stable.project.ProjectConstants; import javax.swing.*; import javax.swing.plaf.basic.BasicMenuItemUI; import java.awt.*; -import java.awt.event.*; -import java.awt.geom.*; +import java.awt.event.AWTEventListener; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.geom.Arc2D; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.awt.geom.Path2D; +import java.awt.geom.RoundRectangle2D; import java.io.File; -import java.util.logging.Level; /** * Author : daisy @@ -710,22 +717,11 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && specifiedTemplate.saveTemplate()) { specifiedTemplate.saveTemplate(); - FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); - } else if (returnVal == JOptionPane.NO_OPTION) { - //不保存 - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); } - //若是点击取消关闭,则什么都不做 - } else { - //若是已经保存过了,则关闭即可 - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); } - - + HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); + activeTemplate(filename); } /** diff --git a/designer-base/src/com/fr/design/file/SaveSomeTemplatePane.java b/designer-base/src/com/fr/design/file/SaveSomeTemplatePane.java index 568428c4e..522495e80 100644 --- a/designer-base/src/com/fr/design/file/SaveSomeTemplatePane.java +++ b/designer-base/src/com/fr/design/file/SaveSomeTemplatePane.java @@ -1 +1 @@ -package com.fr.design.file; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.UIList; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.ProductConstants; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.logging.Level; /** * Author : daisy * Date: 13-8-9 * Time: 下午3:41 */ public class SaveSomeTemplatePane extends BasicPane { private UICheckBox[] templateCheckBoxes = null; private BasicDialog dialog; private JPanel templatesChoosePane; private UIScrollPane scrollPane; private java.util.List> unSavedTemplate = new ArrayList>(); private boolean isAllSaved = false; //该变量用来判断是在关闭其他模板或是关闭设计器的时候,是否需要判断当前模板有没有保存 private boolean isJudgeCurrentEditingTemplate = true; public SaveSomeTemplatePane(boolean isNeedTojudgeCurrent) { this.setLayout(FRGUIPaneFactory.createBorderLayout()); if (this.dialog == null) { this.dialog = this.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { for (int i = 0; i < templateCheckBoxes.length; i++) { if (templateCheckBoxes[i].isSelected()) { saveSelectedTemplate(unSavedTemplate.get(i)); } } isAllSaved = true; } public void doCancel() { isAllSaved = false; } }); } UILabel tip = new UILabel(Inter.getLocText("Select_The_Source_To_Save")); this.add(tip, BorderLayout.NORTH); templatesChoosePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); UIScrollPane scrollPane = new UIScrollPane(templatesChoosePane); this.add(scrollPane, BorderLayout.CENTER); this.isJudgeCurrentEditingTemplate = isNeedTojudgeCurrent; } private void initTemplatesChoosePane() { templatesChoosePane.setBorder(BorderFactory.createTitledBorder("")); for (int i = 0; i < unSavedTemplate.size(); i++) { templateCheckBoxes[i] = new UICheckBox(unSavedTemplate.get(i).getEditingFILE().getName()); templateCheckBoxes[i].setSelected(true); } final UIList templatesList = new UIList(templateCheckBoxes); templatesList.setModel(new UnSeletedTemplateListDataMode()); templatesList.setCellRenderer(new UnSelectedListCellRender()); templatesList.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { super.mousePressed(e); int index = templatesList.getSelectedIndex(); if (index < 0) { return; } UICheckBox checkBox = (UICheckBox) templatesList.getModel().getElementAt(index); checkBox.setSelected(!checkBox.isSelected()); templatesList.repaint(); } }); final UICheckBox filenameCheckBox = new UICheckBox(Inter.getLocText("Choose_All")); filenameCheckBox.setSelected(true); filenameCheckBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { boolean isSelected = filenameCheckBox.isSelected(); for (int i = 0; i < templatesList.getModel().getSize(); i++) { UICheckBox checkBox = (UICheckBox) templatesList.getModel().getElementAt(i); checkBox.setSelected(isSelected); } templatesList.repaint(); } }); templatesChoosePane.add(filenameCheckBox, BorderLayout.NORTH); templatesChoosePane.add(templatesList, BorderLayout.CENTER); } public boolean showSavePane() { populate(); //如果有未保存的文件 ,则跳出保存对话框,选择要存储的项目 if (!unSavedTemplate.isEmpty()) { dialog.setVisible(true); } else { isAllSaved = true; } return isAllSaved; } public void populate() { java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); JTemplate currentTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); for (int i = 0; i < opendedTemplate.size(); i++) { if (isneedToAdd(opendedTemplate.get(i), currentTemplate)) { unSavedTemplate.add(opendedTemplate.get(i)); } } templateCheckBoxes = new UICheckBox[unSavedTemplate.size()]; initTemplatesChoosePane(); } private boolean isneedToAdd(JTemplate template, JTemplate currentTemplate) { //所有模板都判断是不是保存 if (isJudgeCurrentEditingTemplate) { return !template.isALLSaved(); } //当前编辑的模板不判断是否已经保存 if (ComparatorUtils.equals(template, currentTemplate)) { return false; } else { return !template.isALLSaved(); } } private void saveSelectedTemplate(JTemplate specifiedTemplate) { if (!specifiedTemplate.isSaved()) { specifiedTemplate.stopEditing(); specifiedTemplate.saveTemplate(); } FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); } public int saveLastOneTemplate() { JTemplate specifiedTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!specifiedTemplate.isALLSaved()) { specifiedTemplate.stopEditing(); int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + specifiedTemplate.getEditingFILE() + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && specifiedTemplate.saveTemplate()) { specifiedTemplate.saveTemplate(); FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); } return returnVal; } return JOptionPane.YES_OPTION; } protected String title4PopupWindow() { return Inter.getLocText("Save"); } private class UnSelectedListCellRender extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, final boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); templateCheckBoxes[index] = (UICheckBox) value; templateCheckBoxes[index].setBackground(list.getBackground()); return templateCheckBoxes[index]; } } private class UnSeletedTemplateListDataMode extends AbstractListModel { @Override public int getSize() { return templateCheckBoxes.length; } @Override public UICheckBox getElementAt(int index) { if (index > getSize() - 1 || index < 0) { return null; } return templateCheckBoxes[index]; } } } \ No newline at end of file +package com.fr.design.file; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.UIList; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; /** * Author : daisy * Date: 13-8-9 * Time: 下午3:41 */ public class SaveSomeTemplatePane extends BasicPane { private UICheckBox[] templateCheckBoxes = null; private BasicDialog dialog; private JPanel templatesChoosePane; private UIScrollPane scrollPane; private java.util.List> unSavedTemplate = new ArrayList>(); private boolean isAllSaved = false; //该变量用来判断是在关闭其他模板或是关闭设计器的时候,是否需要判断当前模板有没有保存 private boolean isJudgeCurrentEditingTemplate = true; public SaveSomeTemplatePane(boolean isNeedTojudgeCurrent) { this.setLayout(FRGUIPaneFactory.createBorderLayout()); if (this.dialog == null) { this.dialog = this.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { for (int i = 0; i < templateCheckBoxes.length; i++) { if (templateCheckBoxes[i].isSelected()) { saveSelectedTemplate(unSavedTemplate.get(i)); } } isAllSaved = true; } public void doCancel() { isAllSaved = false; } }); } UILabel tip = new UILabel(Inter.getLocText("Select_The_Source_To_Save")); this.add(tip, BorderLayout.NORTH); templatesChoosePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); UIScrollPane scrollPane = new UIScrollPane(templatesChoosePane); this.add(scrollPane, BorderLayout.CENTER); this.isJudgeCurrentEditingTemplate = isNeedTojudgeCurrent; } private void initTemplatesChoosePane() { templatesChoosePane.setBorder(BorderFactory.createTitledBorder("")); for (int i = 0; i < unSavedTemplate.size(); i++) { templateCheckBoxes[i] = new UICheckBox(unSavedTemplate.get(i).getEditingFILE().getName()); templateCheckBoxes[i].setSelected(true); } final UIList templatesList = new UIList(templateCheckBoxes); templatesList.setModel(new UnSeletedTemplateListDataMode()); templatesList.setCellRenderer(new UnSelectedListCellRender()); templatesList.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { super.mousePressed(e); int index = templatesList.getSelectedIndex(); if (index < 0) { return; } UICheckBox checkBox = (UICheckBox) templatesList.getModel().getElementAt(index); checkBox.setSelected(!checkBox.isSelected()); templatesList.repaint(); } }); final UICheckBox filenameCheckBox = new UICheckBox(Inter.getLocText("Choose_All")); filenameCheckBox.setSelected(true); filenameCheckBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { boolean isSelected = filenameCheckBox.isSelected(); for (int i = 0; i < templatesList.getModel().getSize(); i++) { UICheckBox checkBox = (UICheckBox) templatesList.getModel().getElementAt(i); checkBox.setSelected(isSelected); } templatesList.repaint(); } }); templatesChoosePane.add(filenameCheckBox, BorderLayout.NORTH); templatesChoosePane.add(templatesList, BorderLayout.CENTER); } public boolean showSavePane() { populate(); //如果有未保存的文件 ,则跳出保存对话框,选择要存储的项目 if (!unSavedTemplate.isEmpty()) { dialog.setVisible(true); } else { isAllSaved = true; } return isAllSaved; } public void populate() { java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); JTemplate currentTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); for (int i = 0; i < opendedTemplate.size(); i++) { if (isneedToAdd(opendedTemplate.get(i), currentTemplate)) { unSavedTemplate.add(opendedTemplate.get(i)); } } templateCheckBoxes = new UICheckBox[unSavedTemplate.size()]; initTemplatesChoosePane(); } private boolean isneedToAdd(JTemplate template, JTemplate currentTemplate) { //所有模板都判断是不是保存 if (isJudgeCurrentEditingTemplate) { return !template.isALLSaved(); } //当前编辑的模板不判断是否已经保存 if (ComparatorUtils.equals(template, currentTemplate)) { return false; } else { return !template.isALLSaved(); } } private void saveSelectedTemplate(JTemplate specifiedTemplate) { if (!specifiedTemplate.isSaved()) { specifiedTemplate.stopEditing(); specifiedTemplate.saveTemplate(); } FineLoggerFactory.getLogger().info( Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); } public int saveLastOneTemplate() { JTemplate specifiedTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!specifiedTemplate.isALLSaved()) { specifiedTemplate.stopEditing(); int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + specifiedTemplate.getEditingFILE() + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && specifiedTemplate.saveTemplate()) { specifiedTemplate.saveTemplate(); FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); } return returnVal; } return JOptionPane.YES_OPTION; } protected String title4PopupWindow() { return Inter.getLocText("Save"); } private class UnSelectedListCellRender extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, final boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); templateCheckBoxes[index] = (UICheckBox) value; templateCheckBoxes[index].setBackground(list.getBackground()); return templateCheckBoxes[index]; } } private class UnSeletedTemplateListDataMode extends AbstractListModel { @Override public int getSize() { return templateCheckBoxes.length; } @Override public UICheckBox getElementAt(int index) { if (index > getSize() - 1 || index < 0) { return null; } return templateCheckBoxes[index]; } } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/file/TemplateTreePane.java b/designer-base/src/com/fr/design/file/TemplateTreePane.java index 9061521a4..f2fb514f7 100644 --- a/designer-base/src/com/fr/design/file/TemplateTreePane.java +++ b/designer-base/src/com/fr/design/file/TemplateTreePane.java @@ -15,8 +15,8 @@ import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.file.filetree.IOFileNodeFilter; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.CoreConstants; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; @@ -34,7 +34,6 @@ import java.awt.event.MouseListener; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.logging.Level; public class TemplateTreePane extends JPanel implements FileOperations { @@ -143,7 +142,7 @@ public class TemplateTreePane extends JPanel implements FileOperations { public void openContainerFolder() { FileNode fn = TemplateTreePane.this.reportletsTree.getSelectedFileNode(); LocalEnv localEnv = (LocalEnv) FRContext.getCurrentEnv(); - String filePath = StableUtils.pathJoin(localEnv.path, fn.getEnvPath()); + String filePath = StableUtils.pathJoin(localEnv.getPath(), fn.getEnvPath()); filePath = filePath.substring(0, filePath.lastIndexOf(CoreConstants.SEPARATOR)); try { Desktop.getDesktop().open(new File(filePath)); @@ -157,7 +156,7 @@ public class TemplateTreePane extends JPanel implements FileOperations { */ public void refresh() { reportletsTree.refresh(); - FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"File-tree", "Refresh_Successfully"}) + "!"); + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"File-tree", "Refresh_Successfully"}) + "!"); } /** @@ -193,6 +192,16 @@ public class TemplateTreePane extends JPanel implements FileOperations { reportletsTree.refresh(); } + @Override + public void lockFile() { + throw new UnsupportedOperationException("unsupport now"); + } + + @Override + public void unLockFile() { + throw new UnsupportedOperationException("unsupport now"); + } + private void deleteHistory(String fileName) { int index = HistoryTemplateListPane.getInstance().contains(fileName); int size = HistoryTemplateListPane.getInstance().getHistoryCount(); @@ -218,41 +227,6 @@ public class TemplateTreePane extends JPanel implements FileOperations { MutilTempalteTabPane.getInstance().repaint(); } - /** - * 加上文件锁 - */ - public void lockFile() { - FileNode fn = reportletsTree.getSelectedFileNode(); - RemoteEnv remoteEnv = (RemoteEnv) FRContext.getCurrentEnv(); - if (fn == null) { - return; - } - try { - remoteEnv.getLock(new String[]{fn.getEnvPath()}); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage()); - } - reportletsTree.refresh(); - } - - /** - * 文件解锁 - */ - public void unLockFile() { - FileNode fn = reportletsTree.getSelectedFileNode(); - if (fn == null) { - return; - } - RemoteEnv remoteEnv = (RemoteEnv) FRContext.getCurrentEnv(); - try { - remoteEnv.releaseLock(new String[]{fn.getEnvPath()}); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage()); - } - reportletsTree.refresh(); - } public String getSelectedTemplatePath() { return reportletsTree.getSelectedTemplatePath(); @@ -322,11 +296,11 @@ public class TemplateTreePane extends JPanel implements FileOperations { //todo 走下这个流程,否则集群下其它节点无法同步删除 FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); } catch (IOException e) { - FRLogger.getLogger().info(e.getMessage()); + FineLoggerFactory.getLogger().info(e.getMessage()); FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); } } else { - FRLogger.getLogger().info("No Trash Available"); + FineLoggerFactory.getLogger().info("No Trash Available"); FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); } } diff --git a/designer-base/src/com/fr/design/formula/JavaEditorPane.java b/designer-base/src/com/fr/design/formula/JavaEditorPane.java index 0ba32641c..a5245d685 100644 --- a/designer-base/src/com/fr/design/formula/JavaEditorPane.java +++ b/designer-base/src/com/fr/design/formula/JavaEditorPane.java @@ -9,7 +9,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.EncodeConstants; import com.fr.stable.JavaCompileInfo; @@ -65,7 +65,7 @@ public class JavaEditorPane extends BasicPane { javaText.setText("//Didn't find java source match the class"); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); javaText.setText("//Loading source code from server error"); } } @@ -162,7 +162,7 @@ public class JavaEditorPane extends BasicPane { JOptionPane.showMessageDialog(null, Inter.getLocText(new String[]{"Save", "Successfully"}) + "!"); fireSaveActionListener(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); JOptionPane.showMessageDialog(null, Inter.getLocText(new String[]{"Save", "Failed"}) + "!"); } @@ -191,9 +191,9 @@ public class JavaEditorPane extends BasicPane { } JOptionPane.showMessageDialog(null, message); } catch (InterruptedException e1) { - FRLogger.getLogger().error(e1.getMessage(), e1); + FineLoggerFactory.getLogger().error(e1.getMessage(), e1); } catch (ExecutionException e1) { - FRLogger.getLogger().error(e1.getMessage(), e1); + FineLoggerFactory.getLogger().error(e1.getMessage(), e1); } } }.execute(); diff --git a/designer-base/src/com/fr/design/gui/UILookAndFeel.java b/designer-base/src/com/fr/design/gui/UILookAndFeel.java index ed93237f3..f02715716 100644 --- a/designer-base/src/com/fr/design/gui/UILookAndFeel.java +++ b/designer-base/src/com/fr/design/gui/UILookAndFeel.java @@ -29,7 +29,7 @@ import com.fr.design.gui.itoolbar.UIToolBarBorder; import com.fr.design.gui.itoolbar.UIToolBarSeparatorUI; import com.fr.design.gui.itooltip.UIToolTipBorder; import com.fr.design.gui.itree.UITreeUI; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.IOUtils; import javax.swing.ImageIcon; @@ -195,7 +195,7 @@ public class UILookAndFeel extends MetalLookAndFeel { "com/fr/design/images/lookandfeel/" + fileName, UILookAndFeel.class); if (url == null) { - FRLogger.getLogger().error("Icon directory could not be resolved."); + FineLoggerFactory.getLogger().error("Icon directory could not be resolved."); return null; } } diff --git a/designer-base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java b/designer-base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java index 8a02bb057..6cdc26bfb 100644 --- a/designer-base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java +++ b/designer-base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java @@ -10,7 +10,7 @@ package com.fr.design.gui.autocomplete; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.PopupWindowDecorator; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import javax.swing.event.CaretEvent; @@ -303,7 +303,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, private void installKeyBindings() { if (AutoCompletion.isDebug()) { - FRLogger.getLogger().debug("PopupWindow: Installing keybindings"); + FineLoggerFactory.getLogger().debug("PopupWindow: Installing keybindings"); } if (escapeKap == null) { // Lazily create actions. @@ -711,7 +711,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, private void uninstallKeyBindings() { if (AutoCompletion.isDebug()) { - FRLogger.getLogger().debug("PopupWindow: Removing keybindings"); + FineLoggerFactory.getLogger().debug("PopupWindow: Removing keybindings"); } JTextComponent comp = ac.getTextComponent(); diff --git a/designer-base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java b/designer-base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java index 8b93f8540..a9dd305b0 100644 --- a/designer-base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java +++ b/designer-base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java @@ -14,7 +14,7 @@ import com.fr.design.gui.autocomplete.ParameterizedCompletionInsertionInfo.Repla import com.fr.design.gui.syntax.ui.rsyntaxtextarea.DocumentRange; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rtextarea.ChangeableHighlightPainter; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import javax.swing.event.CaretEvent; @@ -440,7 +440,7 @@ class ParameterizedCompletionContext { */ private void installKeyBindings() { if (AutoCompletion.isDebug()) { - FRLogger.getLogger().debug("CompletionContext: Installing keybindings"); + FineLoggerFactory.getLogger().debug("CompletionContext: Installing keybindings"); } JTextComponent tc = ac.getTextComponent(); InputMap im = tc.getInputMap(); @@ -739,7 +739,7 @@ class ParameterizedCompletionContext { private void uninstallKeyBindings() { if (AutoCompletion.isDebug()) { - FRLogger.getLogger().debug("CompletionContext Uninstalling keybindings"); + FineLoggerFactory.getLogger().debug("CompletionContext Uninstalling keybindings"); } JTextComponent tc = ac.getTextComponent(); diff --git a/designer-base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer-base/src/com/fr/design/gui/controlpane/UIControlPane.java index bc37a2549..d0a4c12c5 100644 --- a/designer-base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer-base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -17,10 +17,34 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSplitPane; import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GraphicsEnvironment; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; /** * Created by plough on 2017/7/21. @@ -47,7 +71,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } public UIControlPane(BasePlot plot) { - this.plot =plot; + this.plot = plot; this.initComponentPane(); } @@ -145,8 +169,8 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH this.checkButtonEnabled(); } - protected void getPopupEditDialog (JPanel cardPane) { - popupEditDialog = new PopupEditDialog(cardPane); + protected void getPopupEditDialog(JPanel cardPane) { + popupEditDialog = new PopupEditDialog(cardPane); } protected abstract JPanel createControlUpdatePane(); @@ -169,7 +193,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH toolbarDef.addShortCut(sj.getShortCut()); } toolBar = ToolBarDef.createJToolBar(); - toolBar.setUI(new UIToolBarUI(){ + toolBar.setUI(new UIToolBarUI() { @Override public void paint(Graphics g, JComponent c) { Graphics2D g2 = (Graphics2D) g; @@ -186,7 +210,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH leftContentPane.add(toolBarPane, BorderLayout.NORTH); // 顶部标签及add按钮 - topToolBar = new UIToolbar(FlowLayout.LEFT, new UIToolBarUI(){ + topToolBar = new UIToolbar(FlowLayout.LEFT, new UIToolBarUI() { @Override public void paint(Graphics g, JComponent c) { Graphics2D g2 = (Graphics2D) g; @@ -207,15 +231,15 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH return leftPane; } - protected JPanel getLeftTopPane (UIToolbar topToolBar) { + protected JPanel getLeftTopPane(UIToolbar topToolBar) { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = { p, f, isNewStyle() ? TOP_TOOLBAR_WIDTH : TOP_TOOLBAR_WIDTH_SHORT}; + double[] columnSize = {p, f, isNewStyle() ? TOP_TOOLBAR_WIDTH : TOP_TOOLBAR_WIDTH_SHORT}; double[] rowSize = {TOP_TOOLBAR_HEIGHT}; Component[][] components = new Component[][]{ new Component[]{new UILabel(getAddItemText()), new JPanel(), topToolBar}, }; - return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); } /** @@ -336,6 +360,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH initListener(); } + @Override public void setTitle(String title) { popupToolPane.setTitle(title); } @@ -349,10 +374,21 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } // 如果有可见模态对话框,则不隐藏 for (Window window : DesignerContext.getDesignerFrame().getOwnedWindows()) { - if (window instanceof JDialog && window.isVisible() && ((JDialog)window).isModal()) { + if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { return; } } + + // 要隐藏 先检查有没有非法输入 + // 非法输入检查放在最后,因为可能出现面板弹出新弹框而失去焦点的情况,比如 输入公式时,弹出公式编辑对话框 + try { + checkValid(); + } catch (Exception exp) { + // 存在非法输入 拒绝隐藏 + JOptionPane.showMessageDialog(UIControlPane.this.controlUpdatePane, exp.getMessage()); + this.requestFocus(); + return; + } saveSettings(); setVisible(false); } @@ -361,7 +397,6 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH addWindowFocusListener(new WindowAdapter() { @Override public void windowLostFocus(WindowEvent e) { - super.windowLostFocus(e); hideDialog(); } }); @@ -389,6 +424,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } repaint(); } + @Override public void mouseReleased(MouseEvent e) { mouseDownCompCoords = null; @@ -396,6 +432,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH contentPane.setBackground(originColor); } } + @Override public void mousePressed(MouseEvent e) { mouseDownCompCoords = e.getPoint(); @@ -409,6 +446,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH contentPane.setBackground(UIConstants.POPUP_TITLE_BACKGROUND); repaint(); } + @Override public void mouseDragged(MouseEvent e) { if (mouseDownCompCoords != null) { diff --git a/designer-base/src/com/fr/design/gui/demo/ComboBoxDemo.java b/designer-base/src/com/fr/design/gui/demo/ComboBoxDemo.java index a47ea5b0c..a29d78dd0 100644 --- a/designer-base/src/com/fr/design/gui/demo/ComboBoxDemo.java +++ b/designer-base/src/com/fr/design/gui/demo/ComboBoxDemo.java @@ -1,34 +1,37 @@ package com.fr.design.gui.demo; -import java.awt.BorderLayout; -import java.awt.Component; -import java.util.ArrayList; - -import javax.swing.DefaultListCellRenderer; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JTree; -import javax.swing.ListCellRenderer; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.tree.TreeCellRenderer; -import javax.swing.tree.TreePath; - import com.fr.base.FRContext; -import com.fr.design.gui.icombobox.filter.Filter; +import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.icombobox.ComboCheckBox; import com.fr.design.gui.icombobox.DictionaryComboBox; import com.fr.design.gui.icombobox.ExtendedComboBox; import com.fr.design.gui.icombobox.FRTreeComboBox; import com.fr.design.gui.icombobox.FilterComboBox; import com.fr.design.gui.icombobox.LazyComboBox; +import com.fr.design.gui.icombobox.filter.Filter; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.parameter.ParameterInputPane; import com.fr.general.Inter; +import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.ListCellRenderer; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; +import java.awt.BorderLayout; +import java.awt.Component; +import java.util.ArrayList; + /** * Created by IntelliJ IDEA. * User: Richer @@ -42,12 +45,12 @@ public class ComboBoxDemo extends JPanel { double f = TableLayout.FILL; Component[][] coms = new Component[][]{ - {new UILabel(Inter.getLocText("Form-ComboCheckBox")+":"), createComboCheckBox()}, - {new UILabel(Inter.getLocText(new String[]{"DS-Dictionary", "Form-ComboBox"})+":"), createDictComboBox()}, - {new UILabel(Inter.getLocText("long_data_can_not_show_fully")+":"), createExtendedComboBox()}, - {new UILabel(Inter.getLocText(new String[]{"Filter", "Form-ComboBox"})+":"), createFilterComboBox()}, - {new UILabel(Inter.getLocText("Form-ComboBox")+":"), createTreeComboBox()}, - {new UILabel(Inter.getLocText(new String[]{"Delay", "Load", "Form-ComboBox"})+":"), createLazyComboBox()} + {new UILabel(Inter.getLocText("Form-ComboCheckBox") + ":"), createComboCheckBox()}, + {new UILabel(Inter.getLocText(new String[]{"DS-Dictionary", "Form-ComboBox"}) + ":"), createDictComboBox()}, + {new UILabel(Inter.getLocText("long_data_can_not_show_fully") + ":"), createExtendedComboBox()}, + {new UILabel(Inter.getLocText(new String[]{"Filter", "Form-ComboBox"}) + ":"), createFilterComboBox()}, + {new UILabel(Inter.getLocText("Form-ComboBox") + ":"), createTreeComboBox()}, + {new UILabel(Inter.getLocText(new String[]{"Delay", "Load", "Form-ComboBox"}) + ":"), createLazyComboBox()} }; double[] rowSize = new double[coms.length]; double[] columnSize = {p, f}; @@ -165,6 +168,7 @@ public class ComboBoxDemo extends JPanel { // 睡5秒 try { Thread.sleep(5000); + } catch (InterruptedException e) { FRContext.getLogger().error(e.getMessage(), e); } diff --git a/designer-base/src/com/fr/design/gui/demo/SwingComponentsDemo.java b/designer-base/src/com/fr/design/gui/demo/SwingComponentsDemo.java index 6a08e38b0..a3771ce23 100644 --- a/designer-base/src/com/fr/design/gui/demo/SwingComponentsDemo.java +++ b/designer-base/src/com/fr/design/gui/demo/SwingComponentsDemo.java @@ -1,16 +1,15 @@ package com.fr.design.gui.demo; -import java.awt.BorderLayout; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.utils.DesignUtils; +import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; - -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.utils.DesignUtils; -import com.fr.design.utils.gui.GUICoreUtils; +import java.awt.BorderLayout; /** * Created by IntelliJ IDEA. @@ -19,10 +18,10 @@ import com.fr.design.utils.gui.GUICoreUtils; * Time: 下午4:54 */ public class SwingComponentsDemo extends JFrame { - public SwingComponentsDemo() { - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + private SwingComponentsDemo() { + this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); init(); - JPanel contentPane = (JPanel)getContentPane(); + JPanel contentPane = (JPanel) getContentPane(); contentPane.setLayout(FRGUIPaneFactory.createBorderLayout()); JTabbedPane tab = new JTabbedPane(); contentPane.add(tab, BorderLayout.CENTER); @@ -40,12 +39,12 @@ public class SwingComponentsDemo extends JFrame { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { JFrame f = new SwingComponentsDemo(); f.setSize(500, 500); f.setVisible(true); GUICoreUtils.centerWindow(f); - f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } }); } diff --git a/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java b/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java index 5e7ce6627..17a33419e 100644 --- a/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java +++ b/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java @@ -44,15 +44,12 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { @Override public void on(PluginEvent event) { - - refreshNameableCreator(createNameableCreators()); - + refreshNameableCreator(createNameableCreators()); } }, new PluginFilter() { @Override public boolean accept(PluginContext context) { - return context.contain(HyperlinkProvider.XML_TAG); } }); @@ -63,6 +60,7 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { * * @return 返回Nameable按钮数组. */ + @Override public NameableCreator[] createNameableCreators() { Map nameCreators = new ListMap<>(); NameableCreator[] creators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); @@ -82,6 +80,7 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { * * @return 返回标题字符串. */ + @Override public String title4PopupWindow() { return Inter.getLocText("FR-Designer_Hyperlink"); } @@ -91,11 +90,11 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { return Inter.getLocText("FR-Designer_Add_Hyperlink"); } - public void populate(NameJavaScriptGroup nameHyperlink_array) { - java.util.List list = new ArrayList(); - if (nameHyperlink_array != null) { - for (int i = 0; i < nameHyperlink_array.size(); i++) { - list.add(new NameObject(nameHyperlink_array.getNameHyperlink(i).getName(), nameHyperlink_array.getNameHyperlink(i).getJavaScript())); + public void populate(NameJavaScriptGroup hyperlinkArray) { + java.util.List list = new ArrayList<>(); + if (hyperlinkArray != null) { + for (int i = 0; i < hyperlinkArray.size(); i++) { + list.add(new NameObject(hyperlinkArray.getNameHyperlink(i).getName(), hyperlinkArray.getNameHyperlink(i).getJavaScript())); } } @@ -113,20 +112,29 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { */ public NameJavaScriptGroup updateJSGroup() { Nameable[] res = this.update(); - NameJavaScript[] res_array = new NameJavaScript[res.length]; + NameJavaScript[] resArray = new NameJavaScript[res.length]; for (int i = 0; i < res.length; i++) { NameObject no = (NameObject) res[i]; - res_array[i] = new NameJavaScript(no.getName(), (JavaScript) no.getObject()); + resArray[i] = new NameJavaScript(no.getName(), (JavaScript) no.getObject()); } - return new NameJavaScriptGroup(res_array); + return new NameJavaScriptGroup(resArray); } @Override public void saveSettings() { - if (isPopulating) { + if (isPopulating || !needAutoSave()) { return; } hyperlinkGroupPaneActionProvider.saveSettings(this); } + + /** + * 是否需要自动保存到超级链接属性中 + * + * @return 是否需要自动保存 + */ + public boolean needAutoSave() { + return true; + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java b/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java index a5f7ae9a6..525bb5b79 100644 --- a/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java +++ b/designer-base/src/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java @@ -3,9 +3,23 @@ package com.fr.design.gui.frpane; import com.fr.design.designer.TargetComponent; /** + * @author plough * Created by plough on 2017/7/26. */ public interface HyperlinkGroupPaneActionProvider { + + /** + * 刷新面板展示 + * + * @param hyperlinkGroupPane 超链面板 + * @param elementCasePane 模板 + */ void populate(HyperlinkGroupPane hyperlinkGroupPane, TargetComponent elementCasePane); + + /** + * 保存到文件 + * + * @param hyperlinkGroupPane 超联面板 + */ void saveSettings(HyperlinkGroupPane hyperlinkGroupPane); } diff --git a/designer-base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java b/designer-base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java index 38d33984c..d95740798 100644 --- a/designer-base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java +++ b/designer-base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java @@ -2,7 +2,7 @@ package com.fr.design.gui.frpane; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralUtils; import javax.swing.*; @@ -129,7 +129,7 @@ public class UITabbedPaneUI extends BasicTabbedPaneUI { tabPane.addTab(tabName, (Component) GeneralUtils.classForName(classpath).newInstance()); } catch (Exception ex) { - FRLogger.getLogger().error(ex.getMessage(), ex); + FineLoggerFactory.getLogger().error(ex.getMessage(), ex); } } } diff --git a/designer-base/src/com/fr/design/gui/icombobox/LazyComboBox.java b/designer-base/src/com/fr/design/gui/icombobox/LazyComboBox.java index fa4464cfc..575ab630b 100644 --- a/designer-base/src/com/fr/design/gui/icombobox/LazyComboBox.java +++ b/designer-base/src/com/fr/design/gui/icombobox/LazyComboBox.java @@ -3,212 +3,190 @@ */ package com.fr.design.gui.icombobox; -import java.awt.Dimension; -import java.util.ArrayList; -import java.util.List; +import com.fr.log.FineLoggerFactory; +import com.fr.general.Inter; -import javax.swing.*; +import javax.swing.DefaultComboBoxModel; +import javax.swing.SwingWorker; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; -import javax.swing.plaf.basic.BasicComboPopup; - -import com.fr.general.Inter; +import java.awt.Dimension; +import java.util.concurrent.ExecutionException; /** * @author richer + * @version 2018年2月6日14点43分 by @yaoh.wu * @since 6.5.5 创建于2011-6-15 延迟加载的下拉框 */ public abstract class LazyComboBox extends UIComboBox implements PopupMenuListener { - protected boolean loaded = false; - private List ls = new ArrayList(); - private Object initialSelected = null; - private static final int NUM=80; - - public static final Object PENDING = new Object() { - - @Override - public String toString() { - return Inter.getLocText("Loading") + "..."; - } - }; - - public LazyComboBox() { - super(); - this.setEditor(new FilterComboBoxEditor()); - addPopupMenuListener(this); -// updateUI(); - } - - public void setLoaded(boolean loaded) { - this.loaded = loaded; - } - - public abstract Object[] load(); - - public void setSelectedItem(Object anObject) { - initialSelected = anObject; - if (loaded) { - super.setSelectedItem(anObject); - } else { - - setModel(new DefaultComboBoxModel(new Object[] { anObject })); - super.setSelectedItem(anObject); - } - } - - /** - * 通过调用该方法,在点击下拉框按钮之前就加载好数据 - */ - public void loadInstant() { - if (loaded) { - return; - } - setModel(new DefaultComboBoxModel(load())); - loaded = true; - } - - @Override - public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + + private static final int NUM = 80; + private static final String[] PENDING_CONTENT = new String[]{"", Inter.getLocText("Loading") + "..."}; + + /** + * 是否加载完成 + */ + protected boolean loaded = false; + + /** + * 初始化选项 + */ + private Object initialSelected = null; + + + protected LazyComboBox() { + super(); + this.setEditor(new FilterComboBoxEditor()); + addPopupMenuListener(this); + } + + public void setLoaded(boolean loaded) { + this.loaded = loaded; + } + + /** + * 加载下拉框中的选项 + * + * @return 下拉框中的选项 + */ + public abstract Object[] load(); + + @Override + public void setSelectedItem(Object anObject) { + initialSelected = anObject; + if (loaded) { + super.setSelectedItem(anObject); + } else { + this.setModel(new DefaultComboBoxModel<>(new Object[]{anObject})); + super.setSelectedItem(anObject); + } + } + + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { if (loaded) { return; } - DefaultComboBoxModel loadingModel = new DefaultComboBoxModel(new String[]{"", Inter.getLocText("Loading") + "..."}); - LazyComboBox.this.setModel(loadingModel); - new SwingWorker() { + DefaultComboBoxModel loadingModel = new DefaultComboBoxModel<>(PENDING_CONTENT); + this.setModel(loadingModel); + new SwingWorker() { @Override - protected Void doInBackground() throws Exception { - final Object selectedObj = getSelectedItem(); - loadList(); - return null; + protected Object[] doInBackground() { + return load(); } @Override public void done() { - LazyComboBox.this.updateUI(); - LazyComboBox.this.fireEvent(); + try { + LazyComboBox.this.loadList(get()); + } catch (InterruptedException | ExecutionException exception) { + FineLoggerFactory.getLogger().debug(exception.getMessage()); + } LazyComboBox.this.showPopup(); } - }.execute(); + } + /** + * 加载下拉列表 + */ + public void loadList() { + DefaultComboBoxModel model = new DefaultComboBoxModel<>(load()); + model.setSelectedItem(initialSelected); + this.setModel(model); + this.selectedItemReminder = initialSelected; + loaded = true; } - /** - * 计算加载下拉列表 - */ - public void loadList() { - DefaultComboBoxModel model = new DefaultComboBoxModel(load()); + /** + * 加载下拉列表 + * + * @param contents 下拉列表内容 + */ + private void loadList(Object[] contents) { + DefaultComboBoxModel model = new DefaultComboBoxModel<>(contents); model.setSelectedItem(initialSelected); - LazyComboBox.this.setModel(model); - LazyComboBox.this.selectedItemReminder = initialSelected ; - loaded = true; - } - - @Override - public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { - - } - - @Override - public void popupMenuCanceled(PopupMenuEvent e) { - - } - - public void addClickListener(EventListener l) { - if (ls == null) { - ls = new ArrayList(); - } - ls.add(l); - } - - public void fireEvent() { - for (int i = 0, n = ls.size(); i < n; i++) { - ls.get(i).fireEvent(); - } - } - - @Override - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = NUM; - return dim; - } - - private static class LazyPopMenu extends BasicComboPopup { - - public LazyPopMenu(final JComboBox combo) { - super(combo); - LazyComboBox comboc = (LazyComboBox) combo; - comboc.addClickListener(new EventListener() { - - @Override - public void fireEvent() { - LazyPopMenu.this.show(); - combo.showPopup(); - } - }); - } - } - - private interface EventListener { - void fireEvent(); - } - - class FilterComboBoxEditor extends UIComboBoxEditor implements DocumentListener { - private Object item; - private volatile boolean filtering = false; - private volatile boolean setting = false; - - public FilterComboBoxEditor() { - super(); - textField.getDocument().addDocumentListener(this); - } - - public void setItem(Object item) { - if (filtering) { - return; - } - this.item = item; - - this.setting = true; - textField.setSetting(true); - String newText = (item == null) ? "" : item.toString(); - textField.setText(newText); - textField.setSetting(false); - this.setting = false; - } - - public Object getItem() { - return this.item; - } - - public void insertUpdate(DocumentEvent e) { - handleChange(); - } - - public void removeUpdate(DocumentEvent e) { - handleChange(); - } - - public void changedUpdate(DocumentEvent e) { - handleChange(); - } - - protected void handleChange() { - if (setting) { - return; - } - filtering = true; - String xx = textField.getText(); - LazyComboBox.this.setSelectedItem(xx); - this.item = textField.getText(); - - setPopupVisible(true); - filtering = false; - } - } + this.setModel(model); + this.selectedItemReminder = initialSelected; + loaded = true; + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + + } + + @Override + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = NUM; + return dim; + } + + class FilterComboBoxEditor extends UIComboBoxEditor implements DocumentListener { + private Object item; + private volatile boolean filtering = false; + private volatile boolean setting = false; + + public FilterComboBoxEditor() { + super(); + textField.getDocument().addDocumentListener(this); + } + + @Override + public void setItem(Object item) { + if (filtering) { + return; + } + this.item = item; + this.setting = true; + textField.setSetting(true); + String newText = (item == null) ? "" : item.toString(); + textField.setText(newText); + textField.setSetting(false); + this.setting = false; + } + + @Override + public Object getItem() { + return this.item; + } + + @Override + public void insertUpdate(DocumentEvent e) { + handleChange(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + handleChange(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + handleChange(); + } + + void handleChange() { + if (setting) { + return; + } + filtering = true; + String xx = textField.getText(); + LazyComboBox.this.setSelectedItem(xx); + this.item = textField.getText(); + + setPopupVisible(true); + filtering = false; + } + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/gui/icombobox/UIComboBox.java b/designer-base/src/com/fr/design/gui/icombobox/UIComboBox.java index f9ce6b78f..14a90da7b 100644 --- a/designer-base/src/com/fr/design/gui/icombobox/UIComboBox.java +++ b/designer-base/src/com/fr/design/gui/icombobox/UIComboBox.java @@ -4,12 +4,13 @@ import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.design.utils.gui.GUICoreUtils; -import javax.swing.*; +import javax.swing.ComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.ListCellRenderer; import javax.swing.plaf.ComboBoxUI; import javax.swing.plaf.basic.ComboPopup; -import java.awt.*; +import java.awt.Dimension; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; @@ -112,8 +113,6 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser public void setRenderer(ListCellRenderer aRenderer) { if (aRenderer instanceof UIComboBoxRenderer) { super.setRenderer(aRenderer); - } else { - //throw new IllegalArgumentException("Must be UIComboBoxRenderer"); } } @@ -121,13 +120,15 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser return null; } + @Override public void setGlobalName(String name) { comboBoxName = name; } @Override public Dimension getPreferredSize() { - return new Dimension(super.getPreferredSize().width + SIZE5, SIZE);//加5的原因在于:render里,每一个项前面了空了一格,要多几像素 + //加5的原因在于:render里,每一个项前面了空了一格,要多几像素 + return new Dimension(super.getPreferredSize().width + SIZE5, SIZE); } /** @@ -144,70 +145,53 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser } - /** - * - */ + /** + * + */ + @Override public void updateUI() { setUI(getUIComboBoxUI()); } - /** - * - * @param listener 观察者监听事件 - */ + /** + * @param listener 观察者监听事件 + */ + @Override public void registerChangeListener(UIObserverListener listener) { uiObserverListener = listener; } - public void removeChangeListener(){ + public void removeChangeListener() { uiObserverListener = null; } - public UIObserverListener getUiObserverListener(){ + public UIObserverListener getUiObserverListener() { return uiObserverListener; } /** - * @return + * @return 是否响应变更事件 */ + @Override public boolean shouldResponseChangeListener() { return true; } - /** - * - * @param listener 观察者监听事件 - */ + /** + * @param listener 观察者监听事件 + */ + @Override public void registerNameListener(GlobalNameListener listener) { globalNameListener = listener; } - /** - * - * @return - */ - public boolean shouldResponseNameListener() { - return true; - } - - /** - * @param args + * @return 是否响应名称事件 */ - public static void main(String... args) { - LayoutManager layoutManager = null; - JFrame jf = new JFrame("test"); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JPanel content = (JPanel) jf.getContentPane(); - content.setLayout(layoutManager); - UIComboBox bb = new UIComboBox(new String[]{"", "jerry", "kunsnat", "richer"}); - bb.setEditable(true); - bb.setBounds(20, 20, bb.getPreferredSize().width, bb.getPreferredSize().height); - content.add(bb); - GUICoreUtils.centerWindow(jf); - jf.setSize(400, 400); - jf.setVisible(true); + @Override + public boolean shouldResponseNameListener() { + return true; } diff --git a/designer-base/src/com/fr/design/gui/imenu/UIBasicMenuUI.java b/designer-base/src/com/fr/design/gui/imenu/UIBasicMenuUI.java index 9279ba868..9d8c23259 100644 --- a/designer-base/src/com/fr/design/gui/imenu/UIBasicMenuUI.java +++ b/designer-base/src/com/fr/design/gui/imenu/UIBasicMenuUI.java @@ -6,7 +6,7 @@ package com.fr.design.gui.imenu; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import javax.swing.event.*; @@ -504,7 +504,7 @@ public class UIBasicMenuUI extends UIBasicMenuItemUI { } if (DEBUG) { - FRLogger.getLogger().info("in TinyMenuUI.menuKeyTyped for " + menuItem.getText()); + FineLoggerFactory.getLogger().info("in TinyMenuUI.menuKeyTyped for " + menuItem.getText()); } if (!crossMenuMnemonic) { @@ -544,7 +544,7 @@ public class UIBasicMenuUI extends UIBasicMenuItemUI { return; } if (DEBUG) { - FRLogger.getLogger().info("in TinyMenuUI.menuKeyPressed for " + menuItem.getText()); + FineLoggerFactory.getLogger().info("in TinyMenuUI.menuKeyPressed for " + menuItem.getText()); } char keyChar = e.getKeyChar(); if (!Character.isLetterOrDigit(keyChar)){ diff --git a/designer-base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java b/designer-base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java index bc593c00a..544d1e4e5 100644 --- a/designer-base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java +++ b/designer-base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java @@ -1,7 +1,7 @@ package com.fr.design.gui.imenutable; import com.fr.design.beans.BasicBeanPane; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.stable.Nameable; public class UIMenuNameableCreator implements Nameable{ @@ -46,9 +46,9 @@ public class UIMenuNameableCreator implements Nameable{ try { cloneObj = obj.getClass().newInstance(); } catch (InstantiationException e) { - FRLogger.getLogger().error("UIMenuNameableCreator InstantiationException"); + FineLoggerFactory.getLogger().error("UIMenuNameableCreator InstantiationException"); } catch (IllegalAccessException e) { - FRLogger.getLogger().error("UIMenuNameableCreator IllegalAccessException"); + FineLoggerFactory.getLogger().error("UIMenuNameableCreator IllegalAccessException"); } return new UIMenuNameableCreator(name, cloneObj, this.paneClazz); diff --git a/designer-base/src/com/fr/design/gui/style/NumberDragBar.java b/designer-base/src/com/fr/design/gui/style/NumberDragBar.java index cd9e7f8cb..5ab5c1698 100644 --- a/designer-base/src/com/fr/design/gui/style/NumberDragBar.java +++ b/designer-base/src/com/fr/design/gui/style/NumberDragBar.java @@ -1,7 +1,7 @@ package com.fr.design.gui.style; import com.fr.design.constants.UIConstants; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -126,7 +126,7 @@ public class NumberDragBar extends JComponent { repaint(); revalidate(); } catch (InterruptedException e) { - FRLogger.getLogger().error(e.toString()); + FineLoggerFactory.getLogger().error(e.toString()); } } }); diff --git a/designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java b/designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java index 10fb64ded..fef32a875 100644 --- a/designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java +++ b/designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java @@ -1,7 +1,7 @@ package com.fr.design.javascript.beautify; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.IOUtils; import com.fr.script.ScriptFactory; @@ -42,7 +42,7 @@ public class JavaScriptFormatHelper { Invocable invocable = (Invocable) scriptEngine; result = (String) invocable.invokeFunction("js_beautify", jsCode, option.toFormatArgument()); } catch (ScriptException | NoSuchMethodException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return result; } diff --git a/designer-base/src/com/fr/design/mainframe/DesignerContext.java b/designer-base/src/com/fr/design/mainframe/DesignerContext.java index 3b76aab40..9362f37c5 100644 --- a/designer-base/src/com/fr/design/mainframe/DesignerContext.java +++ b/designer-base/src/com/fr/design/mainframe/DesignerContext.java @@ -6,7 +6,7 @@ package com.fr.design.mainframe; import com.fr.base.Style; import com.fr.design.designer.TargetComponent; import com.fr.design.dialog.BasicDialog; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StableUtils; import javax.swing.*; @@ -73,14 +73,14 @@ public class DesignerContext { return (Clipboard) clipMethod.invoke(transferAction, new Object[]{comp}); } catch (Exception securityException) { - FRLogger.getLogger().error(securityException.getMessage(), securityException); + FineLoggerFactory.getLogger().error(securityException.getMessage(), securityException); //用反射机制,获得TransferHandler的getClipboard //这样可以保证和TextField直接的copy paste try { //控件的Clipboard. DesignerContext.clipboard = comp.getToolkit().getSystemClipboard(); } catch (Exception exp) { - FRLogger.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); DesignerContext.clipboard = new Clipboard("FR"); } } diff --git a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java index 41d755905..98f7de5f9 100644 --- a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java @@ -6,16 +6,23 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.Env; import com.fr.base.FRContext; +import com.fr.base.env.resource.EnvConfigUtils; +import com.fr.core.env.EnvConfig; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.actions.core.ActionFactory; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; -import com.fr.design.file.*; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.file.MutilTempalteTabPane; +import com.fr.design.file.NewTemplatePane; +import com.fr.design.file.SaveSomeTemplatePane; +import com.fr.design.file.TemplateTreePane; import com.fr.design.fun.TitlePlaceProcessor; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuHighLight; @@ -28,15 +35,15 @@ import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.MenuManager; import com.fr.design.utils.DesignUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.event.EventDispatcher; import com.fr.file.FILE; import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.file.FileNodeFILE; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.general.env.EnvContext; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.manage.PluginFilter; @@ -54,15 +61,29 @@ import javax.swing.border.MatteBorder; import java.awt.*; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; -import java.awt.dnd.*; -import java.awt.event.*; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.logging.Level; + +import static com.fr.core.env.EnvEvents.AFTER_SIGN_OUT; +import static com.fr.core.env.EnvEvents.BEFORE_SIGN_OUT; public class DesignerFrame extends JFrame implements JTemplateActionListener, TargetModifiedListener { public static final String DESIGNER_FRAME_NAME = "designer_frame"; @@ -332,7 +353,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); this.setIconImages(image); } catch (IOException e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); this.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); } } @@ -609,10 +630,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta defaultTitleSB.append(ProductConstants.BRANCH); // james:标识登录的用户和登录的ENV String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); - Env env = DesignerEnvManager.getEnvManager().getEnv(envName); + EnvConfig env = DesignerEnvManager.getEnvManager().getEnv(envName); if (env != null) { - defaultTitleSB.append(env.getUser()).append('@').append(envName).append('['); - defaultTitleSB.append(env.getEnvDescription()); + defaultTitleSB.append(EnvConfigUtils.getUsername(env)).append('@').append(envName).append('['); + defaultTitleSB.append(Inter.getLocText("Env-Remote_Server")); defaultTitleSB.append(']'); if (editingTemplate != null) { String path = editingTemplate.getEditingFILE().getPath(); @@ -703,18 +724,14 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); } } else { if (editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); } } } @@ -734,6 +751,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 添加的模板. */ public void addAndActivateJTemplate(JTemplate jt) { + //释放模板对象 + ActionFactory.editorRelease(); if (jt == null || jt.getEditingFILE() == null) { return; } @@ -750,6 +769,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void activateJTemplate(JTemplate jt) { + //释放模板对象 + ActionFactory.editorRelease(); if (jt == null || jt.getEditingFILE() == null) { return; } @@ -809,7 +830,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta return; } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } // p:判断一下,如何文件为空或者文件不存在,直接返回. @@ -823,7 +844,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { openFile(tplFile); } catch (Throwable t) { - FRLogger.getLogger().error(t.getMessage(), t); + FineLoggerFactory.getLogger().error(t.getMessage(), t); addAndActivateJTemplate(); } @@ -927,7 +948,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { thread.join(); } catch (InterruptedException e) { - FRLogger.getLogger().error("Map Thread Error"); + FineLoggerFactory.getLogger().error("Map Thread Error"); } DesignerEnvManager.getEnvManager().setLastOpenFile( @@ -946,11 +967,11 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta Env currentEnv = FRContext.getCurrentEnv(); try { - EnvContext.fireBeforeSignOut(); + EventDispatcher.fire(BEFORE_SIGN_OUT); currentEnv.signOut(); - EnvContext.fireAfterSignOut(); + EventDispatcher.fire(AFTER_SIGN_OUT); } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } this.setVisible(false); this.dispose(); @@ -1006,7 +1027,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } event.dropComplete(true); diff --git a/designer-base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 5e68607b1..af03db3fe 100644 --- a/designer-base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -249,38 +249,6 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt } } - /* - * 加锁 - */ - private class GetLockAction extends UpdateAction { - - public GetLockAction() { - this.setName(Inter.getLocText("FR-Designer_Get_Lock")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/lock.png")); - } - - @Override - public void actionPerformed(ActionEvent evt) { - selectedOperation.lockFile(); - } - } - - /* - * 解锁 - */ - private class ReleaseLockAction extends UpdateAction { - - public ReleaseLockAction() { - this.setName(Inter.getLocText("FR-Designer_Release_Lock")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/unlock.png")); - } - - @Override - public void actionPerformed(ActionEvent evt) { - selectedOperation.unLockFile(); - } - } - /** * 按钮状态改变 */ diff --git a/designer-base/src/com/fr/design/mainframe/JFormSliderPane.java b/designer-base/src/com/fr/design/mainframe/JFormSliderPane.java index 81a916637..8a0ad05a4 100644 --- a/designer-base/src/com/fr/design/mainframe/JFormSliderPane.java +++ b/designer-base/src/com/fr/design/mainframe/JFormSliderPane.java @@ -14,13 +14,33 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFormattedTextField; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JSeparator; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.NumberFormatter; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; import java.math.BigDecimal; /** @@ -51,7 +71,6 @@ public class JFormSliderPane extends JPanel { private static final Color BACK_COLOR = new Color(245, 245, 247); public int showValue = 100; public double resolutionTimes = 1.0; - private static JFormSliderPane THIS; private UITextField showVal; private JSpinner showValSpinner; private UISlider slider; @@ -62,7 +81,7 @@ public class JFormSliderPane extends JPanel { private UISliderButton showValButton; private UIRadioButton twoHundredButton; private UIRadioButton oneHundredButton; - private UIRadioButton SevenFiveButton; + private UIRadioButton sevenFiveButton; private UIRadioButton fiveTenButton; private UIRadioButton twoFiveButton; private UIRadioButton selfAdaptButton; @@ -83,7 +102,7 @@ public class JFormSliderPane extends JPanel { showValSpinner.setEditor(editor); JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField(); textField.setEditable(true); - DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory(); + DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory(); NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter(); formatter.setAllowsInvalid(false); @@ -91,7 +110,7 @@ public class JFormSliderPane extends JPanel { initShowValButton(); initUIRadioButton(); initPane(); - JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); panel.add(downButton); panel.add(slider); panel.add(upButton); @@ -100,17 +119,13 @@ public class JFormSliderPane extends JPanel { this.add(panel, BorderLayout.NORTH); } - public static final JFormSliderPane getInstance() { -// if (THIS == null) { -// THIS = new JSliderPane(); -// } - THIS = new JFormSliderPane(); - return THIS; + public static JFormSliderPane getInstance() { + return new JFormSliderPane(); } private void initSlider() { - slider = new UISlider(0, HUNDRED, HALF_HUNDRED){ - public Point getToolTipLocation(MouseEvent event){ + slider = new UISlider(0, HUNDRED, HALF_HUNDRED) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -123,8 +138,8 @@ public class JFormSliderPane extends JPanel { } private void initShowValSpinner() { - showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)){ - public Point getToolTipLocation(MouseEvent event){ + showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -134,16 +149,16 @@ public class JFormSliderPane extends JPanel { } private void initDownUpButton() { - downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")){ - public Point getToolTipLocation(MouseEvent event){ + downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; downButton.setOpaque(false); downButton.setBorderPainted(false); downButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Down")); - upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")){ - public Point getToolTipLocation(MouseEvent event){ + upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -164,10 +179,11 @@ public class JFormSliderPane extends JPanel { showValButton.addActionListener(showValButtonActionListener); showValButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Grade")); } + private void initUIRadioButton() { twoHundredButton = new UIRadioButton("200%"); oneHundredButton = new UIRadioButton("100%"); - SevenFiveButton = new UIRadioButton("75%"); + sevenFiveButton = new UIRadioButton("75%"); fiveTenButton = new UIRadioButton("50%"); twoFiveButton = new UIRadioButton("25%"); selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); @@ -176,7 +192,7 @@ public class JFormSliderPane extends JPanel { customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE)); twoHundredButton.addItemListener(radioButtonItemListener); oneHundredButton.addItemListener(radioButtonItemListener); - SevenFiveButton.addItemListener(radioButtonItemListener); + sevenFiveButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener); customButton.addItemListener(new ItemListener() { @@ -194,7 +210,7 @@ public class JFormSliderPane extends JPanel { ButtonGroup bg = new ButtonGroup();// 初始化按钮组 bg.add(twoHundredButton);// 加入按钮组 bg.add(oneHundredButton); - bg.add(SevenFiveButton); + bg.add(sevenFiveButton); bg.add(fiveTenButton); bg.add(twoFiveButton); bg.add(selfAdaptButton); @@ -217,7 +233,7 @@ public class JFormSliderPane extends JPanel { septPane.setBackground(BACK_COLOR); twoHundredButton.setBackground(BACK_COLOR); oneHundredButton.setBackground(BACK_COLOR); - SevenFiveButton.setBackground(BACK_COLOR); + sevenFiveButton.setBackground(BACK_COLOR); fiveTenButton.setBackground(BACK_COLOR); twoFiveButton.setBackground(BACK_COLOR); // selfAdaptButton.setBackground(BACK_COLOR); @@ -227,7 +243,7 @@ public class JFormSliderPane extends JPanel { new Component[]{septPane, null}, new Component[]{twoHundredButton, null}, new Component[]{oneHundredButton, null}, - new Component[]{SevenFiveButton, null}, + new Component[]{sevenFiveButton, null}, new Component[]{fiveTenButton, null}, new Component[]{twoFiveButton, null}, new Component[]{customButton, createSpinnerPanel()} @@ -247,14 +263,14 @@ public class JFormSliderPane extends JPanel { return spinnerPanel; } - ActionListener showValButtonActionListener = new ActionListener() { + private ActionListener showValButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupDialog(); } }; - ChangeListener showValSpinnerChangeListener = new ChangeListener() { + private ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); @@ -277,7 +293,7 @@ public class JFormSliderPane extends JPanel { //定义一个监听器,用于监听所有滑动条 - ChangeListener listener = new ChangeListener() { + private ChangeListener listener = new ChangeListener() { public void stateChanged(ChangeEvent event) { //取出滑动条的值,并在文本中显示出来 if (!isButtonOrIsTxt) { @@ -296,7 +312,7 @@ public class JFormSliderPane extends JPanel { } }; - ItemListener radioButtonItemListener = new ItemListener() { + private ItemListener radioButtonItemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { JRadioButton temp = (JRadioButton) e.getSource(); @@ -312,7 +328,7 @@ public class JFormSliderPane extends JPanel { slider.setValue((int) (showValue + TWO_HUNDRED) / SIX); } else if (showValue < HUNDRED) { slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT)); - } else if (showValue == HUNDRED) { + } else { slider.setValue(HALF_HUNDRED); } } @@ -336,7 +352,7 @@ public class JFormSliderPane extends JPanel { return b1.divide(b2, scale).doubleValue(); } - ActionListener buttonActionListener = new ActionListener() { + private ActionListener buttonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showValue = (int) showValSpinner.getValue(); diff --git a/designer-base/src/com/fr/design/mainframe/JSliderPane.java b/designer-base/src/com/fr/design/mainframe/JSliderPane.java index c2f4da0e7..83edb560a 100644 --- a/designer-base/src/com/fr/design/mainframe/JSliderPane.java +++ b/designer-base/src/com/fr/design/mainframe/JSliderPane.java @@ -15,13 +15,34 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JFormattedTextField; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JSeparator; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.plaf.basic.BasicSliderUI; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.NumberFormatter; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -59,7 +80,6 @@ public class JSliderPane extends JPanel { private static final Color BACK_COLOR = new Color(245, 245, 247); public int showValue = 100; public double resolutionTimes = 1.0; - private static JSliderPane THIS; private UITextField showVal; private JSpinner showValSpinner; private UISlider slider; @@ -70,12 +90,14 @@ public class JSliderPane extends JPanel { private UISliderButton showValButton; private UIRadioButton twoHundredButton; private UIRadioButton oneHundredButton; - private UIRadioButton SevenFiveButton; + private UIRadioButton sevenFiveButton; private UIRadioButton fiveTenButton; private UIRadioButton twoFiveButton; private UIRadioButton selfAdaptButton; private UIRadioButton customButton; - //拖动条处理和button、直接输入不一样 + /** + * 拖动条处理和button、直接输入不一样 + */ private boolean isButtonOrIsTxt = true; private PopupPane dialog; private int upButtonX; @@ -91,7 +113,7 @@ public class JSliderPane extends JPanel { showValSpinner.setEditor(editor); JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField(); textField.setEditable(true); - DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory(); + DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory(); NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter(); formatter.setAllowsInvalid(false); @@ -99,7 +121,7 @@ public class JSliderPane extends JPanel { initShowValButton(); initUIRadioButton(); initPane(); - JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); panel.add(downButton); panel.add(slider); panel.add(upButton); @@ -109,12 +131,8 @@ public class JSliderPane extends JPanel { } - public static final JSliderPane getInstance() { -// if (THIS == null) { -// THIS = new JSliderPane(); -// } - THIS = new JSliderPane(); - return THIS; + public static JSliderPane getInstance() { + return new JSliderPane(); } private void initSlider() { @@ -178,7 +196,7 @@ public class JSliderPane extends JPanel { private void initUIRadioButton() { twoHundredButton = new UIRadioButton("200%"); oneHundredButton = new UIRadioButton("100%"); - SevenFiveButton = new UIRadioButton("75%"); + sevenFiveButton = new UIRadioButton("75%"); fiveTenButton = new UIRadioButton("50%"); twoFiveButton = new UIRadioButton("25%"); selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); @@ -187,7 +205,7 @@ public class JSliderPane extends JPanel { customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE)); twoHundredButton.addItemListener(radioButtonItemListener); oneHundredButton.addItemListener(radioButtonItemListener); - SevenFiveButton.addItemListener(radioButtonItemListener); + sevenFiveButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener); customButton.addItemListener(new ItemListener() { @@ -205,7 +223,7 @@ public class JSliderPane extends JPanel { ButtonGroup bg = new ButtonGroup();// 初始化按钮组 bg.add(twoHundredButton);// 加入按钮组 bg.add(oneHundredButton); - bg.add(SevenFiveButton); + bg.add(sevenFiveButton); bg.add(fiveTenButton); bg.add(twoFiveButton); bg.add(selfAdaptButton); @@ -228,7 +246,7 @@ public class JSliderPane extends JPanel { septPane.setBackground(BACK_COLOR); twoHundredButton.setBackground(BACK_COLOR); oneHundredButton.setBackground(BACK_COLOR); - SevenFiveButton.setBackground(BACK_COLOR); + sevenFiveButton.setBackground(BACK_COLOR); fiveTenButton.setBackground(BACK_COLOR); twoFiveButton.setBackground(BACK_COLOR); selfAdaptButton.setBackground(BACK_COLOR); @@ -238,7 +256,7 @@ public class JSliderPane extends JPanel { new Component[]{septPane, null}, new Component[]{twoHundredButton, null}, new Component[]{oneHundredButton, null}, - new Component[]{SevenFiveButton, null}, + new Component[]{sevenFiveButton, null}, new Component[]{fiveTenButton, null}, new Component[]{twoFiveButton, null}, new Component[]{selfAdaptButton, null}, @@ -259,14 +277,14 @@ public class JSliderPane extends JPanel { return spinnerPanel; } - ActionListener showValButtonActionListener = new ActionListener() { + private ActionListener showValButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupDialog(); } }; - ChangeListener showValSpinnerChangeListener = new ChangeListener() { + private ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); @@ -289,7 +307,7 @@ public class JSliderPane extends JPanel { //定义一个监听器,用于监听所有滑动条 - ChangeListener listener = new ChangeListener() { + private ChangeListener listener = new ChangeListener() { public void stateChanged(ChangeEvent event) { //取出滑动条的值,并在文本中显示出来 if (!isButtonOrIsTxt) { @@ -309,7 +327,7 @@ public class JSliderPane extends JPanel { } }; - ItemListener radioButtonItemListener = new ItemListener() { + private ItemListener radioButtonItemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { JRadioButton temp = (JRadioButton) e.getSource(); @@ -325,7 +343,7 @@ public class JSliderPane extends JPanel { slider.setValue((int) (showValue + TWO_HUNDRED) / SIX); } else if (showValue < HUNDRED) { slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT)); - } else if (showValue == HUNDRED) { + } else { slider.setValue(HALF_HUNDRED); } } @@ -343,7 +361,7 @@ public class JSliderPane extends JPanel { return this.showValue; } - public void reset(){ + public void reset() { this.showValSpinner.setValue(HUNDRED); } @@ -353,7 +371,7 @@ public class JSliderPane extends JPanel { return b1.divide(b2, scale).doubleValue(); } - ActionListener buttonActionListener = new ActionListener() { + private ActionListener buttonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showValue = (int) showValSpinner.getValue(); @@ -390,7 +408,7 @@ public class JSliderPane extends JPanel { } else if (value < HALF_HUNDRED) { times = (int) Math.round(ONEPOINTEIGHT * value + TEN); } else { - times = (int) (SIX * value - TWO_HUNDRED); + times = SIX * value - TWO_HUNDRED; } } @@ -448,11 +466,9 @@ class JSliderPaneUI extends BasicSliderUI { super(b); } - /** */ /** * 绘制指示物 */ - public void paintThumb(Graphics g) { Rectangle knobBounds = thumbRect; Graphics2D g2d = (Graphics2D) g; @@ -460,7 +476,6 @@ class JSliderPaneUI extends BasicSliderUI { g2d.dispose(); } - /** */ /** * 绘制刻度轨迹 */ diff --git a/designer-base/src/com/fr/design/mainframe/JTemplate.java b/designer-base/src/com/fr/design/mainframe/JTemplate.java index 40d00a703..bec2dcf2e 100644 --- a/designer-base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/com/fr/design/mainframe/JTemplate.java @@ -45,7 +45,7 @@ import com.fr.file.MemFILE; import com.fr.form.ui.NoneWidget; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.report.cell.Elem; import com.fr.report.cell.cellattr.CellImage; @@ -531,7 +531,7 @@ public abstract class JTemplate> return false; } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } diff --git a/designer-base/src/com/fr/design/mainframe/TemplatePane.java b/designer-base/src/com/fr/design/mainframe/TemplatePane.java index 0aa0258a9..8d128ce5e 100644 --- a/designer-base/src/com/fr/design/mainframe/TemplatePane.java +++ b/designer-base/src/com/fr/design/mainframe/TemplatePane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; -import com.fr.base.Env; +import com.fr.core.env.EnvConfig; import com.fr.dav.LocalEnv; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignerEnvManager; @@ -22,8 +22,19 @@ import com.fr.stable.EnvChangedListener; import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.GradientPaint; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; @@ -97,6 +108,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 是否可扩展 + * * @return 同上 */ public boolean IsExpanded() { @@ -111,7 +123,7 @@ public class TemplatePane extends JPanel implements MouseListener { private boolean envListOkAction(EnvListPane envListPane) { String selectedName = envListPane.updateEnvManager(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - Env selectedEnv = envManager.getEnv(selectedName); + EnvConfig selectedEnv = envManager.getEnv(selectedName); GeneralContext.fireEnvWillChangeListener(); try { //如果是远程的还要先测试下,如果失败就不切换 @@ -120,7 +132,7 @@ public class TemplatePane extends JPanel implements MouseListener { JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); return false; } else { - String remoteVersion = selectedEnv.getDesignerVersion(); + String remoteVersion = getDesignerVersion(selectedEnv); if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { String infor = Inter.getLocText("Server-version-tip"); String moreInfo = Inter.getLocText("Server-version-tip-moreInfo"); @@ -147,6 +159,11 @@ public class TemplatePane extends JPanel implements MouseListener { return true; } + private String getDesignerVersion(EnvConfig selectedEnv) { +// return selectedEnv.getDesignerVersion(); + throw new UnsupportedOperationException("unsupport now"); + } + /** * 编辑items */ @@ -161,7 +178,7 @@ public class TemplatePane extends JPanel implements MouseListener { } public void doCancel() { - envListDialog.setVisible(false); + envListDialog.setVisible(false); } }); envListDialog.setVisible(true); @@ -209,6 +226,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 鼠标点击 + * * @param e 事件 */ @Override @@ -217,6 +235,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 鼠标按下 + * * @param e 事件 */ @Override @@ -231,6 +250,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 鼠标放开 + * * @param e 事件 */ @Override @@ -239,6 +259,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 鼠标进入 + * * @param e 事件 */ @Override @@ -247,6 +268,7 @@ public class TemplatePane extends JPanel implements MouseListener { /** * 鼠标离开 + * * @param e 事件 */ @Override diff --git a/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 7be558aca..846583538 100644 --- a/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -7,10 +7,11 @@ 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.FRLogLevel; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; 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; @@ -37,9 +38,9 @@ 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 = FRLogLevel.INFO.intValue(); - protected static final int ERRO_INT = FRLogLevel.ERROR.intValue(); - protected static final int SERVER_INT = FRLogLevel.SEVERE.intValue(); + protected static final int INFO_INT = com.fr.third.apache.log4j.Level.INFO.toInt(); + protected static final int ERROR_INT = com.fr.third.apache.log4j.Level.ERROR.toInt(); + protected static final int WARN_INT = com.fr.third.apache.log4j.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; @@ -50,7 +51,7 @@ public class DesignerLogHandler { @Override public void envChanged() { // envchange后需要重新读取webinf里的log4j配置, 重新添加appender - FRLogger.getLogger().addLogAppender(new LogHandler() { + FineLoggerFactory.getLogger().addLogAppender(new LogHandler() { @Override public DesignerLogAppender getHandler() { return new DesignerLogAppender(); @@ -118,20 +119,20 @@ public class DesignerLogHandler { @Override public void actionPerformed(ActionEvent e) { - JPopupMenu showsetPopup = new JPopupMenu(); - int logLevelvalue = ServerConfig.getInstance().getServerLogLevel().intValue(); - if (logLevelvalue <= INFO_INT) { - showsetPopup.add(showInfo); - showsetPopup.add(showError); - showsetPopup.add(showServer); - showsetPopup.show(caption, caption.getWidth() + GAP_X, INFO_GAP_Y); - } else if (logLevelvalue == ERRO_INT) { - showsetPopup.add(showError); - showsetPopup.add(showServer); - showsetPopup.show(caption, caption.getWidth() + GAP_X, ERRO_GAP_Y); + JPopupMenu jPopupMenu = new JPopupMenu(); + int logLevelInt = Log4jConfig.getInstance().getRootLevel().toInt(); + if (logLevelInt <= INFO_INT) { + jPopupMenu.add(showInfo); + jPopupMenu.add(showError); + jPopupMenu.add(showServer); + jPopupMenu.show(caption, caption.getWidth() + GAP_X, INFO_GAP_Y); + } else if (logLevelInt == ERROR_INT) { + jPopupMenu.add(showError); + jPopupMenu.add(showServer); + jPopupMenu.show(caption, caption.getWidth() + GAP_X, ERRO_GAP_Y); } else { - showsetPopup.add(showServer); - showsetPopup.show(caption, caption.getWidth() + GAP_X, SERVER_GAP_Y); + jPopupMenu.add(showServer); + jPopupMenu.show(caption, caption.getWidth() + GAP_X, SERVER_GAP_Y); } } }); @@ -222,9 +223,9 @@ public class DesignerLogHandler { int logLevelvalue = logRecord.getLevel().intValue(); if (logLevelvalue == INFO_INT && showInfo.isSelected()) { printMessage(logRecord.getMessage(), logLevelvalue, date, logRecord.getThrown()); - } else if (logLevelvalue == ERRO_INT && showError.isSelected()) { + } else if (logLevelvalue == ERROR_INT && showError.isSelected()) { printMessage(logRecord.getMessage(), logLevelvalue, date, logRecord.getThrown()); - } else if (logLevelvalue == SERVER_INT && showServer.isSelected()) { + } else if (logLevelvalue == WARN_INT && showServer.isSelected()) { printMessage(logRecord.getMessage(), logLevelvalue, date, logRecord.getThrown()); } @@ -234,9 +235,9 @@ public class DesignerLogHandler { int logLevelvalue = level.intValue(); if (logLevelvalue == INFO_INT && showInfo.isSelected()) { printMessage(message, logLevelvalue, date); - } else if (logLevelvalue == ERRO_INT && showError.isSelected()) { + } else if (logLevelvalue == ERROR_INT && showError.isSelected()) { printMessage(message, logLevelvalue, date); - } else if (logLevelvalue == SERVER_INT && showServer.isSelected()) { + } else if (logLevelvalue == WARN_INT && showServer.isSelected()) { printMessage(message, logLevelvalue, date); } @@ -264,10 +265,10 @@ public class DesignerLogHandler { private void log(String str, int style) { SimpleAttributeSet attrSet = new SimpleAttributeSet(); - if (style == ERRO_INT) { + if (style == ERROR_INT) { StyleConstants.setForeground(attrSet, new Color(247, 148, 29)); StyleConstants.setBold(attrSet, true); - } else if (style == SERVER_INT) { + } else if (style == WARN_INT) { StyleConstants.setForeground(attrSet, Color.red); StyleConstants.setBold(attrSet, true); } else if (style == INFO_INT) { @@ -286,9 +287,9 @@ public class DesignerLogHandler { } private String swithInter(String str, int style) { - if (style == ERRO_INT) { + if (style == ERROR_INT) { str = Inter.getLocText("FR-Designer_Alert") + ":" + str + "\n"; - } else if (style == SERVER_INT) { + } else if (style == WARN_INT) { str = Inter.getLocText("FR-Designer_Seriously") + ":" + str + "\n"; } else { str = Inter.getLocText("FR-Designer_Normal") + ":" + str + "\n"; @@ -300,9 +301,9 @@ public class DesignerLogHandler { LogMessageBar.getInstance().setMessage(message); if (level == DesignerLogHandler.INFO_INT && showInfo.isSelected()) { caption.infoAdd(); - } else if (level == DesignerLogHandler.ERRO_INT && showError.isSelected()) { + } else if (level == DesignerLogHandler.ERROR_INT && showError.isSelected()) { caption.errorAdd(); - } else if (level == DesignerLogHandler.SERVER_INT && showServer.isSelected()) { + } else if (level == DesignerLogHandler.WARN_INT && showServer.isSelected()) { caption.serverAdd(); } } @@ -341,4 +342,8 @@ public class DesignerLogHandler { }; } + + public void printRemoteLog(LogRecordTime logRecordTime) { + logHandlerArea.printStackTrace(logRecordTime); + } } \ No newline at end of file diff --git a/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java b/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java new file mode 100644 index 000000000..7e3746089 --- /dev/null +++ b/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java @@ -0,0 +1,88 @@ +package com.fr.design.mainframe.loghandler.socketio; + +import com.fr.base.env.EnvContext; +import com.fr.base.env.resource.LocalEnvConfig; +import com.fr.core.env.EnvConfig; +import com.fr.core.env.EnvConstants; +import com.fr.core.env.EnvEvents; +import com.fr.decision.webservice.utils.DecisionServiceConstants; +import com.fr.design.mainframe.loghandler.DesignerLogHandler; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.event.Null; +import com.fr.general.LogRecordTime; +import com.fr.general.LogUtils; +import com.fr.log.FineLoggerFactory; +import com.fr.third.guava.base.Optional; +import com.fr.web.WebSocketConfig; +import io.socket.client.IO; +import io.socket.client.Socket; +import io.socket.emitter.Emitter; + +import java.io.ByteArrayInputStream; +import java.net.URI; +import java.net.URL; + +public class DesignerSocketIO { + + private static Optional socketIO = Optional.absent(); + + private static final Emitter.Listener printLog = new Emitter.Listener() { + @Override + public void call(Object... objects) { + try { + LogRecordTime[] logRecordTimes = LogUtils.readXMLLogRecords(new ByteArrayInputStream((byte[]) objects[0])); + for (LogRecordTime logRecordTime : logRecordTimes) { + DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + }; + + static { + EventDispatcher.listen(EnvEvents.AFTER_SIGN_OUT, new Listener() { + @Override + public void on(Event event, Null param) { + if (socketIO.isPresent()) { + socketIO.get().close(); + socketIO = Optional.absent(); + } + } + }); + EventDispatcher.listen(EnvEvents.AFTER_SIGN_IN, new Listener() { + @Override + public void on(Event event, Null param) { + updateSocket(); + } + }); + } + + public static void init() { + updateSocket(); + } + + private static void updateSocket() { + EnvConfig env = EnvContext.currentEnv(); + if (env instanceof LocalEnvConfig) { + return; + } + + try { + String uri = String.format("http://%s:%s%s?%s=%s", + new URL(env.getPath()).getHost(), + WebSocketConfig.getInstance().getPort(), + EnvConstants.WS_NAMESPACE, + DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, + EnvContext.currentToken()); + + socketIO = Optional.of(IO.socket(new URI(uri))); + socketIO.get().on(EnvConstants.WS_LOGRECORD, printLog); + socketIO.get().connect(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 8a01b6b95..d4450b43e 100644 --- a/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -9,7 +9,7 @@ import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.SiteCenterToken; import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralUtils; import com.fr.general.IOUtils; import com.fr.general.SiteCenter; @@ -207,7 +207,7 @@ public class TemplateInfoCollector implements Serializable, FileOutputStream out = new FileOutputStream(getInfoFile()); XMLTools.writeOutputStreamXML(this, out); } catch (Exception ex) { - FRLogger.getLogger().error(ex.getMessage()); + FineLoggerFactory.getLogger().error(ex.getMessage()); } } diff --git a/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java b/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java index 39d5921d6..da2122cb4 100644 --- a/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java +++ b/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java @@ -48,11 +48,8 @@ public class RemoteDesignAuthorityManagerAction extends UpdateAction { public void doOk() { DesignAuthority[] authorities = managerPane.update(); if (!FRContext.getCurrentEnv().isLocalEnv()) { - try { - ((RemoteEnv) FRContext.getCurrentEnv()).updateAuthorities(authorities); - } catch (Exception exception) { - FRContext.getLogger().error(exception.getMessage()); - } + boolean success = ((RemoteEnv) FRContext.getCurrentEnv()).updateAuthorities(authorities); + FRContext.getLogger().info("update remote design authority: " + success); } } diff --git a/designer-base/src/com/fr/design/selection/QuickEditor.java b/designer-base/src/com/fr/design/selection/QuickEditor.java index 5220bc719..de19d64f8 100644 --- a/designer-base/src/com/fr/design/selection/QuickEditor.java +++ b/designer-base/src/com/fr/design/selection/QuickEditor.java @@ -2,7 +2,7 @@ package com.fr.design.selection; import com.fr.design.designer.TargetComponent; -import javax.swing.*; +import javax.swing.JComponent; /** * 快速编辑区域 @@ -39,11 +39,15 @@ public abstract class QuickEditor extends JComponent tc.fireTargetModified(); } + /** + * 刷新面板 + */ protected abstract void refresh(); /** - * for 关闭时候释放 + * 关闭模板时释放模板对象 + * 所有持有tc的对象也必须置空或者丢弃对于tc的引用 */ public void release() { tc = null; @@ -53,7 +57,6 @@ public abstract class QuickEditor extends JComponent @Override protected void refresh() { - } }; diff --git a/designer-base/src/com/fr/design/style/background/BackgroundPane.java b/designer-base/src/com/fr/design/style/background/BackgroundPane.java index 7d2c5ba69..1caf13e1d 100644 --- a/designer-base/src/com/fr/design/style/background/BackgroundPane.java +++ b/designer-base/src/com/fr/design/style/background/BackgroundPane.java @@ -17,7 +17,7 @@ import javax.swing.event.EventListenerList; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; import com.fr.general.Background; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; public class BackgroundPane extends BasicPane { @@ -139,7 +139,7 @@ public class BackgroundPane extends BasicPane { try { return quickPane.update(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return null; } diff --git a/designer-base/src/com/fr/design/style/color/ColorPicker.java b/designer-base/src/com/fr/design/style/color/ColorPicker.java index e91968675..90b859fcc 100644 --- a/designer-base/src/com/fr/design/style/color/ColorPicker.java +++ b/designer-base/src/com/fr/design/style/color/ColorPicker.java @@ -5,7 +5,7 @@ package com.fr.design.style.color; */ import com.fr.base.BaseUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import javax.swing.*; import java.awt.*; @@ -73,7 +73,7 @@ public class ColorPicker extends JDialog implements ActionListener try { Thread.sleep(100); // 等待弹窗关闭 } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } colorPickerPanel.captureScreen(); } diff --git a/designer-base/src/com/fr/design/style/color/ColorSelectConfigManager.java b/designer-base/src/com/fr/design/style/color/ColorSelectConfigManager.java index dd92aa52e..80e1048b7 100644 --- a/designer-base/src/com/fr/design/style/color/ColorSelectConfigManager.java +++ b/designer-base/src/com/fr/design/style/color/ColorSelectConfigManager.java @@ -3,7 +3,7 @@ package com.fr.design.style.color; import com.fr.base.FRContext; import com.fr.file.XMLFileManager; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralContext; import com.fr.stable.EnvChangedListener; import com.fr.stable.xml.XMLPrintWriter; @@ -99,7 +99,7 @@ public class ColorSelectConfigManager extends XMLFileManager implements ColorSel try { FRContext.getCurrentEnv().writeResource(manager); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-base/src/com/fr/design/style/color/CustomChooserPanel.java b/designer-base/src/com/fr/design/style/color/CustomChooserPanel.java index 852c8b2b1..15f11de11 100644 --- a/designer-base/src/com/fr/design/style/color/CustomChooserPanel.java +++ b/designer-base/src/com/fr/design/style/color/CustomChooserPanel.java @@ -28,7 +28,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.islider.UISlider; import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.gui.itextfield.UITextField; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; /** @@ -241,7 +241,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec } } catch (BadLocationException e1) { - FRLogger.getLogger().error(e1.getMessage()); + FineLoggerFactory.getLogger().error(e1.getMessage()); } } } diff --git a/designer-base/src/com/fr/design/utils/DesignUtils.java b/designer-base/src/com/fr/design/utils/DesignUtils.java index 469e7fd1a..1148d64f4 100644 --- a/designer-base/src/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/com/fr/design/utils/DesignUtils.java @@ -1,11 +1,11 @@ package com.fr.design.utils; import com.fr.base.BaseUtils; -import com.fr.base.ServerConfig; import com.fr.base.Env; import com.fr.base.EnvException; import com.fr.base.FRContext; import com.fr.base.FeedBackInfo; +import com.fr.base.ServerConfig; import com.fr.base.Utils; import com.fr.base.remote.RemoteDeziConstants; import com.fr.dav.DavXMLUtils; @@ -19,10 +19,11 @@ import com.fr.env.RemoteEnv; import com.fr.file.FileFILE; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.general.http.HttpClient; +import com.fr.log.FineLoggerFactory; +import com.fr.security.JwtUtils; import com.fr.stable.ArrayUtils; import com.fr.stable.CodeUtils; import com.fr.stable.EncodeConstants; @@ -51,7 +52,6 @@ import java.net.URLEncoder; import java.util.Calendar; import java.util.Enumeration; import java.util.Locale; -import java.util.logging.Level; /** @@ -74,7 +74,8 @@ public class DesignUtils { /** * 通过端口是否被占用判断设计器有没有启动 - * s + * s + * * @return 启动了返回true */ public static boolean isStarted() { @@ -120,18 +121,19 @@ public class DesignUtils { } /** - *建立监听端口 - * @param startPort 端口 - * @param suffixs 文件后缀 + * 建立监听端口 + * + * @param startPort 端口 + * @param suffixs 文件后缀 */ - public static void creatListeningServer(final int startPort,final String[] suffixs) { + public static void creatListeningServer(final int startPort, final String[] suffixs) { Thread serverSocketThread = new Thread() { public void run() { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(startPort); } catch (IOException e1) { - FRLogger.getLogger().log(Level.WARNING, "Cannot create server socket on" + port); + FineLoggerFactory.getLogger().error("Cannot create server socket on" + port); } while (true) { try { @@ -146,7 +148,7 @@ public class DesignUtils { String path = f.getAbsolutePath(); boolean isMatch = false; - for(int i= 0; i { +public class LocalEnvPane extends BasicBeanPane { private UITextField pathTextField; private JFileTree localEnvTree; @@ -70,9 +71,9 @@ public class LocalEnvPane extends BasicBeanPane { } @Override - public LocalEnv updateBean() { + public LocalEnvConfig updateBean() { String path = pathTextField.getText(); - return LocalEnv.createEnv(path); + return new LocalEnvConfig(path); } public String getPath() { @@ -80,7 +81,7 @@ public class LocalEnvPane extends BasicBeanPane { } @Override - public void populateBean(LocalEnv ob) { + public void populateBean(LocalEnvConfig ob) { if (StringUtils.isBlank(ob.getPath())) { return; } diff --git a/designer-base/src/com/fr/env/RemoteEnv.java b/designer-base/src/com/fr/env/RemoteEnv.java index c1533aca5..a9124b9e9 100644 --- a/designer-base/src/com/fr/env/RemoteEnv.java +++ b/designer-base/src/com/fr/env/RemoteEnv.java @@ -1,249 +1,121 @@ package com.fr.env; -import com.fr.base.*; +import com.fr.base.env.old.AbstractEnv; +import com.fr.base.EnvException; +import com.fr.base.TableData; +import com.fr.base.env.EnvContext; +import com.fr.base.env.resource.RemoteEnvConfig; import com.fr.base.remote.RemoteDeziConstants; +import com.fr.core.env.EnvConstants; import com.fr.data.TableDataSource; -import com.fr.data.core.DataCoreUtils; -import com.fr.data.core.db.TableProcedure; -import com.fr.data.impl.Connection; import com.fr.data.impl.EmbeddedTableData; -import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.dav.DavXMLUtils; -import com.fr.dav.UserBaseEnv; import com.fr.design.DesignerEnvManager; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.dialog.InformationWarnPane; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.file.CacheManager; import com.fr.file.ConnectionConfig; import com.fr.file.TableDataConfig; -import com.fr.file.filetree.FileNode; -import com.fr.general.*; -import com.fr.general.http.HttpClient; +import com.fr.general.CommonIOUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.LogRecordTime; +import com.fr.general.LogUtils; +import com.fr.general.http.HttpToolbox; import com.fr.io.utils.ResourceIOUtils; import com.fr.json.JSONArray; -import com.fr.json.JSONException; import com.fr.json.JSONObject; -import com.fr.license.function.VT4FR; -import com.fr.regist.License; +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.*; +import com.fr.stable.ArrayUtils; +import com.fr.stable.EncodeConstants; +import com.fr.stable.Filter; +import com.fr.stable.JavaCompileInfo; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.SvgProvider; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; -import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLTools; -import com.fr.stable.xml.XMLableReader; +import com.fr.third.guava.collect.ImmutableMap; import com.fr.web.ResourceConstants; -import javax.swing.*; -import javax.xml.transform.*; +import javax.swing.JOptionPane; +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.*; -import java.net.HttpURLConnection; -import java.net.NoRouteToHostException; -import java.net.Socket; -import java.net.URLEncoder; -import java.util.*; -import java.util.List; -import java.util.Timer; -import java.util.logging.Level; -import java.util.regex.Pattern; +import java.awt.Component; +import java.io.BufferedReader; +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.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import static com.fr.third.guava.base.Preconditions.checkArgument; /** * @author null */ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurable { - private static final int TIME_OUT = 30 * 1000; - private static final int PLAIN_SOCKET_PORT = 80; - private static final int SSL_PORT = 443; - private static final int MAX_PER_ROUTE = 20; - private static final int MAX_TOTAL = 100; - private static final String REMOTE_PLUGIN = "remote_plugin.info"; 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 path; - private String user; - private String password; - private Clock clock = null; - private String userID; - private Timer timer; - private int licNotSupport = 0; - private boolean isRoot = false; - private Timer logTimer = null; - private static ThreadLocal threadLocal = new ThreadLocal<>(); - private boolean isReadTimeOut = false; private String buildFilePath; + private RemoteEnvConfig env; - public RemoteEnv() { - this.clock = new Clock(this); - } public RemoteEnv(String path, String userName, String password) { - this(); - this.path = path; - this.user = userName; - this.password = password; + env = new RemoteEnvConfig(path, userName, password); } - /** - * 返回env配置路径 - */ @Override public String getPath() { - return this.path; - } - - public void setPath(String s) { - this.path = s; + return env.getPath(); } - /** - * 当前设计环境的用户名,用于远程设计 - */ @Override public String getUser() { - return user; - } - - public void setUser(String user) { - this.user = user; - clearUserID(); + return env.getUsername(); } public String getPassword() { - return password; - } - - /** - * 修复密码中包含特殊字符,无法登录的问题 - * - * @return - */ - private String getEncodedPassword() { - try { - return URLEncoder.encode(password, "UTF-8"); - } catch (UnsupportedEncodingException e) { - return password; - } - } - - public void setPassword(String password) { - this.password = password; - clearUserID(); - } - - public Clock getClock() { - return this.clock; - } - - public void setClock(Clock clock) { - this.clock = clock; - } - - private void clearUserID() { - this.userID = null; - } - - public void setThreadLocal(String value) { - synchronized (this) { - threadLocal.set(value); - } - - } - - public String getThreadLocal() { - return threadLocal.get(); + return env.getPassword(); } - /** - * 所有与服务器端交互前,都要调用这个方法生成UserID - */ - private String createUserID() throws EnvException { - // 如果登录之后userID还是null - if (this.userID == null) { - if (!VT4FR.RemoteDesign.support() && licNotSupport <= 0) { - licNotSupport++; - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Lic_does_not_Support_Remote")); - } - throw new EnvException(Inter.getLocText("Env-Invalid_User_and_Password")); - } - - return this.userID; - } - - private HttpClient createHttpMethod(HashMap para) throws EnvException, UnsupportedEncodingException { - return createHttpMethod(para, false); - } - - /** - * 根据nameValuePairs,也就是参数对,生成PostMethod - */ - private HttpClient createHttpMethod(HashMap para, boolean isSignIn) throws EnvException { - String methodPath = this.path; - if (!isSignIn) { - methodPath = methodPath + "?id=" + createUserID(); - } - HttpClient client = new HttpClient(methodPath, para); - /* - todo post 方法好象过去不了 - 但是get方法也会有一些url参数问题,尤其是图表部分 - 比如: - op=fr_remote_design&cmd=design_get_plugin_service_data&serviceID=plugin.phantomjs&req= - */ - client.asGet(); - return client; - } - - /** - * 根据nameValuePairs,也就是参数对,生成PostMethod,不同之处在于,参数拼在path后面,不是method.addParameters - */ - private HttpClient createHttpMethod2(HashMap para) throws EnvException, UnsupportedEncodingException { - String methodPath = path + '?' + "id=" + createUserID(); - return new HttpClient(methodPath); + @Override + public String getUserID() { + return EnvContext.currentToken(); } - - /* - * Read the response body. - * 拿出InputStream中所有的Byte,转换成ByteArrayInputStream的形式返回 - * - * 这样做的目的是确保method.releaseConnection - * - * TODO 但如果不做method.releaseConnection,有多大危害呢?不确定... - */ - /** - * execute method之后,取返回的inputstream + * execute method之后,取返回的 InputStream */ - private ByteArrayInputStream execute4InputStream(HttpClient client) throws Exception { - setHttpsParas(); - try { - int statusCode = client.getResponseCode(); - if (statusCode != HttpURLConnection.HTTP_OK) { - //数据加载太多,屏蔽掉 - //doWithTimeOutException(); - throw new EnvException("Method failed: " + statusCode); - } - } catch (Exception e) { - FRContext.getLogger().info("Connection reset "); - } - InputStream in = client.getResponseStream(); + private InputStream filterInputStream(InputStream in) throws Exception { if (in == null) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); try { - Utils.copyBinaryTo(in, out); - + IOUtils.copyBinaryTo(in, out); // 看一下传过来的byte[]是不是DesignProcessor.INVALID,如果是的话,就抛Exception byte[] bytes = out.toByteArray(); // carl:格式一致传中文 @@ -261,20 +133,10 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl synchronized (this) { in.close(); out.close(); - client.release(); } } } - private void doWithTimeOutException() { - boolean isNotNeedTip = ComparatorUtils.equals(getThreadLocal(), "HEART_BEAT") || ComparatorUtils.equals(getThreadLocal(), "LOG_MESSAGE"); - if (!isReadTimeOut && !isNotNeedTip) { - isReadTimeOut = true; - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"Data", "read_time_out"})); - isReadTimeOut = false; - } - FRContext.getLogger().info("Connection reset "); - } /** @@ -285,10 +147,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl * @throws Exception 异常 */ private boolean postBytes2Server(byte[] bytes, HashMap para) throws Exception { - HttpClient client = createHttpMethod2(para); - client.setContent(bytes); - execute4InputStream(client); - + filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this)); return true; } @@ -302,27 +161,13 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl if (in == null) { return null; } - BufferedReader br; + String result = null; try { - br = new BufferedReader(new InputStreamReader(in, EncodeConstants.ENCODING_UTF_8)); + result = CommonIOUtils.inputStream2String(in, EncodeConstants.ENCODING_UTF_8); } catch (UnsupportedEncodingException e) { - br = new BufferedReader(new InputStreamReader(in)); - } - StringBuilder sb = new StringBuilder(); - String line; - - try { - while ((line = br.readLine()) != null) { - if (sb.length() > 0) { - sb.append('\n'); - } - sb.append(line); - } - } catch (IOException e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } - - return sb.toString(); + return result; } /** @@ -359,121 +204,64 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl private boolean testConnection(boolean needMessage, boolean isRegisteServer, Component parentComponent) throws Exception { - extraChangeEnvPara(); - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "test_server_connection"); - para.put("user", user); - para.put("password", getEncodedPassword()); - - if (path.startsWith("https") && (!DesignerEnvManager.getEnvManager().isHttps())) { - return false; - } - - HttpClient client = createHttpMethod(para, true); - - String res = stream2String(execute4InputStream(client)); + checkArgument(parentComponent instanceof Component, "parentComponent should be a java.awt.component"); + Component component = parentComponent; + String url = String.format("%s/connection", EnvConstants.toDecisionPath(getPath())); + ImmutableMap params = ImmutableMap.of( + "version", (Object) ProductConstants.DESIGNER_VERSION + ); + ImmutableMap headers = ImmutableMap.of( + EnvConstants.USERNAME, getUser(), + EnvConstants.PWD, getPassword()); + String res = HttpToolbox.post(url, params, headers); if (res == null) { if (needMessage) { - JOptionPane.showMessageDialog( - parentComponent, - Inter.getLocText("Datasource-Connection_failed"), - UIManager.getString("OptionPane.messageDialogTitle", parentComponent.getLocale()), - JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(component, Inter.getLocText("Datasource-Connection_failed")); } return false; } else if (ComparatorUtils.equals(res, "true")) { - if (!clock.connected && isRegisteServer) { - //服务器中断又重新启动之后,重新向远程服务器注册 - register2Server(); - } return true; - } else if (ComparatorUtils.equals(res, "invalid username or password.")) { - JOptionPane.showMessageDialog( - parentComponent, - 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 (res.contains("RegistEditionException")) { - if (needMessage) { - JOptionPane.showMessageDialog( - parentComponent, - Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"}), - UIManager.getString("OptionPane.messageDialogTitle", parentComponent.getLocale()), - JOptionPane.ERROR_MESSAGE - ); - } else { - FRContext.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"})); - } - return false; - } else if (ComparatorUtils.equals(res, "war not support remote design.")) { - if (needMessage) { - JOptionPane.showMessageDialog( - parentComponent, - Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"}), - UIManager.getString("OptionPane.messageDialogTitle", parentComponent.getLocale()), - JOptionPane.ERROR_MESSAGE); + } 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 { - FRContext.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"})); + 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(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"})); + } else { + FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"})); + } + return false; + } } - return false; - } else { - throw new EnvException(res); } } - private void extraChangeEnvPara() { - //在env连接之前, 加载一下不依赖env的插件. 看看需不需要改变参数. - DesignerEnvProcessor envProcessor = ExtraDesignClassManager.getInstance().getSingle(DesignerEnvProcessor.XML_TAG); - if (envProcessor != null) { - this.path = envProcessor.changeEnvPathBeforeConnect(user, password, path); - } - } - private void setHttpsParas() { - if (path.startsWith(HTTPS_PREFIX) && System.getProperty(CERT_KEY) == null) { + 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()); } } - private void register2Server() { - try { - SignIn.signIn(this); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - } /** * 心跳访问,用来更新当前用户的访问时间 * * @throws Exception e */ - public void heartBeatConnection() throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "heart_beat"); - para.put("user", user); - - HttpClient client = createHttpMethod(para); - execute4InputStream(client); - - //这做法不好, 30秒刷一次, 刷新的时候会重新构建树, 构建完会把子节点都收缩起来, 效果太差. - //为什么不保存刷新前树的伸缩状态, 因为刷新后的树和刷新前的树的结构未必是一致的. - - //服务器通知客户端更新左上角文件树面板 -// try { -// if (ComparatorUtils.equals(stream2String(execute4InputStream(method)), "true")) { -// DesignerFrameFileDealerPane.getInstance().refresh(); -// } -// } catch (Exception e) { -// FRContext.getLogger().error(e.getMessage()); -// } - } /** * 返回描述该运行环境的名字 @@ -485,232 +273,6 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return Inter.getLocText("Env-Remote_Server"); } - /** - * 登录,返回userID - */ - @Override - public void signIn() throws Exception { - if (clock != null && clock.connected) { - return; - } - String remoteVersion = getDesignerVersion(); - if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { - throw new Exception("version not match"); - } - clearUserID(); - startLogTimer(); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "r_sign_in"); - para.put("user", user); - para.put("password", getEncodedPassword()); - - simulaRPC(para, true); - - //neil:调用Clock方法,10秒向服务器发送一个字节,确保没掉线 - if (clock == null) { - Clock clock = new Clock(this); - setClock(clock); - } - clock.start(); - - // 远程登录的心跳访问, 防止设计器强制关闭而没有Logout - if (timer != null) { - timer.cancel(); - } - timer = new Timer(); - timer.schedule(new TimerTask() { - @Override - public void run() { - try { - RemoteEnv.this.setThreadLocal("HEART_BEAT"); - RemoteEnv.this.heartBeatConnection(); - } catch (Exception e) { - FRContext.getLogger().error("Server may be disconnected.", e); - } - } - }, RemoteDeziConstants.HEARTBEAT_DELAY, RemoteDeziConstants.HEARTBEAT_DELAY); - } - - - private void startLogTimer() { - if (logTimer != null) { - logTimer.cancel(); - } - - logTimer = new Timer(); - logTimer.schedule(new TimerTask() { - @Override - public void run() { - try { - RemoteEnv.this.setThreadLocal("LOG_MESSAGE"); - FRContext.getCurrentEnv().printLogMessage(); - } catch (Exception e) { - FRContext.getLogger().info(e.getMessage()); - } - } - }, 10000, 10000); - } - - private void stopLogTimer() { - if (logTimer != null) { - logTimer.cancel(); - logTimer = null; - } - } - - /** - * 根据userID sign out - * - * @return 成功签出返回true - * @throws Exception e - */ - @Override - public boolean signOut() throws Exception { - if (userID == null) { - return true; - } - stopLogTimer(); - // richer:登出的时候就把定时发送的时钟停掉 - clock.stop(); - // richer:把轮训使用的定时器也去掉 - timer.cancel(); - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "r_sign_out"); - para.put("id", userID); - - return simulaRPC(para, false - ); - } - - protected boolean simulaRPC(HashMap para, boolean isSignIn) throws Exception { - HttpClient client = createHttpMethod(para, isSignIn); - - // execute method取到input stream再转成String - String resJSON = null; - try { - resJSON = stream2String(execute4InputStream(client)); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - - if (resJSON == null) { - return false; - } - if (resJSON.contains("RegistEditionException")) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Lic_does_not_Support_Remote")); - return false; - } - try { - JSONObject jo = new JSONObject(resJSON); - - if (isSignIn) { - if (jo.has("id")) { - userID = jo.getString("id"); - } - if (jo.has("isRoot")) { - isRoot = jo.getBoolean("isRoot"); - } - - if (userID != null) { - return true; - } - } else { - if (jo.has("res")) { - return jo.getBoolean("res"); - } - } - String exception = jo.getString("exp"); - if (exception != null) { - throw new EnvException(exception); - } - } catch (JSONException je) { - // 返回的resJSON不是JSON格式的,那就直接返回resJSON作为userID - return true; - } - - return true; - } - - protected boolean doLockOperation(String[] filePathes, String cmd) throws Exception { - if (filePathes == null || filePathes.length == 0) { - return true; - } - - JSONArray ja = new JSONArray(filePathes); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", cmd); - para.put("pathes", ja.toString()); - - return simulaRPC(para, false); - } - - /** - * 取路径filePath下面文件的lock - *

- * 处于同一个原子操作,要么拿到所有的锁,要么一个锁也没有拿到 - */ - public boolean getLock(String[] filePathes) throws Exception { - return doLockOperation(filePathes, "design_get_lock"); - } - - /** - * 解锁文件 - * - * @param filePathes 文件路径 - * @return 成功解锁返回true - * @throws Exception e - */ - public boolean releaseLock(String[] filePathes) throws Exception { - return doLockOperation(filePathes, "design_release_lock"); - } - - /** - * 当前Env下,tplPath目录下是否存在模板 - * - * @param reportPath 路径 - * @return 是否存在 - */ - @Override - public boolean isTemplateExist(String reportPath) throws Exception { - if (reportPath == null) { - return false; - } - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_report_exist"); - para.put("report_path", reportPath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - return ComparatorUtils.equals(stream2String(input), "true"); - } - - /** - * 解锁当前模板,用于远程设计。当远程设计某张模板 时,在解锁之前改模板处于锁定状态 - * - * @param tplPath 路径 - * @throws Exception e - */ - @Override - public void unlockTemplate(String tplPath) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_close_report"); - para.put(RemoteDeziConstants.TEMPLATE_PATH, tplPath); - HttpClient client = createHttpMethod(para); - - InputStream input = execute4InputStream(client); - String info = Utils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8); - - FRContext.getLogger().error(info); - } - public class Bytes2ServerOutputStream extends OutputStream { private ByteArrayOutputStream out = new ByteArrayOutputStream(); private HashMap nameValuePairs; @@ -740,7 +302,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl try { return postBytes2Server(out.toByteArray(), nameValuePairs); } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); return false; } } @@ -768,287 +330,33 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl } } - /** - * 测试数据连接是否能够正确的连接上 - * - * @param database 数据连接 - * @return 如果能正确的连接到数据库则返回true - * @throws Exception 无法正确连接到数据库则抛出此异常 - * TODO alex_ENV 个人以为,这里应该是测试所有Connection的连接,所以Connection与TableData接口的关联需要思考 - */ @Override - public boolean testConnection(com.fr.data.impl.Connection database) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - // 把database写成xml文件到out - DavXMLUtils.writeXMLFileDatabaseConnection(database, out); - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_test_con"); - - InputStream input = postBytes2ServerB(out.toByteArray(), para); - - if (input == null) { - return false; + 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 Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - @Override - public boolean updateAuthorities(DesignAuthority[] authorities) throws Exception { - return RemoteEnvUtils.updateAuthorities(authorities, this); + return StringUtils.isNotEmpty(res) && Boolean.valueOf(res); } @Override public DesignAuthority[] getAuthorities() { - - return RemoteEnvUtils.getAuthorities(this); - - } - - /** - * ben:取schema - */ - @Override - public String[] getTableSchema(com.fr.data.impl.Connection database) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - DavXMLUtils.writeXMLFileDatabaseConnection(database, out); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_schema"); - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return null; - } - return DavXMLUtils.readXMLFileSchema(input); - } - - /** - * b:分别取Table,View,Procedure,实际应用时更有意义 - */ - @Override - public TableProcedure[] getTableProcedure(com.fr.data.impl.Connection database, String type, String schema) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - DavXMLUtils.writeXMLFileDatabaseConnection(database, out); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_tables"); - para.put("__type__", type); - para.put("__dbschema__", schema); - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return new TableProcedure[0]; - } - return DavXMLUtils.readXMLSQLTables(input); - } - - @Override - public List getProcedures(com.fr.data.impl.Connection datasource, String[] schemas, boolean isOracle, boolean isOracleSysSpace) throws Exception { - HashMap schemaTableProcedureMap = new HashMap(); - List sqlTableObjs = new ArrayList(); - TableProcedure[] sqlTableObj = null; - int len = schemas.length; - if (len > 0) { - for (int i = 0; i < len; i++) { - String schema = schemas[i]; - sqlTableObj = this.getTableProcedure(datasource, TableProcedure.PROCEDURE, schema); - if (sqlTableObj == null) { - sqlTableObj = new TableProcedure[0]; - } - sqlTableObjs.add(sqlTableObj); - schemaTableProcedureMap.put(schema, sqlTableObj); - } - } else { - sqlTableObj = this.getTableProcedure(datasource, TableProcedure.PROCEDURE, null); - if (sqlTableObj == null) { - sqlTableObj = new TableProcedure[0]; - } - sqlTableObjs.add(sqlTableObj); - schemaTableProcedureMap.put(null, sqlTableObj); - } - DataCoreUtils.putProcedureMap(datasource, schemaTableProcedureMap); - return sqlTableObjs; - } - - /** - * 在当前路径下新建文件夹 - * - * @param folderPath 文件名 - * @return 成功创建返回true - * @throws Exception e - */ - @Override - public boolean createFolder(String folderPath) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_create_folder"); - para.put("folder_path", folderPath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - /** - * 新建一个文件 - * - * @param filePath :目标文件相对路径 - * @return 成功新建返回true - * @throws Exception e - */ - @Override - public boolean createFile(String filePath) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_create_file"); - para.put("file_path", filePath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - @Override - public boolean renameFile(String newPath, String oldPath) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_rename_file"); - para.put("newPath", newPath); - para.put("oldPath", oldPath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - /** - * 判断文件是否存在 - * - * @param filePath :目标文件相对路径 - * @return 文件是否存在 - * @throws Exception e - */ - @Override - public boolean fileExists(String filePath) throws Exception { - if (filePath == null) { - return false; - } - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_file_exists"); - para.put("file_path", filePath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - /** - * 判断文件是否锁住 - * - * @param filePath 文件路径 - * @return 文件被锁住了,返回true - * @throws Exception e - */ - @Override - public boolean fileLocked(String filePath) throws Exception { - if (filePath == null) { - return false; - } - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_file_locked"); - para.put("file_path", filePath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } - - - /** - * 注册环境,用于检测是否启动定时器,主要用于本地环境来监测远程 - * - * @param env 用户环境 - */ - @Override - public void registerUserEnv(UserBaseEnv env) { - } - - /** - * 用于检测用户环境 - * ,启动定时器 - */ - @Override - public void startUserCheckTimer() { - } - - - /** - * 停止定时器 - */ - public void stopUserCheckTimer() { - } - - /** - * 删除文件 - * - * @param filePath 文件地址 - * @return 删除成功返回true - */ - @Override - public boolean deleteFile(String filePath) { - if (filePath == null) { - return false; - } + refreshHttpSProperty(); + DesignAuthority[] authorities = new DesignAuthority[0]; try { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "delete_file"); - para.put("file_path", filePath); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); + InputStream inputStream = RemoteEnvUtils.getAuthorities(this); + inputStream = filterInputStream(inputStream); + authorities = AuthorityXMLUtils.readDesignAuthoritiesXML(inputStream); + return authorities; } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } - return false; + return authorities; } /** @@ -1060,17 +368,19 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl * @throws Exception e */ public boolean writePrivilegeMap(String key, String value) throws Exception { + refreshHttpSProperty(); HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "write_privilege_map"); - para.put("current_user", this.user); - para.put("current_password", this.password); + para.put("current_user", getUser()); + para.put("current_password", getPassword()); para.put("key", key); para.put("value", value); //jim :加上user,远程设计点击预览时传递用户角色信息 - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); if (input == null) { return false; @@ -1084,198 +394,38 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl */ @Override public void removeNoPrivilegeConnection() { + refreshHttpSProperty(); TableDataConfig dm = TableDataConfig.getInstance(); - try { - HashMap para = new HashMap<>(); - para.put("op", "fs_remote_design"); - para.put("cmd", "env_get_role"); - para.put("currentUsername", this.getUser()); - para.put("currentPwd", this.getPassword()); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - JSONArray ja = new JSONArray(stream2String(input)); - ArrayList toBeRemoveTDName = new ArrayList<>(); - for (int i = 0; i < ja.length(); i++) { - String toBeRemoveConnName = (String) ((JSONObject) ja.get(i)).get("name"); - ConnectionConfig.getInstance().removeConnection(toBeRemoveConnName); - Iterator it = dm.getTableDatas().keySet().iterator(); - while (it.hasNext()) { - String tdName = (String) it.next(); - TableData td = dm.getTableData(tdName); - td.registerNoPrivilege(toBeRemoveTDName, toBeRemoveConnName, tdName); - } - } - - for (int i = 0; i < toBeRemoveTDName.size(); i++) { - dm.removeTableData(toBeRemoveTDName.get(i)); - } - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - } - - /** - * 列出WEB-INF目录下指定路径的文件夹与文件 - * - * @param rootFilePath 指定目录 - * @return WEB-INF目录下指定路径的文件夹与文件 - * @throws Exception e - */ - @Override - public FileNode[] listFile(String rootFilePath) throws Exception { - return listFile(rootFilePath, false); - } - - /** - * 列出WEB-INF上层目录下指定路径的文件夹与文件 - * - * @param rootFilePath 指定目录 - * @return WEB-INF上层目录下指定路径的文件夹与文件 - * @throws Exception e - */ - @Override - public FileNode[] listReportPathFile(String rootFilePath) throws Exception { - return listFile(rootFilePath, true); - } - - private FileNode[] listFile(String rootFilePath, boolean isWebReport) throws Exception { - FileNode[] fileNodes; - - HashMap para = new HashMap<>(); - para.put("op", "fs_remote_design"); - para.put("cmd", "design_list_file"); - para.put("file_path", rootFilePath); - para.put("currentUserName", this.getUser()); - para.put("currentUserId", this.createUserID()); - para.put("isWebReport", isWebReport ? "true" : "false"); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return new FileNode[0]; - } - - // 远程环境下左侧目录树暂不需要打开xlsx,xls文件 - fileNodes = DavXMLUtils.readXMLFileNodes(input); - ArrayList al = new ArrayList<>(); - for (int i = 0; i < fileNodes.length; i++) { - al.add(fileNodes[i]); - } - - FileNode[] fileNodes2 = new FileNode[al.size()]; - for (int i = 0; i < al.size(); i++) { - fileNodes2[i] = al.get(i); - } - - return fileNodes2; - } - - - /** - * 列出目标目录下所有cpt文件或文件夹 - * - * @param rootFilePath 指定目录 - * @return 列出目标目录下所有cpt文件或文件夹 - */ - @Override - public FileNode[] listCpt(String rootFilePath) { - return listCpt(rootFilePath, false); - } - - /** - * 列出目标目录下所有cpt文件或文件夹 - * - * @param rootFilePath 指定目录 - * @param recurse 是否递归查找其子目录 - * @return 列出目标目录下所有cpt文件或文件夹 - * @throws Exception e - */ - @Override - public FileNode[] listCpt(String rootFilePath, boolean recurse) { - List fileNodeList = new ArrayList<>(); - try { - listAll(rootFilePath, fileNodeList, new String[]{"cpt"}, recurse); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - return fileNodeList.toArray(new FileNode[fileNodeList.size()]); - } - - private void listAll(String rootFilePath, List nodeList, String[] fileTypes, boolean recurse) throws Exception { - FileNode[] fns = listFile(rootFilePath); - for (FileNode fileNode : fns) { - if (isAcceptFileType(fileNode, fileTypes)) { - nodeList.add(fileNode); - } else if (fileNode.isDirectory()) { - if (recurse) { - listAll(rootFilePath + File.separator + fileNode.getName(), nodeList, fileTypes, true); - } else { - nodeList.add(fileNode); - } - } - } - } - - private boolean isAcceptFileType(FileNode fileNode, String[] fileTypes) { - for (String fileType : fileTypes) { - if (fileNode.isFileType(fileType)) { - return true; - } - } - return false; - } - - /** - * 获取指定数据集的参数 - * - * @param tableData 数据集 - * @return 数据集的参数 - * @throws Exception 获取参数失败则抛出此异常 - */ - @Override - public Parameter[] getTableDataParameters(TableData tableData) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - //把tableData写成xml文件到out - DavXMLUtils.writeXMLFileTableData(tableData, out); - - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_td_pars"); - InputStream input = postBytes2ServerB(out.toByteArray(), para); - - if (input == null) { - return new Parameter[0]; - } - return DavXMLUtils.readXMLParameters(input); - } - - - /** - * 获取存储过程中的参数 - * - * @param storeProcedure 存储过程 - * @return 返回存储过程中的所有参数组成的数组 - * @throws Exception 如果获取参数失败则抛出此异常 - */ - @Override - public Parameter[] getStoreProcedureParameters(StoreProcedure storeProcedure) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + HashMap para = new HashMap<>(); + para.put("op", "fs_remote_design"); + para.put("cmd", "env_get_role"); + para.put("currentUsername", this.getUser()); + para.put("currentPwd", this.getPassword()); - // 把tableData写成xml文件到out - DavXMLUtils.writeXMLFileStoreProcedureAndSource(storeProcedure, out); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_sp_pars"); - InputStream input = postBytes2ServerB(out.toByteArray(), para); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); + JSONArray ja = new JSONArray(stream2String(input)); + ArrayList toBeRemoveTDName = new ArrayList<>(); + for (int i = 0; i < ja.length(); i++) { + String toBeRemoveConnName = (String) ((JSONObject) ja.get(i)).get("name"); + ConnectionConfig.getInstance().removeConnection(toBeRemoveConnName); + Iterator it = dm.getTableDatas().keySet().iterator(); + while (it.hasNext()) { + String tdName = (String) it.next(); + TableData td = dm.getTableData(tdName); + td.registerNoPrivilege(toBeRemoveTDName, toBeRemoveConnName, tdName); + } + } - if (input == null) { - return new Parameter[0]; + for (int i = 0; i < toBeRemoveTDName.size(); i++) { + dm.removeTableData(toBeRemoveTDName.get(i)); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage()); } - return DavXMLUtils.readXMLParameters(input); } @Override @@ -1347,173 +497,8 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl * @throws Exception 异常 */ public InputStream postBytes2ServerB(byte[] bytes, HashMap para) throws Exception { - HttpClient client = createHttpMethod2(para); - /* - todo post 方法好象过去不了 - 但是get方法也会有一些url参数问题,尤其是图表部分 - 比如: - op=fr_remote_design&cmd=design_get_plugin_service_data&serviceID=plugin.phantomjs&req= - */ -// client.asGet(); - client.setContent(bytes); - return execute4InputStream(client); - } - - /** - * Read XML.
- * The method will be invoked when read data from XML file.
- * May override the method to read the data that you saved. - */ - @Override - public void readXML(XMLableReader reader) { - if (reader.isChildNode()) { - String tmpVal; - if ("DIR".equals(reader.getTagName())) { - if ((tmpVal = reader.getAttrAsString("path", null)) != null) { - this.path = tmpVal; - } - if ((tmpVal = reader.getAttrAsString("user", null)) != null) { - this.user = tmpVal; - } - if ((tmpVal = reader.getAttrAsString("password", null)) != null) { - this.password = tmpVal; - } - } - } - } - - /** - * Write XML.
- * The method will be invoked when save data to XML file.
- * May override the method to save your own data. - * - * @param writer the PrintWriter. - */ - @Override - public void writeXML(XMLPrintWriter writer) { - writer.startTAG("DIR").attr("path", this.path).attr("user", this.user).attr("password", this.password).end(); - } - - - public static class Clock { - - private static final long CONNECT_INTERVAL = 3000L; - private boolean connected = false; - - private RemoteEnv remoteEnv; - - public Clock(RemoteEnv remoteEnv) { - this.remoteEnv = remoteEnv; - } - - /** - * 开始连接 - */ - public void start() { - if (connected) { - return; - } - connected = true; - - new Thread(new Runnable() { - @Override - public void run() { - // richie:连续三次尝试连接都没有响应才判定为丢失连接 - while (connected) { - try { - attemptConnect(); - } catch (Exception ex) { - try { - attemptConnect(); - } catch (Exception ee) { - try { - attemptConnect(); - } catch (Exception exc) { - stop(); - if (exc instanceof NoRouteToHostException) { - //网络问题导致的连接中断 - if (JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Remote_Connect2Server_Again"), UIManager.getString("OptionPane.titleText"), JOptionPane.YES_NO_OPTION) - == JOptionPane.OK_OPTION) { - //调用重新连接服务器的方法 - connectedAgain(); - } - } else { - //服务器关闭引起的连接中断 - if (JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Remote_Re_Connect_to_Server"), UIManager.getString("OptionPane.titleText"), JOptionPane.YES_NO_OPTION) - == JOptionPane.OK_OPTION) { - //调用重新连接服务器的方法 - connectedAgain(); - } - } - } - } - } - } - } - }).start(); - } - - /** - * 服务器连接中断后重新连接 - */ - private void connectedAgain() { - try { - if (!remoteEnv.testServerConnectionWithOutShowMessagePane()) { - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"Datasource-Connection_failed", "check_communication"}, - new String[]{",", "!"})); - DesignerFrameFileDealerPane.getInstance().refresh(); - return; - } - String remoteVersion = remoteEnv.getDesignerVersion(); - if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { - String infor = Inter.getLocText("FR-Server_Version_Tip"); - String moreInfo = Inter.getLocText("FR-Server_Version_Tip_MoreInfo"); - FRContext.getLogger().log(Level.WARNING, infor); - new InformationWarnPane(infor, moreInfo, Inter.getLocText("FR-Designer_Tooltips")).show(); - return; - } - SignIn.signIn(remoteEnv); - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); - } catch (Exception em) { - FRContext.getLogger().error(em.getMessage(), em); - } - } - - /** - * 停止连接 - */ - public void stop() { - connected = false; - } - - private void attemptConnect() throws Exception { - Thread.sleep(CONNECT_INTERVAL); - Pattern pattern = Pattern.compile("[/:]+"); - String[] strs = pattern.split(remoteEnv.path); - - //host,如:192.168.100.195 - String shost = strs[1]; - //端口,如:8080 - int sport = Integer.parseInt(strs[2]); - - Socket socket = new Socket(shost, sport); - //OOBBINLINE:是否支持发送一个字节的TCP紧急数据,false表示服务器不用处理这个数据 - socket.setOOBInline(false); - socket.sendUrgentData(0xFF); - socket.close(); - } - } - - /** - * 读报表运行环境所需的配置文件,如datasource.xml, config.xml,这些文件都保存在WEB-INF/resources目录下面 - * - * @param resourceName 配置文件的名字,如datasource.xml - * @return 输入流 - * @throws Exception e - */ - @Override - public InputStream readResource(String resourceName) throws Exception { - return readBean(resourceName, ProjectConstants.RESOURCES_NAME); + refreshHttpSProperty(); + return filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this)); } @@ -1525,36 +510,37 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl */ @Override public String[] readPathSvgFiles(String path) { + refreshHttpSProperty(); String cataloguePath = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getPath(), SvgProvider.SERVER, path); - ArrayList fileArray = new ArrayList<>(); try { HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_read_svgfile"); para.put("resourcePath", path); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + 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 svgFileContent = (String) jsonObject.get("svgfileContent"); String file = StableUtils.pathJoin(cataloguePath, svgFileName); - InputStream in = new ByteArrayInputStream(svgfileContent.getBytes(EncodeConstants.ENCODING_UTF_8)); + InputStream in = new ByteArrayInputStream(svgFileContent.getBytes(EncodeConstants.ENCODING_UTF_8)); ResourceIOUtils.write(file, in); fileArray.add(file); } } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } - return fileArray.toArray(new String[fileArray.size()]); + return fileArray.toArray(new String[0]); } @@ -1573,7 +559,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl para.put("op", "svgrelate"); para.put("cmd", "design_save_svg"); para.put("filePath", svgFile.getFilePath()); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); // 通过ByteArrayOutputStream将svg写成字节流 @@ -1587,24 +573,24 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl try { xformer.transform(source, result); } catch (TransformerException ex) { - FRContext.getLogger().error(ex.getMessage()); + FineLoggerFactory.getLogger().error(ex.getMessage()); } } catch (TransformerConfigurationException ex) { - FRContext.getLogger().error(ex.getMessage()); + FineLoggerFactory.getLogger().error(ex.getMessage()); return false; } try { - HttpClient client = createHttpMethod2(out.getNameValuePairs()); - client.setContent(out.getOut().toByteArray()); - String res = stream2String(execute4InputStream(client)); + 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) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } @@ -1627,7 +613,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl para.put("cmd", "design_save_resource"); para.put("resource", mgr.fileName()); para.put("class_name", mgr.getClass().getName()); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); // alex:通过ByteArrayOutputStream将mgr写成字节流 @@ -1635,15 +621,17 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl XMLTools.writeOutputStreamXML(mgr, out); try { - HttpClient client = createHttpMethod2(out.getNameValuePairs()); - client.setContent(out.getOut().toByteArray()); - String res = stream2String(execute4InputStream(client)); + 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) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } @@ -1660,16 +648,14 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public InputStream readBean(String beanPath, String prefix) throws Exception { + refreshHttpSProperty(); HashMap para = new HashMap<>(); para.put("op", "fs_remote_design"); para.put("cmd", "design_open"); para.put(RemoteDeziConstants.PREFXI, prefix); para.put("resource", beanPath); - HttpClient client = createHttpMethod(para); - // return Utils.toZipIn(execute4InputStream(method)); - //Utils.toZipIn这边有bug,远程连接的时候datasource.xml不能读取,先还原了 - return execute4InputStream(client); + return filterInputStream(RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)); } /** @@ -1690,36 +676,6 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return new Bytes2ServerOutputStream(para); } - /** - * 返回数据库表的列名 - * - * @param selectedName 所选择数据库名 - * @param schema 数据库模式,用于存储过程 - * @param tableName 所选择数据库名 - */ - @Override - public String[] getColumns(String selectedName, String schema, String tableName) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_columns"); - para.put("dsName", selectedName); - para.put("schema", schema); - para.put("tableName", tableName); - - HttpClient client = createHttpMethod2(para); - InputStream input = execute4InputStream(client); - - if (input == null) { - return null; - } - - String colums = stream2String(input); - if (StringUtils.isEmpty(colums)) { - return null; - } - return colums.split("\\."); - } - /** * 返回模板文件路径 */ @@ -1728,104 +684,16 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return getPath().substring(0, getPath().lastIndexOf("/")); } - @Override - public String getProcedureText(String connectionName, String databaseName) throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_procedure_text"); - para.put("procedure_name", databaseName); - para.put("connectionName", connectionName); - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return StringUtils.EMPTY; - } - return DavXMLUtils.readXMLProcedureText(input); - } - - @Override - public StoreProcedureParameter[] getStoreProcedureDeclarationParameters(String connectionName, String databaseName, String parameterDefaultValue) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_sp_parameters"); - para.put("__name__", databaseName); - para.put("__default_value__", parameterDefaultValue); - para.put("connectionName", connectionName); - - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return new StoreProcedureParameter[0]; - } - return DavXMLUtils.readXMLStoreProcedureParameters(input); - } - - /** - * 获取datasource.xml文件的修改表 - */ - @Override - public ModifiedTable getDataSourceModifiedTables(String type) { - try { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "get_datasource_modified_tables"); - para.put("type", type); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - if (input == null) { - return new ModifiedTable(); - } - return DavXMLUtils.readXMLModifiedTables(input); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - return new ModifiedTable(); - } - - - /** - * 写修改表 - * - * @param modifiedTable 修改表 - * @param type 操作类型,是数据连接还是服务器数据集 - * @return 写入成功返回true - */ - @Override - public boolean writeDataSourceModifiedTables(ModifiedTable modifiedTable, String type) { - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - // 把tableData写成xml文件到out - DavXMLUtils.writeXMLModifiedTables(modifiedTable, out); - try { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "update_modifytable_to_server"); - para.put("type", type); - - InputStream input = postBytes2ServerB(out.toByteArray(), para); - - if (input == null) { - return false; - } - - return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - return false; - } - - public String[] getProcedureColumns(StoreProcedure storeProcedure, java.util.Map parameterMap) throws Exception { + public String[] getProcedureColumns(StoreProcedure storeProcedure, Map parameterMap) throws Exception { + refreshHttpSProperty(); String[] columns; HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "list_sp"); - HttpClient client = createHttpMethod(para); try { - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); if (input == null) { return ArrayUtils.EMPTY_STRING_ARRAY; @@ -1834,28 +702,30 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl columns = DavXMLUtils.readXMLSPColumns(input); return columns; } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return new String[0]; } public String[] getProcedureColumns(String name) throws Exception { + refreshHttpSProperty(); String[] columns; HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "list_sp_columns_name"); para.put("name", name); - HttpClient client = createHttpMethod(para); try { - InputStream input = execute4InputStream(client); + 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) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return new String[0]; @@ -1864,7 +734,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl /** * 输出日志信息 * - * @throws Exception + * @throws Exception e */ @Override public void printLogMessage() throws Exception { @@ -1878,91 +748,6 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return; } LogRecordTime[] records = LogUtils.readXMLLogRecords(input); - for (LogRecordTime logRecordTime : records) { - //TODO - } - } - - @Override - public String getUserID() { - return userID; - } - - - /** - * 预览存储过程 - * - * @param storeProcedure 存储过程 - * @param parameterMap 参数map - * @param rowCount 行数 - * @return 返回取到的存储过程 - */ - @Override - public ProcedureDataModel[] previewProcedureDataModel(StoreProcedure storeProcedure, Map parameterMap, int rowCount) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - // 把tableData写成xml文件到out - DavXMLUtils.writeXMLFileStoreProcedureAndSource(storeProcedure, out); - - // 把parameterMap转成JSON格式的字符串 - JSONObject jo = new JSONObject(parameterMap); - String jsonParameter = jo.toString(); - - try { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "list_sp"); - para.put("pars", jsonParameter); - - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return null; - } - - TableData[] tableDatas = DavXMLUtils.readXMLTableDataArray(input); - if (tableDatas == null || tableDatas.length == 0) { - return new ProcedureDataModel[0]; - } - ProcedureDataModel[] procedureDataModels = new ProcedureDataModel[tableDatas.length]; - for (int i = 0; i < tableDatas.length; i++) { - if (tableDatas[i] instanceof EmbeddedTableData) { - procedureDataModels[i] = ((EmbeddedTableData) tableDatas[i]).trans2ProcedureDataModel(); - } - } - return procedureDataModels; - - - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - return new ProcedureDataModel[0]; - } - - - @Override - public String getAppName() { - return "WebReport"; - } - - /** - * 是否为Oracle数据连接 - * - * @param database 数据连接 - * @return 是返回true - * @throws Exception - */ - @Override - public boolean isOracle(Connection database) throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - DavXMLUtils.writeXMLFileDatabaseConnection(database, out); - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_isOracle"); - InputStream input = postBytes2ServerB(out.toByteArray(), para); - if (input == null) { - return true; - } - return DavXMLUtils.readXMLBoolean(input); } @Override @@ -1970,15 +755,6 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return FILE_TYPE; } - /** - * 在模板面板中是否支持增加打开所在文件夹、重命名、删除三个工具栏选项 - * - * @return 不支持返回false - */ - @Override - public boolean isSupportLocalFileOperate() { - return false; - } /** * 判断是否有文件夹权限 @@ -1988,65 +764,29 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl */ @Override public boolean hasFileFolderAllow(String path) { - HttpClient client = null; + refreshHttpSProperty(); try { HashMap para = new HashMap<>(); para.put("op", "fs_remote_design"); para.put("cmd", "design_filefolder_allow"); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put(RemoteDeziConstants.TEMPLATE_PATH, path); - client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); if (input == null) { return false; } return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8)); } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } } - /** - * 是否是管理员身份 - * - * @return 是则返回true - */ - @Override - public boolean isRoot() { - return isRoot; - } - - /** - * 是否为压缩包部署 - * - * @return 是则返回true - */ - @Override - public boolean isPackDeploy() { - return false; - } - - @Override - public String getDesignerVersion() throws Exception { - HashMap para = new HashMap<>(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_designer_version"); - para.put("user", user); - para.put("password", getEncodedPassword()); - - HttpClient client = createHttpMethod(para, true); - try { - return stream2String(execute4InputStream(client)); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - return null; - } - @Override public InputStream getDataSourceInputStream(String filePath) throws Exception { return readBean(filePath, "datasource"); @@ -2055,35 +795,28 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public ArrayList getAllRole4Privilege(boolean isFS) { - ArrayList allRoleList = new ArrayList(); + refreshHttpSProperty(); + ArrayList allRoleList = new ArrayList<>(); try { HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "get_all_role"); para.put("isFS", String.valueOf(isFS)); - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); JSONArray ja = new JSONArray(stream2String(input)); for (int i = 0; i < ja.length(); i++) { String roleName = (String) ((JSONObject) ja.get(i)).get("name"); allRoleList.add(roleName); } } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return allRoleList; } - @Override - public String getLicName() { - return License.FILE_NAME; - } - - @Override - public void setLicName(String licName) { - //do nth - } /** @@ -2129,14 +862,16 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public String pluginServiceAction(String serviceID, String req) throws Exception { + refreshHttpSProperty(); HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_get_plugin_service_data"); para.put("serviceID", serviceID); para.put("req", req); //jim :加上user,远程设计点击预览时传递用户角色信息 - HttpClient client = createHttpMethod(para); - InputStream inputStream = execute4InputStream(client); + InputStream inputStream = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpPost(para, false, this) + ); return IOUtils.inputStream2String(inputStream); } @@ -2152,6 +887,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public String[] loadREUFile() { + refreshHttpSProperty(); ResourceIOUtils.delete(StableUtils.pathJoin( CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(), ShareConstants.DIR_SHARE_CACHE)); @@ -2161,12 +897,11 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_read_reufile"); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); - HttpClient client = createHttpMethod(para); //拿到服务端传过来的整个共享文件夹的压缩文件的文件流 - InputStream input = client.getResponseStream(); + 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); @@ -2183,7 +918,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl }); } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } finally { if (zipFilePath != null) { @@ -2196,6 +931,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public boolean installREUFile(File reuFile) { + refreshHttpSProperty(); if (reuFile == null) { return false; } @@ -2207,18 +943,27 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_install_reufile"); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); para.put("reuFileName", reuFile.getName()); - HttpClient client = createHttpMethod(para); - client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(shareXMLName)))); - InputStream input = execute4InputStream(client); - client.release(); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpPost( + IOUtils.inputStream2Bytes( + new FileInputStream(new File(shareXMLName)) + ) + , para, + false, + this) + ); para.put("isComplete", "true"); - HttpClient client1 = createHttpMethod(para); - client1.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(helpXMLName)))); - InputStream input1 = execute4InputStream(client1); + 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; @@ -2227,6 +972,7 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public boolean removeREUFilesByName(String fileName) { + refreshHttpSProperty(); if (StringUtils.isEmpty(fileName)) { return true; } @@ -2234,12 +980,13 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_remove_reufile"); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); para.put("reuFileName", fileName); - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); return ComparatorUtils.equals(stream2String(input), "true"); } catch (Exception e) { return false; @@ -2248,31 +995,23 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl @Override public String getSharePath() { + refreshHttpSProperty(); try { HashMap para = new HashMap<>(); para.put("op", "fr_remote_design"); para.put("cmd", "design_get_share_path"); - para.put("current_uid", this.createUserID()); + para.put("current_uid", this.getUserID()); para.put("currentUsername", this.getUser()); - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); + InputStream input = filterInputStream( + RemoteEnvUtils.simulateRPCByHttpGet(para, false, this) + ); return stream2String(input); } catch (Exception e) { return StringUtils.EMPTY; } } - @Override - public void doWhenServerShutDown() { - - } - - @Override - public boolean isLocalEnv() { - - return false; - } @Override public boolean hasPluginServiceStarted(String key) { @@ -2280,21 +1019,4 @@ public class RemoteEnv extends AbstractEnv implements DesignAuthorityConfigurabl return true; } - @Override - public JSONArray getPluginStatus() { - - try { - HashMap para = new HashMap<>(); - para.put("op", "plugin"); - para.put("cmd", "get_status"); - para.put("current_uid", this.createUserID()); - para.put("currentUsername", this.getUser()); - - HttpClient client = createHttpMethod(para); - InputStream input = execute4InputStream(client); - return new JSONArray(stream2String(input)); - } catch (Exception e) { - return JSONArray.create(); - } - } } \ No newline at end of file diff --git a/designer-base/src/com/fr/env/RemoteEnvPane.java b/designer-base/src/com/fr/env/RemoteEnvPane.java index 12fb4d2b4..20ca4715a 100644 --- a/designer-base/src/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/com/fr/env/RemoteEnvPane.java @@ -1,6 +1,8 @@ package com.fr.env; import com.fr.base.FRContext; +import com.fr.base.env.resource.EnvConfigUtils; +import com.fr.base.env.resource.RemoteEnvConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.border.UITitledBorder; @@ -49,7 +51,7 @@ import static com.fr.design.layout.TableLayout.PREFERRED; /** * @author yaohwu */ -public class RemoteEnvPane extends BasicBeanPane { +public class RemoteEnvPane extends BasicBeanPane { private static final Color TIPS_FONT_COLOR = new Color(0x8f8f92); @@ -100,7 +102,7 @@ public class RemoteEnvPane extends BasicBeanPane { /** * 主机位置 */ - private RemoteEnvURL remoteEnvURL; + private RemoteEnvURL remoteEnvURL = new RemoteEnvURL(""); /** * https 配置面板 */ @@ -151,6 +153,7 @@ public class RemoteEnvPane extends BasicBeanPane { @Override public void removeUpdate(DocumentEvent e) { + actionURLInputChange(); } @@ -250,7 +253,7 @@ public class RemoteEnvPane extends BasicBeanPane { } @Override - public void populateBean(RemoteEnv ob) { + public void populateBean(RemoteEnvConfig ob) { if (StringUtils.isEmpty(ob.getPath())) { remoteEnvURL = RemoteEnvURL.createDefaultURL(); @@ -265,18 +268,20 @@ public class RemoteEnvPane extends BasicBeanPane { fileChooserButton.setEnabled(remoteEnvURL.getHttps()); updateHttpsConfigPanel(); - this.usernameInput.setText(ob.getUser() == null ? StringUtils.EMPTY : ob.getUser()); + String username = EnvConfigUtils.getUsername(ob); + String pwd = EnvConfigUtils.getPassword(ob); + this.usernameInput.setText(username == null ? StringUtils.EMPTY : pwd); this.passwordInput.setText(ob.getPassword() == null ? StringUtils.EMPTY : ob.getPassword()); } @Override - public RemoteEnv updateBean() { + public RemoteEnvConfig updateBean() { String path = remoteEnvURL.getURL(); String user = this.usernameInput.getText(); String password = new String(this.passwordInput.getPassword()); - return new RemoteEnv(path, user, password); + return new RemoteEnvConfig(path, user, password); } @Override @@ -465,11 +470,8 @@ public class RemoteEnvPane extends BasicBeanPane { } private boolean testConnection() { - RemoteEnv env = new RemoteEnv(); String url = remoteEnvURL.getURL(); - env.setPath(url); - env.setUser(usernameInput.getText()); - env.setPassword(new String(passwordInput.getPassword())); + RemoteEnv env = new RemoteEnv(url, usernameInput.getText(), new String(passwordInput.getPassword())); boolean connect = false; try { if (StringUtils.isNotEmpty(url)) { diff --git a/designer-base/src/com/fr/env/RemoteEnvUtils.java b/designer-base/src/com/fr/env/RemoteEnvUtils.java index d22150bd8..cf6b2d657 100644 --- a/designer-base/src/com/fr/env/RemoteEnvUtils.java +++ b/designer-base/src/com/fr/env/RemoteEnvUtils.java @@ -1,86 +1,167 @@ package com.fr.env; +import com.fr.base.EnvException; import com.fr.base.FRContext; -import com.fr.general.IOUtils; import com.fr.report.DesignAuthority; +import com.fr.report.util.AuthorityXMLUtils; import com.fr.stable.EncodeConstants; -import com.fr.third.org.apache.http.HttpEntity; -import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse; +import com.fr.third.org.apache.commons.io.IOUtils; +import com.fr.third.org.apache.http.HttpResponse; +import com.fr.third.org.apache.http.HttpStatus; +import com.fr.third.org.apache.http.client.ClientProtocolException; +import com.fr.third.org.apache.http.client.ResponseHandler; import com.fr.third.org.apache.http.client.methods.HttpUriRequest; import com.fr.third.org.apache.http.client.methods.RequestBuilder; import com.fr.third.org.apache.http.entity.ContentType; import com.fr.third.org.apache.http.entity.InputStreamEntity; import com.fr.third.org.apache.http.impl.client.CloseableHttpClient; import com.fr.third.org.apache.http.impl.client.HttpClients; -import com.fr.third.org.apache.http.util.EntityUtils; -import com.fr.web.utils.AuthorityXMLUtils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.util.Map; public class RemoteEnvUtils { private RemoteEnvUtils() { } - public static boolean updateAuthorities(DesignAuthority[] authorities, RemoteEnv env) { + private static ResponseHandler responseHandler = new ResponseHandler() { + @Override + public InputStream handleResponse(HttpResponse response) throws IOException { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode != HttpStatus.SC_OK) { + throw new ClientProtocolException("Method failed: " + response.getStatusLine().toString()); + } + InputStream in = response.getEntity().getContent(); + if (in == null) { + return null; + } + // 读取并返回 + ByteArrayOutputStream out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + return new ByteArrayInputStream(out.toByteArray()); + } + }; + + public static InputStream simulateRPCByHttpPost(byte[] bytes, Map parameters, boolean isSignIn, RemoteEnv env) throws EnvException { String path = env.getPath(); - String userID = env.getUserID(); + RequestBuilder builder = RequestBuilder.post(path); - String res = null; - CloseableHttpClient httpClient = HttpClients.createDefault(); + InputStream inputStream = null; - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + for (Map.Entry entry : parameters.entrySet()) { + builder.addParameter(entry.getKey(), entry.getValue()); + } + if (!isSignIn) { + builder.addParameter("id", env.getUserID()); + } + InputStreamEntity reqEntity = new InputStreamEntity(new ByteArrayInputStream(bytes)); - AuthorityXMLUtils.writeDesignAuthoritiesXML(authorities, outputStream); + try (CloseableHttpClient httpClient = HttpClients.createSystem()) { + HttpUriRequest request = builder + .setEntity(reqEntity) + .build(); + inputStream = httpClient.execute(request, responseHandler); + } catch (IOException e) { + FRContext.getLogger().error(e.getMessage()); + } + return inputStream; + } + public static InputStream simulateRPCByHttpPost(Map parameters, boolean isSignIn, RemoteEnv env) throws EnvException { + String path = env.getPath(); + RequestBuilder builder = RequestBuilder.post(path); - InputStreamEntity reqEntity = new InputStreamEntity(new ByteArrayInputStream(outputStream.toByteArray()), ContentType.TEXT_XML); + InputStream inputStream = null; + + for (Map.Entry entry : parameters.entrySet()) { + builder.addParameter(entry.getKey(), entry.getValue()); + } + if (!isSignIn) { + builder.addParameter("id", env.getUserID()); + } - HttpUriRequest request = RequestBuilder.post(path) - .addParameter("id", userID) - .addParameter("op", "remote_design_authority") - .addParameter("cmd", "update_authorities") - .setEntity(reqEntity) - .build(); - - try { - CloseableHttpResponse response = httpClient.execute(request); - HttpEntity entity = response.getEntity(); - res = IOUtils.inputStream2String(entity.getContent(), EncodeConstants.ENCODING_UTF_8); - EntityUtils.consume(entity); + try (CloseableHttpClient httpClient = HttpClients.createSystem()) { + HttpUriRequest request = builder + .build(); + inputStream = httpClient.execute(request, responseHandler); } catch (IOException e) { FRContext.getLogger().error(e.getMessage()); } + return inputStream; + } + + public static InputStream simulateRPCByHttpGet(Map parameters, boolean isSignIn, RemoteEnv env) throws EnvException { + String path = env.getPath(); + RequestBuilder builder = RequestBuilder.get(path); - return res != null && Boolean.valueOf(res); + InputStream inputStream = null; + for (Map.Entry entry : parameters.entrySet()) { + builder.addParameter(entry.getKey(), entry.getValue()); + } + if (!isSignIn) { + builder.addParameter("id", env.getUserID()); + } + try (CloseableHttpClient httpClient = HttpClients.createSystem()) { + HttpUriRequest request = builder.build(); + inputStream = httpClient.execute(request, responseHandler); + + } catch (IOException e) { + FRContext.getLogger().error(e.getMessage()); + } + return inputStream; } - public static DesignAuthority[] getAuthorities(RemoteEnv env) { + + public static InputStream updateAuthorities(DesignAuthority[] authorities, RemoteEnv env) { String path = env.getPath(); + // 远程设计临时用户id String userID = env.getUserID(); - DesignAuthority[] authorities = null; - CloseableHttpClient httpClient = HttpClients.createDefault(); - - HttpUriRequest request = RequestBuilder.get(path) - .addParameter("id", userID) - .addParameter("op", "remote_design_authority") - .addParameter("cmd", "get_authorities") - .build(); - - try { - CloseableHttpResponse response = httpClient.execute(request); - HttpEntity entity = response.getEntity(); - - authorities = AuthorityXMLUtils.readDesignAuthoritiesXML(entity.getContent()); - EntityUtils.consume(entity); - } catch (Exception e) { + InputStream inputStream = null; + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + AuthorityXMLUtils.writeDesignAuthoritiesXML(authorities, outputStream); + InputStreamEntity reqEntity = new InputStreamEntity(new ByteArrayInputStream(outputStream.toByteArray()), ContentType.TEXT_XML); + + try (CloseableHttpClient httpClient = HttpClients.createSystem()) { + HttpUriRequest request = RequestBuilder.post(path) + .addParameter("id", userID) + .addParameter("op", "remote_design_authority") + .addParameter("cmd", "update_authorities") + .setEntity(reqEntity) + .build(); + inputStream = httpClient.execute(request, responseHandler); + } catch (IOException e) { FRContext.getLogger().error(e.getMessage()); } - return authorities; + return inputStream; + + } + + public static InputStream getAuthorities(RemoteEnv env) throws EnvException { + String path = env.getPath(); + // 远程设计临时用户id + String userID = env.getUserID(); + InputStream inputStream = null; + + try (CloseableHttpClient httpClient = HttpClients.createSystem();) { + HttpUriRequest request = RequestBuilder.get(path) + .addParameter("id", userID) + .addParameter("op", "remote_design_authority") + .addParameter("cmd", "get_authorities") + .build(); + inputStream = httpClient.execute(request, responseHandler); + } catch (IOException e) { + FRContext.getLogger().error(e.getMessage()); + } + return inputStream; } + } diff --git a/designer-base/src/com/fr/env/SignIn.java b/designer-base/src/com/fr/env/SignIn.java index a5f2860ec..09ba8c911 100644 --- a/designer-base/src/com/fr/env/SignIn.java +++ b/designer-base/src/com/fr/env/SignIn.java @@ -1,43 +1,61 @@ package com.fr.env; -import com.fr.base.Env; import com.fr.base.FRContext; +import com.fr.base.env.EnvContext; +import com.fr.base.env.resource.EnvConfigUtils; +import com.fr.base.env.resource.RemoteEnvConfig; +import com.fr.core.env.EnvConfig; +import com.fr.core.env.EnvEvents; +import com.fr.dav.LocalEnv; import com.fr.design.utils.DesignUtils; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.event.Null; import com.fr.general.ComparatorUtils; -import com.fr.general.env.EnvContext; +import com.fr.general.Inter; + +import javax.swing.JOptionPane; +import javax.swing.UIManager; public class SignIn { - public static Env lastSelectedEnv;// 记录最后登录的Env + + static { + EventDispatcher.listen(EnvEvents.CONNECTION_ERROR, new Listener() { + @Override + public void on(Event event, Null param) { + if (JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Remote_Connect2Server_Again"), UIManager.getString("OptionPane.titleText"), JOptionPane.YES_NO_OPTION) + == JOptionPane.OK_OPTION) { + try { + EnvContext.signIn(EnvContext.currentEnv()); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage()); + } + } + } + }); + } /** * 注册入环境 * @param selectedEnv 选择的环境 * @throws Exception 异常 */ - public static void signIn(Env selectedEnv) throws Exception { - boolean validServer; - signOutOldEnv(selectedEnv); - selectedEnv.signIn(); - validServer = true; - if (validServer) { - DesignUtils.switchToEnv(selectedEnv); - lastSelectedEnv = selectedEnv; + public static void signIn(EnvConfig selectedEnv) throws Exception { + if (EnvContext.currentEnv() != null && !ComparatorUtils.equals(EnvContext.currentEnv(), selectedEnv)) { + EnvContext.signOut(); } + EnvContext.signIn(selectedEnv); + DesignUtils.switchToEnv(trans(selectedEnv)); } - private static void signOutOldEnv(Env newEnv) { - // 环境相同直接返回,避免浪费过多时间 - if (lastSelectedEnv == null || ComparatorUtils.equals(lastSelectedEnv, newEnv)) { - return; - } - try { - EnvContext.fireBeforeSignOut(); - lastSelectedEnv.signOut(); - EnvContext.fireAfterSignOut(); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + private static com.fr.base.Env trans(EnvConfig env) { + if (env instanceof RemoteEnvConfig) { + return new RemoteEnv(env.getPath(), EnvConfigUtils.getUsername(env), EnvConfigUtils.getPassword(env)); + } else { + return new LocalEnv(); } } } \ No newline at end of file diff --git a/designer-base/src/com/fr/start/BaseDesigner.java b/designer-base/src/com/fr/start/BaseDesigner.java index 8613ebcc4..5d723f579 100644 --- a/designer-base/src/com/fr/start/BaseDesigner.java +++ b/designer-base/src/com/fr/start/BaseDesigner.java @@ -17,7 +17,7 @@ import com.fr.file.FILE; import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.stable.OperatingSystem; import java.awt.*; @@ -94,7 +94,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } isException = openFile(df, isException, file); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); if (!isException) { showDesignerFrame(args, df, true); } else { @@ -147,7 +147,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { Window.class, boolean.class}); method.invoke(null, window, true); } catch (Throwable t) { - FRLogger.getLogger().error("Full screen mode is not supported"); + FineLoggerFactory.getLogger().error("Full screen mode is not supported"); } } diff --git a/designer-base/src/com/fr/start/StartServer.java b/designer-base/src/com/fr/start/StartServer.java index 27ba970c3..7ab65e549 100644 --- a/designer-base/src/com/fr/start/StartServer.java +++ b/designer-base/src/com/fr/start/StartServer.java @@ -1,7 +1,7 @@ package com.fr.start; -import com.fr.base.ServerConfig; import com.fr.base.FRContext; +import com.fr.base.ServerConfig; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignerEnvManager; import com.fr.design.data.datapane.TableDataTreePane; @@ -15,16 +15,19 @@ import com.fr.env.SignIn; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.EnvChangedListener; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; -import com.fr.stable.project.ProjectConstants; import com.fr.start.server.TomcatHost; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JOptionPane; +import java.awt.BorderLayout; +import java.awt.Desktop; +import java.awt.Font; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; @@ -69,7 +72,7 @@ public class StartServer { TemplateTreePane.getInstance().refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } initDemoServerAndBrowser(); } @@ -98,7 +101,7 @@ public class StartServer { tomcatHost.start(); } } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } finally { //先访问Demo, 后访问报表, 不需要重置服务器. NEED_LOAD_ENV = false; @@ -121,14 +124,14 @@ public class StartServer { tomcatHost.addAndStartLocalEnvHomeWebApp(); } - } - if (!tomcatHost.isStarted()) { - tomcatHost.start(); + if (!tomcatHost.isStarted()) { + tomcatHost.start(); + } } } catch (InterruptedException e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } finally { NEED_LOAD_ENV = false; } @@ -169,10 +172,10 @@ public class StartServer { } catch (IOException e) { startBrowserFromCommand(uri, e); } catch (URISyntaxException e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); - FRContext.getLogger().error("Can not open the browser for URL: " + uri); + FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + uri); } } @@ -183,10 +186,10 @@ public class StartServer { Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + uri); } catch (IOException ee) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } else { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } diff --git a/designer-chart/src/com/fr/design/chart/report/MapCubeLayerPane.java b/designer-chart/src/com/fr/design/chart/report/MapCubeLayerPane.java index bde3bc3cd..91ec7e872 100644 --- a/designer-chart/src/com/fr/design/chart/report/MapCubeLayerPane.java +++ b/designer-chart/src/com/fr/design/chart/report/MapCubeLayerPane.java @@ -11,7 +11,7 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; @@ -275,7 +275,7 @@ public class MapCubeLayerPane extends BasicBeanPane{ @Override protected void done() { - FRLogger.getLogger().info("Map Save End"); + FineLoggerFactory.getLogger().info("Map Save End"); } }; diff --git a/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index 7a4732807..ed2ab0718 100644 --- a/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -22,7 +22,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; @@ -367,7 +367,7 @@ public class MapGroupExtensionPane extends BasicPane implements UIObserver { StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ - FRLogger.getLogger().error(exp.getMessage()); + FineLoggerFactory.getLogger().error(exp.getMessage()); } } } @@ -399,7 +399,7 @@ public class MapGroupExtensionPane extends BasicPane implements UIObserver { @Override protected void done() { - FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. + FineLoggerFactory.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; diff --git a/designer-chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java b/designer-chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java index 64643e341..b56a436f4 100644 --- a/designer-chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java +++ b/designer-chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java @@ -19,7 +19,7 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; @@ -477,7 +477,7 @@ public class UIGroupExtensionPane extends BasicPane { try { list.setSelectedIndices(null); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } } diff --git a/designer-chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java b/designer-chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java index 02a50f828..08292b00c 100644 --- a/designer-chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java +++ b/designer-chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java @@ -13,7 +13,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.chart.ChartHyperEditPane; import com.fr.design.module.DesignModuleFactory; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import java.awt.*; @@ -71,7 +71,7 @@ public class ChartHyperPoplinkPane extends AbstractHyperLinkPane implemen editingCollection.addNamedChart(name, newChart); editingCollection.addFunctionRecord(newChart); } catch (CloneNotSupportedException e1) { - FRLogger.getLogger().error("Error in Clone"); + FineLoggerFactory.getLogger().error("Error in Clone"); } checkoutChange(); } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java index 5d48c4106..fbe0008af 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java @@ -9,7 +9,7 @@ import com.fr.data.util.function.NoneFunction; import com.fr.data.util.function.SumFunction; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; /** @@ -56,10 +56,10 @@ public class CalculateComboBox extends UIComboBox{ return (AbstractDataFunction)CLASS_ARRAY[selectIndex].newInstance(); } } catch (InstantiationException e) { - FRLogger.getLogger().error("Function Error"); + FineLoggerFactory.getLogger().error("Function Error"); return null; } catch (IllegalAccessException e) { - FRLogger.getLogger().error("Function Error"); + FineLoggerFactory.getLogger().error("Function Error"); return null; } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java index e0649cccf..a2cd2ec68 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java @@ -19,7 +19,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.data.CalculateComboBox; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.StringUtils; @@ -265,9 +265,9 @@ public class SeriesNameUseFieldNamePane extends FurtherBasicBeanPane{ String tmp = DateUtils.getDate2LStr(toDate); toDate = DateUtils.DATETIMEFORMAT2.parse(tmp); } catch (ParseException e) { - FRLogger.getLogger().error(Inter.getLocText("Cannot_Get_Date")); + FineLoggerFactory.getLogger().error(Inter.getLocText("Cannot_Get_Date")); } return toDate; } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index c26413b75..5aa9ea49a 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -26,7 +26,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.js.NameJavaScriptGroup; import com.fr.stable.Constants; @@ -351,7 +351,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ try { chart.switchPlot((Plot)plot.clone()); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error in change plot"); + FineLoggerFactory.getLogger().error("Error in change plot"); } } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane.java index 7d73ea122..1bb3c9887 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane.java @@ -6,7 +6,7 @@ import com.fr.chart.chartattr.BarPlot; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.charttypes.BarIndependentChart; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; /** @@ -98,7 +98,7 @@ public class BarPlotPane extends AbstractBarPane{ try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); + FineLoggerFactory.getLogger().error("Error In ColumnChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane.java index ee70cb71a..0ee3811b5 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane.java @@ -5,7 +5,7 @@ import com.fr.chart.chartattr.BarPlot; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.charttypes.ColumnIndependentChart; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; /** @@ -95,7 +95,7 @@ public class ColumnPlotPane extends AbstractBarPane{ try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); + FineLoggerFactory.getLogger().error("Error In ColumnChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/GisMapPlotPane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/GisMapPlotPane.java index cd2a78870..ee6ebe18b 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/GisMapPlotPane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/GisMapPlotPane.java @@ -11,7 +11,7 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import javax.swing.*; @@ -118,7 +118,7 @@ public class GisMapPlotPane extends AbstractChartTypePane{ try { chart.switchPlot((Plot)plot.clone()); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In LineChart"); + FineLoggerFactory.getLogger().error("Error In LineChart"); chart.switchPlot(new GisMapPlot()); } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane.java index 4274c4b2a..4cbb2661b 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane.java @@ -5,7 +5,7 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.LinePlot; import com.fr.chart.chartattr.Plot; import com.fr.chart.charttypes.LineIndependentChart; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; public class LinePlotPane extends AbstractChartTypePane{ @@ -68,7 +68,7 @@ public class LinePlotPane extends AbstractChartTypePane{ try { chart.switchPlot((Plot)plot.clone()); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In LineChart"); + FineLoggerFactory.getLogger().error("Error In LineChart"); chart.switchPlot(new LinePlot()); } } diff --git a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane.java b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane.java index daafa70a1..0c5612e20 100644 --- a/designer-chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane.java +++ b/designer-chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane.java @@ -6,7 +6,7 @@ import com.fr.chart.chartattr.MeterPlot; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.MeterStyle; import com.fr.chart.charttypes.MeterIndependentChart; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; /** @@ -67,7 +67,7 @@ public class MeterPlotPane extends AbstractChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); + FineLoggerFactory.getLogger().error("Error In ColumnChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/DownloadOnlineSourcesHelper.java b/designer-chart/src/com/fr/van/chart/DownloadOnlineSourcesHelper.java index 23b4339ee..3af59526a 100644 --- a/designer-chart/src/com/fr/van/chart/DownloadOnlineSourcesHelper.java +++ b/designer-chart/src/com/fr/van/chart/DownloadOnlineSourcesHelper.java @@ -145,7 +145,7 @@ public class DownloadOnlineSourcesHelper implements DownloadSourcesEvent { if (result) { //安装文件 - IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + siteInfo.localDir); + IOUtils.unZipFilesGBK(temp, StableUtils.pathJoin(FRContext.getCurrentEnv().getPath(), siteInfo.localDir)); } } else { result = false; diff --git a/designer-chart/src/com/fr/van/chart/area/VanChartAreaPlotPane.java b/designer-chart/src/com/fr/van/chart/area/VanChartAreaPlotPane.java index 94a3cb9a8..2595f5487 100644 --- a/designer-chart/src/com/fr/van/chart/area/VanChartAreaPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/area/VanChartAreaPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.area; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.area.AreaIndependentVanChart; import com.fr.plugin.chart.area.VanChartAreaPlot; @@ -71,7 +71,7 @@ public class VanChartAreaPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot) newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In AreaChart"); + FineLoggerFactory.getLogger().error("Error In AreaChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/bar/VanChartBarPlotPane.java b/designer-chart/src/com/fr/van/chart/bar/VanChartBarPlotPane.java index d9645ca79..2d2509aa6 100644 --- a/designer-chart/src/com/fr/van/chart/bar/VanChartBarPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/bar/VanChartBarPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.bar; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.bar.BarIndependentVanChart; import com.fr.plugin.chart.column.VanChartColumnPlot; @@ -70,7 +70,7 @@ public class VanChartBarPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); + FineLoggerFactory.getLogger().error("Error In ColumnChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/bubble/VanChartBubblePlotPane.java b/designer-chart/src/com/fr/van/chart/bubble/VanChartBubblePlotPane.java index 49927fecc..aa7f46047 100644 --- a/designer-chart/src/com/fr/van/chart/bubble/VanChartBubblePlotPane.java +++ b/designer-chart/src/com/fr/van/chart/bubble/VanChartBubblePlotPane.java @@ -6,7 +6,7 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.base.VanChartZoom; @@ -82,7 +82,7 @@ public class VanChartBubblePlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In BubbleChart"); + FineLoggerFactory.getLogger().error("Error In BubbleChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/column/VanChartColumnPlotPane.java b/designer-chart/src/com/fr/van/chart/column/VanChartColumnPlotPane.java index c61fc8205..c618fa2c2 100644 --- a/designer-chart/src/com/fr/van/chart/column/VanChartColumnPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/column/VanChartColumnPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.column; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.column.ColumnIndependentVanChart; import com.fr.plugin.chart.column.VanChartColumnPlot; @@ -71,7 +71,7 @@ public class VanChartColumnPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); + FineLoggerFactory.getLogger().error("Error In ColumnChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/custom/CustomPlotDesignerPaneFactory.java b/designer-chart/src/com/fr/van/chart/custom/CustomPlotDesignerPaneFactory.java index 817e386d1..783a35b87 100644 --- a/designer-chart/src/com/fr/van/chart/custom/CustomPlotDesignerPaneFactory.java +++ b/designer-chart/src/com/fr/van/chart/custom/CustomPlotDesignerPaneFactory.java @@ -5,7 +5,7 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotTableDataContentPane; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.chart.PiePlot4VanChart; import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.plugin.chart.attr.plot.VanChartPlot; @@ -59,7 +59,7 @@ public class CustomPlotDesignerPaneFactory { Constructor > constructor = cl.getConstructor(); return constructor.newInstance(); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return null; @@ -89,7 +89,7 @@ public class CustomPlotDesignerPaneFactory { Constructor constructor = cl.getConstructor(ChartDataPane.class); return constructor.newInstance(parent); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new CategoryPlotTableDataContentPane(parent); @@ -125,7 +125,7 @@ public class CustomPlotDesignerPaneFactory { return constructor.newInstance(plot, parent); } } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartAxisPane(plot,parent); diff --git a/designer-chart/src/com/fr/van/chart/custom/VanChartCustomPlotPane.java b/designer-chart/src/com/fr/van/chart/custom/VanChartCustomPlotPane.java index 8817d1ddc..22f95f637 100644 --- a/designer-chart/src/com/fr/van/chart/custom/VanChartCustomPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/custom/VanChartCustomPlotPane.java @@ -9,7 +9,7 @@ import com.fr.chart.chartglyph.ConditionCollection; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.type.ChartImagePane; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartAttrLine; import com.fr.plugin.chart.base.VanChartTools; @@ -263,7 +263,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot) newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ScatterChart"); + FineLoggerFactory.getLogger().error("Error In ScatterChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java b/designer-chart/src/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java index bf9c2e88c..8e4212480 100644 --- a/designer-chart/src/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java +++ b/designer-chart/src/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java @@ -4,7 +4,7 @@ import com.fr.chart.chartattr.Chart; import com.fr.design.beans.BasicBeanPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.attr.plot.VanChartRectanglePlot; @@ -250,7 +250,7 @@ public class VanChartCustomPlotSelectPane extends BasicBeanPane { } } } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } diff --git a/designer-chart/src/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 1dbf5a1e1..7e675c6e6 100644 --- a/designer-chart/src/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -23,7 +23,7 @@ import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.module.DesignModuleFactory; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.js.EmailJavaScript; @@ -81,13 +81,13 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return constructor.newInstance(getHyperLinkEditorMap(), false); } catch (InstantiationException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (IllegalAccessException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (NoSuchMethodException e) { return super.createPaneByCreators(creator); } catch (InvocationTargetException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return null; } diff --git a/designer-chart/src/com/fr/van/chart/designer/PlotFactory.java b/designer-chart/src/com/fr/van/chart/designer/PlotFactory.java index a791a8e34..33b9766d8 100644 --- a/designer-chart/src/com/fr/van/chart/designer/PlotFactory.java +++ b/designer-chart/src/com/fr/van/chart/designer/PlotFactory.java @@ -6,7 +6,7 @@ import com.fr.data.core.FormatField; import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.style.FormatPane; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.area.VanChartAreaPlot; import com.fr.plugin.chart.bubble.VanChartBubblePlot; @@ -198,7 +198,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(Plot.class, VanChartStylePane.class); return constructor.newInstance(plot, stylePane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartPlotLabelPane(plot, stylePane); @@ -218,7 +218,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(VanChartStylePane.class); return constructor.newInstance(stylePane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartPlotLegendPane(stylePane); @@ -238,7 +238,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(Plot.class, VanChartStylePane.class); return constructor.newInstance(plot, stylePane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartPlotTooltipPane(plot, stylePane); @@ -259,7 +259,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(VanChartStylePane.class, JPanel.class); return constructor.newInstance(parent, showOnPane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartLabelContentPane(parent, showOnPane); @@ -280,7 +280,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(VanChartStylePane.class, JPanel.class); return constructor.newInstance(parent, showOnPane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartTooltipContentPane(parent, showOnPane); @@ -301,7 +301,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(Plot.class); return constructor.newInstance(plot); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartPlotRefreshTooltipPane(plot); @@ -321,7 +321,7 @@ public class PlotFactory { Constructor constructor = cl.getConstructor(VanChartStylePane.class, JPanel.class); return constructor.newInstance(parent, showOnPane); } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return new VanChartRefreshTooltipContentPane(parent, showOnPane); diff --git a/designer-chart/src/com/fr/van/chart/designer/component/ChartUIMenuNameableCreator.java b/designer-chart/src/com/fr/van/chart/designer/component/ChartUIMenuNameableCreator.java index c9d781c87..5d7c88091 100644 --- a/designer-chart/src/com/fr/van/chart/designer/component/ChartUIMenuNameableCreator.java +++ b/designer-chart/src/com/fr/van/chart/designer/component/ChartUIMenuNameableCreator.java @@ -2,7 +2,7 @@ package com.fr.van.chart.designer.component; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.imenutable.UIMenuNameableCreator; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import java.lang.reflect.Constructor; import java.util.HashMap; @@ -23,9 +23,9 @@ public class ChartUIMenuNameableCreator extends UIMenuNameableCreator { try { cloneObj = obj.getClass().newInstance(); } catch (InstantiationException e) { - FRLogger.getLogger().error("UIMenuNameableCreator InstantiationException"); + FineLoggerFactory.getLogger().error("UIMenuNameableCreator InstantiationException"); } catch (IllegalAccessException e) { - FRLogger.getLogger().error("UIMenuNameableCreator IllegalAccessException"); + FineLoggerFactory.getLogger().error("UIMenuNameableCreator IllegalAccessException"); } return new ChartUIMenuNameableCreator(hyperLinkEditorMap, name, cloneObj, (Class) this.paneClazz); diff --git a/designer-chart/src/com/fr/van/chart/designer/component/VanChartUIMenuNameableCreator.java b/designer-chart/src/com/fr/van/chart/designer/component/VanChartUIMenuNameableCreator.java index 6b5f0d4de..b7b259647 100644 --- a/designer-chart/src/com/fr/van/chart/designer/component/VanChartUIMenuNameableCreator.java +++ b/designer-chart/src/com/fr/van/chart/designer/component/VanChartUIMenuNameableCreator.java @@ -2,7 +2,7 @@ package com.fr.van.chart.designer.component; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.imenutable.UIMenuNameableCreator; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.stable.FCloneable; /** @@ -20,7 +20,7 @@ public class VanChartUIMenuNameableCreator extends UIMenuNameableCreator { try { cloneObj = ((FCloneable)obj).clone(); } catch (CloneNotSupportedException e){ - FRLogger.getLogger().error("VanChartUIMenuNameableCreator CloneNotSupportedException"); + FineLoggerFactory.getLogger().error("VanChartUIMenuNameableCreator CloneNotSupportedException"); } return new UIMenuNameableCreator(name, cloneObj, this.paneClazz); diff --git a/designer-chart/src/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java b/designer-chart/src/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java index aacb5dd0d..7597ff860 100644 --- a/designer-chart/src/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java +++ b/designer-chart/src/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java @@ -16,7 +16,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.DateUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.attr.axis.VanChartTimeAxis; @@ -379,7 +379,7 @@ public class VanChartTimeAxisPane extends VanChartBaseAxisPane { String tmp = DateUtils.getDate2LStr(toDate); toDate = DateUtils.DATETIMEFORMAT2.parse(tmp); } catch (ParseException e) { - FRLogger.getLogger().error("cannot get date"); + FineLoggerFactory.getLogger().error("cannot get date"); } return toDate; } diff --git a/designer-chart/src/com/fr/van/chart/designer/style/background/BackgroundNameObjectCreator.java b/designer-chart/src/com/fr/van/chart/designer/style/background/BackgroundNameObjectCreator.java index f6836df34..65bca91fc 100644 --- a/designer-chart/src/com/fr/van/chart/designer/style/background/BackgroundNameObjectCreator.java +++ b/designer-chart/src/com/fr/van/chart/designer/style/background/BackgroundNameObjectCreator.java @@ -2,7 +2,7 @@ package com.fr.van.chart.designer.style.background; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.NameObject; import com.fr.plugin.chart.attr.axis.VanChartCustomIntervalBackground; import com.fr.stable.Nameable; @@ -34,13 +34,13 @@ public class BackgroundNameObjectCreator extends ChartNameObjectCreator { return new NameObject(helper.createUnrepeatedName(this.menuName()), vanChartCustomIntervalBackground); } catch (NoSuchMethodException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (IllegalAccessException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InstantiationException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InvocationTargetException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return null; } diff --git a/designer-chart/src/com/fr/van/chart/designer/style/background/ChartNameObjectCreator.java b/designer-chart/src/com/fr/van/chart/designer/style/background/ChartNameObjectCreator.java index d41880c4a..8a5a33ca8 100644 --- a/designer-chart/src/com/fr/van/chart/designer/style/background/ChartNameObjectCreator.java +++ b/designer-chart/src/com/fr/van/chart/designer/style/background/ChartNameObjectCreator.java @@ -3,7 +3,7 @@ package com.fr.van.chart.designer.style.background; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.NameObject; import com.fr.plugin.chart.attr.axis.VanChartAlertValue; import com.fr.stable.Nameable; @@ -40,13 +40,13 @@ public class ChartNameObjectCreator extends NameObjectCreator { return new NameObject(helper.createUnrepeatedName(this.menuName()), vanChartAlertValue); } catch (NoSuchMethodException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (IllegalAccessException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InstantiationException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InvocationTargetException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return null; } diff --git a/designer-chart/src/com/fr/van/chart/designer/style/series/StackedAndAxisNameObjectCreator.java b/designer-chart/src/com/fr/van/chart/designer/style/series/StackedAndAxisNameObjectCreator.java index 384ba5b63..ea2f99554 100644 --- a/designer-chart/src/com/fr/van/chart/designer/style/series/StackedAndAxisNameObjectCreator.java +++ b/designer-chart/src/com/fr/van/chart/designer/style/series/StackedAndAxisNameObjectCreator.java @@ -3,7 +3,7 @@ package com.fr.van.chart.designer.style.series; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.NameObject; import com.fr.plugin.chart.base.AttrSeriesStackAndAxis; import com.fr.stable.Nameable; @@ -36,13 +36,13 @@ public class StackedAndAxisNameObjectCreator extends ChartNameObjectCreator { return new NameObject(helper.createUnrepeatedName(this.menuName()), conditionAttr); } catch (NoSuchMethodException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (IllegalAccessException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InstantiationException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (InvocationTargetException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return null; } diff --git a/designer-chart/src/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java b/designer-chart/src/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java index b52940be9..32a7fca7a 100644 --- a/designer-chart/src/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java +++ b/designer-chart/src/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java @@ -12,7 +12,7 @@ import com.fr.design.gui.ilable.MultilineLabel; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.Background; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.attr.plot.VanChartPlot; @@ -168,7 +168,7 @@ public abstract class AbstractVanChartTypePane extends AbstractChartTypePane{ ((VanChartPlot)newPlot).setCategoryNum( ((VanChartPlot)oldPlot).getCategoryNum()); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error in change plot"); + FineLoggerFactory.getLogger().error("Error in change plot"); } } diff --git a/designer-chart/src/com/fr/van/chart/funnel/designer/type/VanChartFunnelTypePane.java b/designer-chart/src/com/fr/van/chart/funnel/designer/type/VanChartFunnelTypePane.java index 19f18adc9..229593433 100644 --- a/designer-chart/src/com/fr/van/chart/funnel/designer/type/VanChartFunnelTypePane.java +++ b/designer-chart/src/com/fr/van/chart/funnel/designer/type/VanChartFunnelTypePane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.funnel.designer.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.funnel.FunnelIndependentVanChart; @@ -57,7 +57,7 @@ public class VanChartFunnelTypePane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/gantt/designer/type/VanChartGanttPlotPane.java b/designer-chart/src/com/fr/van/chart/gantt/designer/type/VanChartGanttPlotPane.java index 5e7b6235c..79afbc79e 100644 --- a/designer-chart/src/com/fr/van/chart/gantt/designer/type/VanChartGanttPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/gantt/designer/type/VanChartGanttPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.gantt.designer.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.gantt.GanttIndependentVanChart; import com.fr.plugin.chart.gantt.VanChartGanttPlot; @@ -51,7 +51,7 @@ public class VanChartGanttPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/gauge/VanChartGaugePlotPane.java b/designer-chart/src/com/fr/van/chart/gauge/VanChartGaugePlotPane.java index 800075d17..803f8ae4c 100644 --- a/designer-chart/src/com/fr/van/chart/gauge/VanChartGaugePlotPane.java +++ b/designer-chart/src/com/fr/van/chart/gauge/VanChartGaugePlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.gauge; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.gauge.GaugeIndependentVanChart; import com.fr.plugin.chart.gauge.VanChartGaugePlot; @@ -57,7 +57,7 @@ public class VanChartGaugePlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In GaugeChart"); + FineLoggerFactory.getLogger().error("Error In GaugeChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java b/designer-chart/src/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java index cb9531536..307490500 100644 --- a/designer-chart/src/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java +++ b/designer-chart/src/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java @@ -3,7 +3,7 @@ package com.fr.van.chart.heatmap.designer.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.heatmap.HeatMapIndependentVanChart; @@ -87,7 +87,7 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/line/VanChartLinePlotPane.java b/designer-chart/src/com/fr/van/chart/line/VanChartLinePlotPane.java index 71fa52adb..214236be7 100644 --- a/designer-chart/src/com/fr/van/chart/line/VanChartLinePlotPane.java +++ b/designer-chart/src/com/fr/van/chart/line/VanChartLinePlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.line; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.line.LineIndependentVanChart; import com.fr.plugin.chart.line.VanChartLinePlot; @@ -62,7 +62,7 @@ public class VanChartLinePlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In LineChart"); + FineLoggerFactory.getLogger().error("Error In LineChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java b/designer-chart/src/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java index 3795aec58..78de970b6 100644 --- a/designer-chart/src/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java @@ -5,7 +5,7 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.map.MapIndependentVanChart; @@ -104,7 +104,7 @@ public class VanChartMapPlotPane extends AbstractVanChartTypePane { VanChartMapPlot mapPlot = (VanChartMapPlot)plot.clone(); sourceChoosePane.populateBean(mapPlot); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @@ -145,7 +145,7 @@ public class VanChartMapPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java b/designer-chart/src/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java index 1378050e4..bbc02df10 100644 --- a/designer-chart/src/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java +++ b/designer-chart/src/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.multilayer; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.multilayer.MultiPieIndependentVanChart; @@ -52,7 +52,7 @@ public class VanChartMultiPiePlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In MultiPieChart"); + FineLoggerFactory.getLogger().error("Error In MultiPieChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/pie/VanChartPiePlotPane.java b/designer-chart/src/com/fr/van/chart/pie/VanChartPiePlotPane.java index e36b220ae..47022c6d2 100644 --- a/designer-chart/src/com/fr/van/chart/pie/VanChartPiePlotPane.java +++ b/designer-chart/src/com/fr/van/chart/pie/VanChartPiePlotPane.java @@ -3,7 +3,7 @@ package com.fr.van.chart.pie; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.PiePlot4VanChart; import com.fr.plugin.chart.pie.PieIndependentVanChart; @@ -65,7 +65,7 @@ public class VanChartPiePlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In PieChart"); + FineLoggerFactory.getLogger().error("Error In PieChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/radar/VanChartRadarPlotPane.java b/designer-chart/src/com/fr/van/chart/radar/VanChartRadarPlotPane.java index 88237fb61..89410133a 100644 --- a/designer-chart/src/com/fr/van/chart/radar/VanChartRadarPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/radar/VanChartRadarPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.radar; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.radar.RadarIndependentVanChart; import com.fr.plugin.chart.radar.VanChartRadarPlot; @@ -62,7 +62,7 @@ public class VanChartRadarPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In RadarChart"); + FineLoggerFactory.getLogger().error("Error In RadarChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/scatter/VanChartScatterPlotPane.java b/designer-chart/src/com/fr/van/chart/scatter/VanChartScatterPlotPane.java index 73ac3c72f..3994e9e27 100644 --- a/designer-chart/src/com/fr/van/chart/scatter/VanChartScatterPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/scatter/VanChartScatterPlotPane.java @@ -5,7 +5,7 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartAttrLine; import com.fr.plugin.chart.base.VanChartTools; @@ -64,7 +64,7 @@ public class VanChartScatterPlotPane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ScatterChart"); + FineLoggerFactory.getLogger().error("Error In ScatterChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java b/designer-chart/src/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java index 9e54b6779..0ca2a1421 100644 --- a/designer-chart/src/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java +++ b/designer-chart/src/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.structure.desinger.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.structure.StructureIndependentVanChart; @@ -60,7 +60,7 @@ public class VanChartStructureTypePane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java b/designer-chart/src/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java index d5f6301a4..e74e1f001 100644 --- a/designer-chart/src/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java +++ b/designer-chart/src/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.treemap; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.treemap.TreeMapIndependentVanChart; import com.fr.plugin.chart.treemap.VanChartTreeMapPlot; @@ -48,7 +48,7 @@ public class VanChartTreeMapPlotPane extends VanChartMultiPiePlotPane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In treeMapChart"); + FineLoggerFactory.getLogger().error("Error In treeMapChart"); } return cloned; } diff --git a/designer-chart/src/com/fr/van/chart/wordcloud/designer/type/VanChartWordCloudTypePane.java b/designer-chart/src/com/fr/van/chart/wordcloud/designer/type/VanChartWordCloudTypePane.java index 93f5a579a..8b1c8955f 100644 --- a/designer-chart/src/com/fr/van/chart/wordcloud/designer/type/VanChartWordCloudTypePane.java +++ b/designer-chart/src/com/fr/van/chart/wordcloud/designer/type/VanChartWordCloudTypePane.java @@ -2,7 +2,7 @@ package com.fr.van.chart.wordcloud.designer.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot; @@ -56,7 +56,7 @@ public class VanChartWordCloudTypePane extends AbstractVanChartTypePane { try { cloned = (Plot)newPlot.clone(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } return cloned; } diff --git a/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 40f2bf472..8973f1d20 100644 --- a/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -11,7 +11,7 @@ import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import java.awt.*; @@ -82,7 +82,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { return acceptWidget(x, y); } } else { - FRLogger.getLogger().error("top layout is null!"); + FineLoggerFactory.getLogger().error("top layout is null!"); } return false; diff --git a/designer-form/src/com/fr/design/designer/beans/painters/FRAbsoluteLayoutPainter.java b/designer-form/src/com/fr/design/designer/beans/painters/FRAbsoluteLayoutPainter.java index 61e9260e3..8c22a9eb0 100644 --- a/designer-form/src/com/fr/design/designer/beans/painters/FRAbsoluteLayoutPainter.java +++ b/designer-form/src/com/fr/design/designer/beans/painters/FRAbsoluteLayoutPainter.java @@ -7,7 +7,7 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.FormDesigner; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import java.awt.*; @@ -64,12 +64,12 @@ public class FRAbsoluteLayoutPainter extends AbstractPainter { if (XCreatorUtils.getHotspotContainer((XCreator) currentComp) != null) { currentComp = XCreatorUtils.getHotspotContainer((XCreator) currentComp).getTopLayout(); if (currentComp == null) { - FRLogger.getLogger().info("FRAbsoluteLayoutPainter get currentComp null!"); + FineLoggerFactory.getLogger().info("FRAbsoluteLayoutPainter get currentComp null!"); return; } } else{ - FRLogger.getLogger().info("FRAbsoluteLayoutPainter getHotspotContainer currentComp null!"); + FineLoggerFactory.getLogger().info("FRAbsoluteLayoutPainter getHotspotContainer currentComp null!"); return; } Color bColor = XCreatorConstants.FIT_LAYOUT_HOTSPOT_COLOR; 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 58c5f74dd..6a03f48c5 100644 --- a/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -292,6 +292,11 @@ public class XWAbsoluteLayout extends XLayoutContainer { this.setLayout(new FRAbsoluteLayout()); } + @Override + protected void initStyle() { + // do nothing + } + /** * 是否支持标题样式 * diff --git a/designer-form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java b/designer-form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java index 354846d91..966b14407 100644 --- a/designer-form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java +++ b/designer-form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java @@ -4,7 +4,7 @@ import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; /** * Created by zhouping on 2017/2/17. @@ -37,7 +37,7 @@ public class TabMoveAction extends FormUndoableAction { xwCardTagLayout.setSwitchingTab(false); }catch (Exception e){ xwCardTagLayout.setSwitchingTab(false); - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } return true; diff --git a/designer-form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer-form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index 5c65f5594..96298860c 100644 --- a/designer-form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -21,7 +21,7 @@ import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.Background; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import com.fr.stable.core.PropertyChangeAdapter; @@ -200,7 +200,7 @@ public class XWTabFitLayout extends XWFitLayout { try { xCardSwitchButton = (XCardSwitchButton) ((XWCardMainBorderLayout) this.getTopLayout()).getTitlePart().getTagPart().getComponent(0); }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return; } diff --git a/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java b/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java index 20702ec8f..0fc137df0 100644 --- a/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java +++ b/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java @@ -10,7 +10,7 @@ import com.fr.design.mainframe.widget.editors.LayoutTypeEditor; import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WBodyLayoutType; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.FRScreen; import com.fr.general.Inter; @@ -181,7 +181,7 @@ public class FRAbsoluteBodyLayoutPropertiesGroupModel extends FRAbsoluteLayoutPr return true; } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } } diff --git a/designer-form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java b/designer-form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java index a8b022a97..4da7cf743 100644 --- a/designer-form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java +++ b/designer-form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java @@ -17,7 +17,7 @@ import com.fr.form.ui.container.WAbsoluteBodyLayout; 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.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import javax.swing.table.DefaultTableCellRenderer; @@ -175,7 +175,7 @@ public class FRFitLayoutPropertiesGroupModel implements GroupModel { FormSelectionUtils.rebuildSelection(xfl, new Widget[]{xfl.toData()})); } }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } layout.setLayoutType(WBodyLayoutType.parse(state)); diff --git a/designer-form/src/com/fr/design/gui/xpane/FormHyperlinkGroupPane.java b/designer-form/src/com/fr/design/gui/xpane/FormHyperlinkGroupPane.java index 2f879792e..e96eef26e 100644 --- a/designer-form/src/com/fr/design/gui/xpane/FormHyperlinkGroupPane.java +++ b/designer-form/src/com/fr/design/gui/xpane/FormHyperlinkGroupPane.java @@ -1,42 +1,43 @@ package com.fr.design.gui.xpane; +import com.fr.design.form.javascript.FormEmailPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.HyperlinkGroupPane; -import com.fr.design.form.javascript.FormEmailPane; import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.js.EmailJavaScript; -public class FormHyperlinkGroupPane extends HyperlinkGroupPane{ - private static FormHyperlinkGroupPane singleton; +public class FormHyperlinkGroupPane extends HyperlinkGroupPane { + private static FormHyperlinkGroupPane singleton; - protected FormHyperlinkGroupPane(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { - super(hyperlinkGroupPaneActionProvider); - } + protected FormHyperlinkGroupPane(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + super(hyperlinkGroupPaneActionProvider); + } - public synchronized static FormHyperlinkGroupPane getInstance(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { - if (singleton == null) { - singleton = new FormHyperlinkGroupPane(hyperlinkGroupPaneActionProvider); - } - return singleton; - } + public synchronized static FormHyperlinkGroupPane getInstance(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + if (singleton == null) { + singleton = new FormHyperlinkGroupPane(hyperlinkGroupPaneActionProvider); + } + return singleton; + } - /** + /** * 生成添加按钮的NameableCreator * 由于表单报表块的单元格超链和单元格条件属性超链中的emailPane都要用表单的emailPane,这里调整下 * * @return 返回Nameable按钮数组. */ - public NameableCreator[] createNameableCreators() { - NameableCreator[] creators = super.createNameableCreators(); - for (int i=0; i implements TreeSelection try { Thread.sleep(1500); } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } pane.setLayout(new BorderLayout()); diff --git a/designer-form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer-form/src/com/fr/design/mainframe/FormSelectionUtils.java index ebf7328a2..5aa874bd2 100644 --- a/designer-form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer-form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -12,11 +12,12 @@ import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWScaleLayout; import com.fr.design.designer.creator.XWTitleLayout; +import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import java.awt.Component; @@ -107,6 +108,7 @@ public class FormSelectionUtils { designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Large_To_Paste")); return; } + resetTabSub2RealSize(copiedCreator); boolean addSuccess = adapter.addBean(copiedCreator, point.x, point.y); if (addSuccess) { designer.getSelectionModel().getSelection().addSelectedCreator(copiedCreator); @@ -121,6 +123,34 @@ public class FormSelectionUtils { } + /** + * REPORT-6096 复制得到的是显示的大小,如果因屏幕分辨率问题存在缩放的话,显示大小和实际大小会有区别,粘贴后tab内部调整大小时会再次缩放导致问题。 + * 因此在粘贴之前将tab内部的组件调整成实际的大小。 + * + * @param copiedCreator 复制的组件 + */ + private static void resetTabSub2RealSize(XCreator copiedCreator) { + ArrayList childrenList = copiedCreator.getTargetChildrenList(); + if (!childrenList.isEmpty()) { + for (Object aChildrenList : childrenList) { + XWTabFitLayout tabLayout = (XWTabFitLayout) aChildrenList; + double percent = tabLayout.getContainerPercent(); + Component[] components = tabLayout.getComponents(); + for (Component component : components) { + Rectangle show = component.getBounds(); + component.setBounds(new Rectangle((int) (show.x * percent), (int) (show.y * percent), (int) (show.width * percent), (int) (show.height * percent))); + } + } + } + Component[] components = copiedCreator.getComponents(); + for (Component component : components) { + try { + resetTabSub2RealSize((XCreator) component); + } catch (ClassCastException ignored) { + } + } + } + /** * 相对布局粘贴 */ @@ -169,7 +199,7 @@ public class FormSelectionUtils { designer.getSelectionModel().getSelection().addSelectedCreator(copiedXCreator); } } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @@ -178,9 +208,9 @@ public class FormSelectionUtils { */ private static Point getPasteLocation(AbstractLayoutAdapter layoutAdapter, XCreator copiedCreator, int x, int y) { //当宽度为奇数时 设置偏移 - int xoffset = (copiedCreator.getWidth() & 1) == 1 ? 1 : 0; + int xoffset = copiedCreator.getWidth() & 1; //当高度为奇数时 设置偏移 - int yoffset = (copiedCreator.getHeight() & 1) == 1 ? 1 : 0; + int yoffset = copiedCreator.getHeight() & 1; if (!layoutAdapter.accept(copiedCreator, x, y)) { XLayoutContainer container = layoutAdapter.getContainer(); diff --git a/designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 5c8f873d5..b83603a71 100644 --- a/designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -10,9 +10,10 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.log.FineLoggerFactory; import com.fr.share.ShareConstants; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; @@ -322,12 +323,12 @@ public class FormWidgetDetailPane extends FormDockView{ Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error("Can not open the browser for URL: " + url); } } }); @@ -399,7 +400,7 @@ public class FormWidgetDetailPane extends FormDockView{ } } catch (IOException e) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } } @@ -408,7 +409,7 @@ public class FormWidgetDetailPane extends FormDockView{ try { ShareLoader.getLoader().refreshModule(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } diff --git a/designer-form/src/com/fr/design/mainframe/JForm.java b/designer-form/src/com/fr/design/mainframe/JForm.java index 30dff7934..757da397e 100644 --- a/designer-form/src/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/com/fr/design/mainframe/JForm.java @@ -53,7 +53,7 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WLayout; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import com.fr.stable.Constants; @@ -735,7 +735,7 @@ public class JForm extends JTemplate implements BaseJForm { try { Thread.sleep(1500); } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } JPanel pane = new JPanel(); pane.setLayout(new BorderLayout()); diff --git a/designer-form/src/com/fr/design/mainframe/WidgetToolBarPane.java b/designer-form/src/com/fr/design/mainframe/WidgetToolBarPane.java index 80b7abfe4..5599bfe16 100644 --- a/designer-form/src/com/fr/design/mainframe/WidgetToolBarPane.java +++ b/designer-form/src/com/fr/design/mainframe/WidgetToolBarPane.java @@ -10,8 +10,20 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.module.DesignModuleFactory; import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BasicStroke; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Insets; +import java.awt.LayoutManager; +import java.awt.Stroke; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.ImageObserver; @@ -47,7 +59,7 @@ public class WidgetToolBarPane extends BasicPane implements DesignToolbarProvide } public void refreshToolbar() { - reset(); + singleton.reset(); } public static void refresh() { diff --git a/designer-form/src/com/fr/design/mainframe/actions/EmbeddedFormExportExportAction.java b/designer-form/src/com/fr/design/mainframe/actions/EmbeddedFormExportExportAction.java index 08b6be6b8..2d8698f35 100644 --- a/designer-form/src/com/fr/design/mainframe/actions/EmbeddedFormExportExportAction.java +++ b/designer-form/src/com/fr/design/mainframe/actions/EmbeddedFormExportExportAction.java @@ -1,13 +1,5 @@ package com.fr.design.mainframe.actions; -import java.awt.event.ActionEvent; -import java.io.FileOutputStream; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.JOptionPane; -import javax.swing.SwingWorker; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.Parameter; @@ -25,11 +17,18 @@ import com.fr.file.FILEChooserPane; import com.fr.file.filter.ChooseFileFilter; import com.fr.form.main.Form; import com.fr.form.main.FormEmbeddedTableDataExporter; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.project.ProjectConstants; +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.io.FileOutputStream; +import java.util.HashMap; +import java.util.Map; + /** * Export Embedded. */ @@ -84,7 +83,7 @@ public class EmbeddedFormExportExportAction extends JTemplateAction{ try { file.mkfile(); } catch (Exception e1) { - FRLogger.getLogger().error("Error In Make New File"); + FineLoggerFactory.getLogger().error("Error In Make New File"); } fileChooserPane = null; FRContext.getLogger().info("\"" + file.getName() + "\"" + Inter.getLocText("FR-Designer_Prepare_Export") + "!"); @@ -141,7 +140,7 @@ public class EmbeddedFormExportExportAction extends JTemplateAction{ Inter.getLocText("FR-Designer_Exported_successfully") + "\n" + filePath); } catch (Exception exp) { this.setProgress(100); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Export_failed") + "\n" + filePath); } return null; 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 863dd1b95..a3cd042fa 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 @@ -7,6 +7,9 @@ import com.fr.design.mainframe.widget.editors.ITextComponent; import com.fr.design.mainframe.widget.renderer.WatermarkRenderer; import com.fr.design.mainframe.widget.wrappers.WatermarkWrapper; import com.fr.design.report.WatermarkPane; +import com.fr.plugin.ExtraClassManager; +import com.fr.stable.ReportFunctionProcessor; +import com.fr.stable.fun.FunctionProcessor; import javax.swing.SwingUtilities; import java.awt.Dimension; @@ -40,6 +43,11 @@ public class AccessibleBodyWatermarkEditor extends UneditableAccessibleEditor { public void doOk() { setValue(watermarkPane.update()); fireStateChanged(); + // 功能点 + FunctionProcessor processor = ExtraClassManager.getInstance().getFunctionProcessor(); + if (processor != null) { + processor.recordFunction(ReportFunctionProcessor.WATERMARK); + } } }); watermarkPane.populate((WatermarkAttr) getValue()); 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 387c6f782..c45de9795 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 @@ -23,7 +23,7 @@ import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WAbsoluteBodyLayout; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBodyLayoutType; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.report.core.ReportUtils; @@ -185,7 +185,7 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { formDesigner.getSelectionModel().setSelectedCreator(xfl); return true; } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); return false; } } 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 5eb67b136..41c24f940 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 @@ -32,7 +32,7 @@ import com.fr.form.ui.container.WAbsoluteBodyLayout; 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.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.report.core.ReportUtils; @@ -194,7 +194,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 验证下 diff --git a/designer-realize/src/com/fr/design/actions/file/export/AbstractExportAction.java b/designer-realize/src/com/fr/design/actions/file/export/AbstractExportAction.java index 5ba9688b4..526a80152 100644 --- a/designer-realize/src/com/fr/design/actions/file/export/AbstractExportAction.java +++ b/designer-realize/src/com/fr/design/actions/file/export/AbstractExportAction.java @@ -15,7 +15,7 @@ import com.fr.design.parameter.ParameterInputPane; import com.fr.file.FILE; import com.fr.file.FILEChooserPane; import com.fr.file.filter.ChooseFileFilter; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.io.exporter.AppExporter; import com.fr.io.exporter.CSVExporter; @@ -24,6 +24,7 @@ import com.fr.io.exporter.ExcelExporter; import com.fr.io.exporter.Exporter; import com.fr.io.exporter.PDFExporterProcessor; import com.fr.io.exporter.WordExporter; +import com.fr.log.FineLoggerFactory; import com.fr.main.TemplateWorkBook; import com.fr.main.impl.WorkBook; import com.fr.page.PageSetProvider; @@ -34,8 +35,7 @@ import com.fr.report.worksheet.WorkSheet; import com.fr.stable.ActorConstants; import com.fr.stable.ActorFactory; -import javax.swing.JOptionPane; -import javax.swing.SwingWorker; +import javax.swing.*; import java.awt.event.ActionEvent; import java.io.OutputStream; import java.util.Map; @@ -98,7 +98,7 @@ public abstract class AbstractExportAction extends JWorkBookAction { try { file.mkfile(); } catch (Exception e1) { - FRLogger.getLogger().error("Error In Make New File"); + FineLoggerFactory.getLogger().error("Error In Make New File"); } fileChooserPane = null; FRContext.getLogger().info("\"" + file.getName() + "\"" + Inter.getLocText("FR-Designer_Prepare_Export") + "!"); @@ -132,7 +132,7 @@ public abstract class AbstractExportAction extends JWorkBookAction { Inter.getLocText("FR-Designer_Exported_successfully") + "\n" + filePath); } catch (Exception exp) { this.setProgress(100); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Export_failed") + "\n" + filePath); } return null; diff --git a/designer-realize/src/com/fr/design/actions/insert/flot/ChartFloatAction.java b/designer-realize/src/com/fr/design/actions/insert/flot/ChartFloatAction.java index 3e6790fa6..d4cee179f 100644 --- a/designer-realize/src/com/fr/design/actions/insert/flot/ChartFloatAction.java +++ b/designer-realize/src/com/fr/design/actions/insert/flot/ChartFloatAction.java @@ -15,7 +15,7 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.menu.MenuKeySet; import com.fr.design.module.DesignModuleFactory; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.grid.Grid; import com.fr.grid.selection.FloatSelection; @@ -123,7 +123,7 @@ public class ChartFloatAction extends ElementCaseAction { reportPane.setSelection(new FloatSelection(newFloatElement.getName())); reportPane.fireSelectionChangeListener(); } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error in Float"); + FineLoggerFactory.getLogger().error("Error in Float"); } } }); 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 ebe0b4ed1..d74d1698a 100644 --- a/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java +++ b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java @@ -9,7 +9,10 @@ import com.fr.design.mainframe.JWorkBook; import com.fr.design.menu.KeySetUtils; import com.fr.design.report.WatermarkPane; import com.fr.main.impl.WorkBook; +import com.fr.plugin.ExtraClassManager; import com.fr.report.core.ReportUtils; +import com.fr.stable.ReportFunctionProcessor; +import com.fr.stable.fun.FunctionProcessor; import java.awt.event.ActionEvent; @@ -42,6 +45,11 @@ public class ReportWatermarkAction extends JWorkBookAction { public void doOk() { wbTpl.addAttrMark(watermarkPane.update()); jwb.fireTargetModified(); + // 功能点 + FunctionProcessor processor = ExtraClassManager.getInstance().getFunctionProcessor(); + if (processor != null) { + processor.recordFunction(ReportFunctionProcessor.WATERMARK); + } } }).setVisible(true); } diff --git a/designer-realize/src/com/fr/design/dscolumn/DSColumnBasicPane.java b/designer-realize/src/com/fr/design/dscolumn/DSColumnBasicPane.java index e5b3b7f87..43cae70dc 100644 --- a/designer-realize/src/com/fr/design/dscolumn/DSColumnBasicPane.java +++ b/designer-realize/src/com/fr/design/dscolumn/DSColumnBasicPane.java @@ -14,8 +14,9 @@ import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.CellExpandAttr; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -27,6 +28,29 @@ public class DSColumnBasicPane extends BasicPane { private ExpandDirectionPane expandDirectionPane; private CellElement cellElement; + private ActionListener summaryDirectionActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (expandDirectionPane != null) { + expandDirectionPane.setNoneRadioButtonSelected(true); + } + } + }; + private ActionListener othergroupDirectionActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (expandDirectionPane != null) { + expandDirectionPane.setNoneRadioButtonSelected(false); + } + } + }; + private ActionListener sdcupdateActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + selectDataColumnPane.update(cellElement); + } + }; + public DSColumnBasicPane() { this(DSColumnPane.SETTING_ALL); } @@ -78,7 +102,7 @@ public class DSColumnBasicPane extends BasicPane { this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER); - this.resultSetGroupPane.addListeners(summary_direction_ActionListener, otherGroup_direction_ActionListener, sdcUpdate_ActionListener); + this.resultSetGroupPane.addListeners(summaryDirectionActionlistener, othergroupDirectionActionlistener, sdcupdateActionlistener); } @Override @@ -93,7 +117,7 @@ public class DSColumnBasicPane extends BasicPane { this.cellElement = cellElement; - selectDataColumnPane.populate(source, cellElement); + selectDataColumnPane.populate(source, cellElement, null); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); if (conditionParentPane != null) { @@ -134,29 +158,6 @@ public class DSColumnBasicPane extends BasicPane { resultSetGroupPane.update(); } - ActionListener summary_direction_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (expandDirectionPane != null) { - expandDirectionPane.setNoneRadioButtonSelected(true); - } - } - }; - ActionListener otherGroup_direction_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (expandDirectionPane != null) { - expandDirectionPane.setNoneRadioButtonSelected(false); - } - } - }; - ActionListener sdcUpdate_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - selectDataColumnPane.update(cellElement); - } - }; - public void putElementcase(ElementCasePane t) { if (conditionParentPane != null) { conditionParentPane.putElementcase(t); diff --git a/designer-realize/src/com/fr/design/dscolumn/DSColumnPane.java b/designer-realize/src/com/fr/design/dscolumn/DSColumnPane.java index 2e5d25189..af48fb853 100644 --- a/designer-realize/src/com/fr/design/dscolumn/DSColumnPane.java +++ b/designer-realize/src/com/fr/design/dscolumn/DSColumnPane.java @@ -1,26 +1,30 @@ package com.fr.design.dscolumn; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.FRContext; import com.fr.data.TableDataSource; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; -import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; +import com.fr.general.Inter; import com.fr.report.cell.CellElement; import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.TemplateCellElement; +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +/** + * @author null + * @version 2018年2月9日13点47分 + * @since 8.0 + */ public class DSColumnPane extends BasicPane { private TableDataSource tplEC; @@ -29,17 +33,56 @@ public class DSColumnPane extends BasicPane { private DSColumnConditionsPane conditionPane = null; private DSColumnAdvancedPane advancedPane = null; private TemplateCellElement cellElement; - protected Component lastSelectedComponent; - + private Component lastSelectedComponent; + public static final int SETTING_ALL = 2; public static final int SETTING_DSRELATED = 1; - + + + private ChangeListener appliedWizardTabChangeListener = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent evt) { + try { + if (lastSelectedComponent == null) { + lastSelectedComponent = basicPane; + } + // selectTabComponent是正要切换到的那个Pane + Component selectTabComponent = tabbedPane.getSelectedComponent(); + // denny: 如果切换Tab时上一个Pane是basicPane, 则刷新一下其他Pane, + // 因为选择的数据列可能改变, 导致后面过滤和使用公式用到的数据项改变 + if (lastSelectedComponent == basicPane) { + basicPane.update(cellElement); + + // denny_GUI: 刷新其他面板 + refreshOtherTabs(); + } + // 切换标签的时候就,确认是否有没有添加到列表中的条件 + lastSelectedComponent = selectTabComponent; + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + + } + }; + /** + * cellElement 改变时,刷新一下 + * 比如:上边切换Tab时,basicPane Update了一下,可能会改变Field cellElement的值 + */ + private PropertyChangeListener myPropertyChangeListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + refreshOtherTabs(); + } + }; + public DSColumnPane() { - this.initComponents(SETTING_ALL); + this(SETTING_ALL); } - + public DSColumnPane(int setting) { - this.initComponents(setting); + this.initComponents(setting); } protected void initComponents(int setting) { @@ -65,18 +108,22 @@ public class DSColumnPane extends BasicPane { this.setPreferredSize(new Dimension(610, 400)); } - + @Override protected String title4PopupWindow() { - return Inter.getLocText("ExpandD-Data_Column"); + return Inter.getLocText("ExpandD-Data_Column"); } - /* - * populate + /** + * 更新面板信息 + * + * @param tds 数据源 + * @param cellElement 单元格 + * @throws Exception e */ public void populate(TableDataSource tds, TemplateCellElement cellElement) throws Exception { - this.tplEC = tds; - + this.tplEC = tds; + if (tds == null || cellElement == null) { // _denny: 我不认为这种情况应该出现,以防万一 this.cellElement = new DefaultTemplateCellElement(); @@ -85,15 +132,18 @@ public class DSColumnPane extends BasicPane { // _denny: 这边需要克隆一下,因为在设置时,可能改变字段cellElement,但改变真实值是不被期望的 try { this.cellElement = (TemplateCellElement) cellElement.clone(); - } catch (CloneNotSupportedException ce) { + } catch (CloneNotSupportedException ignored) { } + //REPORT-7744 9.0里面过滤条件和高级设置可以通过其他地方设置,populate的时候需要更新所有面板的信息,防止设置丢失 this.basicPane.populate(tds, this.cellElement); this.conditionPane.populate(tds, this.cellElement); this.advancedPane.populate(this.cellElement); } - /* - * update + /** + * update 保存 + * + * @return 单元格信息 */ public CellElement update() { this.basicPane.update(cellElement); @@ -101,54 +151,24 @@ public class DSColumnPane extends BasicPane { this.advancedPane.update(cellElement); return cellElement; } - public ChangeListener appliedWizardTabChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent evt) { - try { - if (lastSelectedComponent == null) { - lastSelectedComponent = basicPane; - } - //selectTabComponent是正要切换到的那个Pane - Component selectTabComponent = tabbedPane.getSelectedComponent(); - // _denny: 如果切换Tab时上一个Pane是basicPane, 则刷新一下其他Pane, - // 因为选择的数据列可能改变, 导致后面过滤和使用公式用到的数据项改变 - if (lastSelectedComponent == basicPane) { - basicPane.update(cellElement); - - // denny_GUI: 刷新其他面板 - refrushOtherTabs(); - } - // 切换标签的时候就,确认是否有没有添加到列表中的条件 - lastSelectedComponent = selectTabComponent; - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - }; - // cellElement 改变时,刷新一下 - // 比如:上边切换Tab时,basicPane Update了一下,可能会改变Field cellElement的值 - PropertyChangeListener myPropertyChangeListener = new PropertyChangeListener() { - - public void propertyChange(PropertyChangeEvent evt) { - refrushOtherTabs(); - } - }; - - //_denny:当数据tab中的数据发生变化的时候刷新后面的tab - public void refrushOtherTabs() { - // ——deny:当JTabPane中加入一个Pane时,后面的Pane可能还没有初始化 + /** + * denny:当数据tab中的数据发生变化的时候刷新后面的tab + */ + private void refreshOtherTabs() { + // deny:当JTabPane中加入一个Pane时,后面的Pane可能还没有初始化 if (conditionPane == null || advancedPane == null) { return; } this.conditionPane.populate(tplEC, cellElement); this.advancedPane.populate(cellElement); } - public void putElementcase(ElementCasePane t){ - basicPane.putElementcase(t); + + public void putElementcase(ElementCasePane t) { + basicPane.putElementcase(t); } - public void putCellElement(TemplateCellElement tplCE) { - basicPane.putCellElement(tplCE); - } + public void putCellElement(TemplateCellElement tplCE) { + basicPane.putCellElement(tplCE); + } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java b/designer-realize/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java index e2e21b8e4..2da652444 100644 --- a/designer-realize/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java +++ b/designer-realize/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java @@ -6,7 +6,7 @@ import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.main.impl.WorkBook; import com.fr.report.cell.TemplateCellElement; -import java.awt.*; +import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Iterator; @@ -17,6 +17,7 @@ public class SelectedConfirmedDataColumnPane extends SelectedDataColumnPane { super(false); } + @Override protected void initTableNameComboBox() { tableNameComboBox = new TableDataComboBox(new WorkBook()); tableNameComboBox.addItemListener(new ItemListener() { @@ -32,14 +33,14 @@ public class SelectedConfirmedDataColumnPane extends SelectedDataColumnPane { tableNameComboBox.refresh(source); tableNameComboBox.setEditable(false); tableNameComboBox.setEnabled(false); - super.populate(source, cell); + super.populate(source, cell, null); try { Iterator it = source.getTableDataNameIterator(); String name = (String) it.next(); TemplateTableDataWrapper wrapper = new TemplateTableDataWrapper(source.getTableData(name), name); tableNameComboBox.setSelectedItem(wrapper); tableNameComboBox.getModel().setSelectedItem(wrapper); - } catch (Exception e) { + } catch (Exception ignored) { } } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer-realize/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 362c28166..aec849e41 100644 --- a/designer-realize/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer-realize/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -26,14 +26,18 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.regex.Pattern; /** @@ -41,31 +45,87 @@ import java.util.regex.Pattern; * * @author yaoh.wu * @version 2017年8月3日 - * 复用对话框代码,保留对话框原始布局 + * 复用对话框代码,保留对话框原始布局 * @since 8.0 */ public class SelectedDataColumnPane extends BasicPane { + + /** + * 参数编辑器面板 + */ private UITableEditorPane editorPane; + /** + * 参数 + */ private Parameter[] ps; - + /** + * 数据集下拉框 + */ TableDataComboBox tableNameComboBox; + /** + * 动态参数注入按钮 + */ + private UIButton paramButton; + /** + * 数据列下拉框 + */ LazyComboBox columnNameComboBox; + + /** + * 数据集下拉框和数据列下拉框监听器 + */ private ItemListener itemListener; - private UIButton paramButton; - public SelectedDataColumnPane() { - this(true, false, null, null); + /** + * 当前编辑的模板面板,用于触发保存操作 + */ + private ElementCasePane casePane; + /** + * 保存当前选中的 CE + */ + private CellElement cellElement; + + private static final Pattern COLUMN_NAME_PATTERN = Pattern.compile("[^\\d]"); + + /** + * 数据集下拉框变动后修改数据列下拉框加载状态的监听器 + */ + private ItemListener isNeedReloadListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + columnNameComboBox.setLoaded(false); + } + } + }; + + /** + * 创建横向布局附带显示动态参数注入按钮的数据集数据列选择面板 + */ + SelectedDataColumnPane() { + this(true, false); } - public SelectedDataColumnPane(boolean showParameterButton) { - this(showParameterButton, false, null, null); + /** + * 创建横向布局的数据集数据列选择面板 + * + * @param showParameterButton 是否显示动态参数注入按钮 + */ + SelectedDataColumnPane(boolean showParameterButton) { + this(showParameterButton, false); } - public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout, ElementCasePane casePane, TemplateCellElement cellElement) { + /** + * 创建数据集数据列选择面板 + * + * @param showParameterButton 是否显示动态参数注入按钮 + * @param verticalLayout 是否是垂直布局 + */ + public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout) { if (verticalLayout) { - initComponentVerticalLayout(casePane, cellElement); + initComponentVerticalLayout(); } else { initComponent(showParameterButton); } @@ -79,7 +139,7 @@ public class SelectedDataColumnPane extends BasicPane { public void initComponent(boolean showParameterButton) { initTableNameComboBox(); if (showParameterButton) { - initWithParameterButton(); + initParameterButton(); } columnNameComboBox = new LazyComboBox() { @@ -119,9 +179,9 @@ public class SelectedDataColumnPane extends BasicPane { /** * 初始化竖直布局的组件 */ - public void initComponentVerticalLayout(ElementCasePane casePane, TemplateCellElement cellElement) { + private void initComponentVerticalLayout() { initTableNameComboBox(); - initWithParameterButton(casePane, cellElement); + initVerticalParameterButton(); columnNameComboBox = new LazyComboBox() { @Override public Object[] load() { @@ -149,13 +209,22 @@ public class SelectedDataColumnPane extends BasicPane { } - public void populate(TableDataSource source, TemplateCellElement cellElement) { + /** + * 更新面板数据 + * + * @param source 数据源 + * @param cellElement 单元格 + * @param casePane 当前编辑的模板面板 + */ + public void populate(TableDataSource source, TemplateCellElement cellElement, ElementCasePane casePane) { + tableNameComboBox.refresh(source); + this.casePane = casePane; if (cellElement == null) { return; } - if (itemListener != null) { - removeListener(itemListener); - } + this.cellElement = cellElement; + removeListener(); + Object value = cellElement.getValue(); if (!(value instanceof DSColumn)) { return; @@ -166,9 +235,14 @@ public class SelectedDataColumnPane extends BasicPane { columnNameComboBox.setSelectedItem(TableDataColumn.getColumnName(dsColumn.getColumn())); ps = dsColumn.getParameters(); - addListener(itemListener); + addListener(); } + /** + * 保存数据到单元格对象中 + * + * @param cellElement 单元格 + */ public void update(CellElement cellElement) { if (cellElement == null) { return; @@ -177,7 +251,7 @@ public class SelectedDataColumnPane extends BasicPane { if (this.tableNameComboBox.getSelectedItem() == null && this.columnNameComboBox.getSelectedItem() == null) { return; } - DSColumn dsColumn = null; + DSColumn dsColumn; if (value == null || !(value instanceof DSColumn)) { dsColumn = new DSColumn(); cellElement.setValue(dsColumn); @@ -185,18 +259,27 @@ public class SelectedDataColumnPane extends BasicPane { dsColumn = (DSColumn) cellElement.getValue(); SimpleDSColumn simpleDSColumn = updateColumnPane(); - dsColumn.setDSName(simpleDSColumn.getDsName()); + dsColumn.setDSName(Objects.requireNonNull(simpleDSColumn).getDsName()); dsColumn.setColumn(simpleDSColumn.getColumn()); dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null); } + /** + * 释放模板对象 + */ + public void release() { + this.cellElement = null; + this.casePane = null; + this.tableNameComboBox.setModel(new DefaultComboBoxModel()); + } + /** * 更新面板 * * @return 更新后的值 */ - public SimpleDSColumn updateColumnPane() { + private SimpleDSColumn updateColumnPane() { SimpleDSColumn dsColumn = new SimpleDSColumn(); TableDataWrapper tableDataWrappe = this.tableNameComboBox.getSelectedItem(); if (tableDataWrappe == null) { @@ -206,9 +289,8 @@ public class SelectedDataColumnPane extends BasicPane { TableDataColumn column; String columnExp = (String) this.columnNameComboBox.getSelectedItem(); if (isColumnName(columnExp)) { - String number = columnExp.substring(1); - Pattern pattern = Pattern.compile("[^\\d]"); - if (pattern.matcher(number).find()) { + String number = Objects.requireNonNull(columnExp).substring(1); + if (COLUMN_NAME_PATTERN.matcher(number).find()) { column = TableDataColumn.createColumn(columnExp); } else { int serialNumber = Integer.parseInt(columnExp.substring(1)); @@ -221,36 +303,31 @@ public class SelectedDataColumnPane extends BasicPane { return dsColumn; } + public void setListener(ItemListener i) { + this.itemListener = i; + } + /** * 添加监听事件 - * - * @param i 监听事件 */ - public void addListener(ItemListener i) { - itemListener = i; - tableNameComboBox.addItemListener(i); - columnNameComboBox.addItemListener(i); + private void addListener() { + tableNameComboBox.addItemListener(this.itemListener); + columnNameComboBox.addItemListener(this.itemListener); + tableNameComboBox.addItemListener(this.isNeedReloadListener); } /** * 移除监听事件 - * - * @param i 监听事件 */ - public void removeListener(ItemListener i) { - tableNameComboBox.removeItemListener(i); - columnNameComboBox.removeItemListener(i); + private void removeListener() { + tableNameComboBox.removeItemListener(this.itemListener); + columnNameComboBox.removeItemListener(this.itemListener); + tableNameComboBox.removeItemListener(this.isNeedReloadListener); } protected void initTableNameComboBox() { tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); - tableNameComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - columnNameComboBox.setLoaded(false); - } - }); tableNameComboBox.setPreferredSize(new Dimension(100, 20)); } @@ -260,8 +337,8 @@ public class SelectedDataColumnPane extends BasicPane { } - private void initWithParameterButton() { - editorPane = new UITableEditorPane(new ParameterTableModel()); + private void initParameterButton() { + editorPane = new UITableEditorPane<>(new ParameterTableModel()); paramButton = new UIButton(Inter.getLocText("TableData_Dynamic_Parameter_Setting")); paramButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -279,18 +356,18 @@ public class SelectedDataColumnPane extends BasicPane { }); } - private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) { - final SelectedDataColumnPane that = this; - editorPane = new UITableEditorPane(new ParameterTableModel()); + private void initVerticalParameterButton() { + editorPane = new UITableEditorPane<>(new ParameterTableModel()); paramButton = new UIButton(Inter.getLocText("FR-Designer-Basic_Dynamic_Parameter_Injection")); paramButton.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { BasicDialog paramDialog = editorPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { List parameterList = editorPane.update(); ps = parameterList.toArray(new Parameter[parameterList.size()]); - that.update(cellElement); + update(SelectedDataColumnPane.this.cellElement); casePane.fireTargetModified(); } }); @@ -310,6 +387,6 @@ public class SelectedDataColumnPane extends BasicPane { if (this.tableNameComboBox.getSelectedItem() != null) { return this.tableNameComboBox.getSelectedItem().calculateColumnNameList(); } - return new ArrayList(); + return new ArrayList<>(); } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/mainframe/CellWidgetPropertyPane.java b/designer-realize/src/com/fr/design/mainframe/CellWidgetPropertyPane.java index 38d3c3905..9d311c310 100644 --- a/designer-realize/src/com/fr/design/mainframe/CellWidgetPropertyPane.java +++ b/designer-realize/src/com/fr/design/mainframe/CellWidgetPropertyPane.java @@ -7,7 +7,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.widget.WidgetPane; import com.fr.form.ui.NoneWidget; import com.fr.form.ui.Widget; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; @@ -149,7 +149,7 @@ public class CellWidgetPropertyPane extends BasicPane { newWidget.setWidgetPrivilegeControl((WidgetPrivilegeControl) oldWidget.getWidgetPrivilegeControl().clone()); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return newWidget; } diff --git a/designer-realize/src/com/fr/design/mainframe/ElementCasePane.java b/designer-realize/src/com/fr/design/mainframe/ElementCasePane.java index ad2c91eb0..fe4841962 100644 --- a/designer-realize/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer-realize/src/com/fr/design/mainframe/ElementCasePane.java @@ -81,7 +81,7 @@ import com.fr.design.selection.Selectedable; import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionListener; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.grid.Grid; import com.fr.grid.GridColumn; @@ -421,10 +421,10 @@ public abstract class ElementCasePane extends Tar c = clazz.getConstructor(ElementCase.class); editor = (CellEditor) c.newInstance(this); } catch (Exception e1) { - FRLogger.getLogger().error(e1.getMessage(), e1); + FineLoggerFactory.getLogger().error(e1.getMessage(), e1); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } grid.setDefaultCellEditor(provider.targetObjectClass(), editor); } @@ -524,6 +524,13 @@ public abstract class ElementCasePane extends Tar * 因为这边判断selection是一个selection,所以不会触发fireSelectionChanged */ public void setSelection(Selection selection) { + try { + //旧选中内容编辑器释放模板对象 + this.getCurrentEditor().release(); + } catch (UnsupportedOperationException e) { + FRContext.getLogger().info("Nothing to release"); + } + if (!ComparatorUtils.equals(this.selection, selection) || !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { this.selection = selection; diff --git a/designer-realize/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer-realize/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 4249d9a55..38a13c2c0 100644 --- a/designer-realize/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer-realize/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -1,38 +1,42 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; -import com.fr.design.actions.edit.HyperlinkAction; -import com.fr.design.fun.MenuHandler; -import com.fr.design.gui.frpane.HyperlinkGroupPane; -import com.fr.design.menu.KeySetUtils; -import com.fr.design.present.ConditionAttributesGroupPane; -import com.fr.general.Inter; -import com.fr.grid.selection.FloatSelection; -import com.fr.grid.selection.Selection; -import com.fr.page.ReportSettingsProvider; -import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.DesignState; import com.fr.design.actions.UpdateAction; -import com.fr.design.actions.cell.*; +import com.fr.design.actions.cell.CellAttributeAction; +import com.fr.design.actions.cell.CellExpandAttrAction; +import com.fr.design.actions.cell.CellWidgetAttrAction; +import com.fr.design.actions.cell.ConditionAttributesAction; +import com.fr.design.actions.cell.GlobalStyleMenuDef; import com.fr.design.actions.columnrow.InsertColumnAction; import com.fr.design.actions.columnrow.InsertRowAction; import com.fr.design.actions.core.ActionFactory; +import com.fr.design.actions.edit.HyperlinkAction; import com.fr.design.actions.edit.merge.MergeCellAction; import com.fr.design.actions.edit.merge.UnmergeCellAction; import com.fr.design.actions.utils.DeprecatedActionManager; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.fun.MenuHandler; +import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.mainframe.cell.QuickEditorRegion; +import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; -import com.fr.report.worksheet.WorkSheet; +import com.fr.design.present.ConditionAttributesGroupPane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionListener; +import com.fr.general.Inter; +import com.fr.grid.selection.FloatSelection; +import com.fr.grid.selection.Selection; +import com.fr.page.ReportSettingsProvider; +import com.fr.report.worksheet.WorkSheet; import com.fr.stable.ArrayUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import java.awt.BorderLayout; /** * 类说明: 设计面板中最上方的"插入" "单元格"下拉列表Menu模块. @@ -81,11 +85,11 @@ public class ElementCasePaneDelegate extends ElementCasePane { CellElementPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); QuickEditorRegion.getInstance().populate(getCurrentEditor()); JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + // 模板初始化完成后,才能初始化超级链接面板 if (editingTemplate != null && !editingTemplate.isUpMode()) { Selection editingSelection = getSelection(); - // 模板初始化完成后,才能初始化超级链接面板 + // 获取超级链接面板并刷新显示 HyperlinkGroupPane hyperlinkGroupPane = editingTemplate.getHyperLinkPane(HyperlinkGroupPaneActionImpl.getInstance()); - hyperlinkGroupPane.populate(ElementCasePaneDelegate.this); if (editingSelection instanceof FloatSelection) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT_FLOAT); JPanel floatPane = new JPanel(new BorderLayout()); diff --git a/designer-realize/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer-realize/src/com/fr/design/mainframe/ReportComponentComposite.java index 1893301f2..661fb0d69 100644 --- a/designer-realize/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer-realize/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -127,9 +127,8 @@ public class ReportComponentComposite extends JComponent { templateStateList.add(null); } centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement()); - if (jSliderContainer != null){ - jSliderContainer.reset(); - } + jSliderContainer=JSliderPane.getInstance(); + jSliderContainer.reset(); } if (centerCardPane.editingComponet.elementCasePane == null) { diff --git a/designer-realize/src/com/fr/design/mainframe/ReportHyperlinkGroupPaneNoPop.java b/designer-realize/src/com/fr/design/mainframe/ReportHyperlinkGroupPaneNoPop.java index 451c89975..91c8b65d8 100644 --- a/designer-realize/src/com/fr/design/mainframe/ReportHyperlinkGroupPaneNoPop.java +++ b/designer-realize/src/com/fr/design/mainframe/ReportHyperlinkGroupPaneNoPop.java @@ -24,4 +24,9 @@ public class ReportHyperlinkGroupPaneNoPop extends ReportHyperlinkGroupPane{ protected boolean isNewStyle() { return false; } + + @Override + public boolean needAutoSave() { + return false; + } } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java index cb2bbc437..324006f93 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.cell.model; import com.fr.design.actions.UpdateAction; import com.fr.design.mainframe.alphafine.CellType; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.json.JSONException; import com.fr.json.JSONObject; @@ -58,7 +58,7 @@ public class ActionModel extends AlphaCellModel { modelObject.put("className", getAction().getClass().getName()).put("searchCount", getSearchCount()); object.put("result", modelObject).put("cellType", getType().getTypeValue()); } catch (JSONException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return object; } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java index a42e9ed97..4cb7cd16d 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.cell.model; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.json.JSONException; import com.fr.json.JSONObject; @@ -47,7 +47,7 @@ public class DocumentModel extends AlphaCellModel { modelObject.put("title", getName()).put("summary", getContent()).put("did", getDocumentId()).put("searchCount", getSearchCount()); object.put("result", modelObject).put("cellType", getType().getTypeValue()); } catch (JSONException e) { - FRLogger.getLogger().error("DocumentModel: " + e.getMessage()); + FineLoggerFactory.getLogger().error("DocumentModel: " + e.getMessage()); } return object; } @@ -62,9 +62,9 @@ public class DocumentModel extends AlphaCellModel { try { Desktop.getDesktop().browse(new URI(getDocumentUrl())); } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (URISyntaxException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/FileModel.java b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/FileModel.java index e18ed9afe..70d55b872 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/FileModel.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/FileModel.java @@ -5,7 +5,7 @@ import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.json.JSONException; import com.fr.json.JSONObject; @@ -42,7 +42,7 @@ public class FileModel extends AlphaCellModel { modelObject.put("filePath", getFilePath()).put("searchCount", getSearchCount()); object.put("result", modelObject).put("cellType", getType().getTypeValue()); } catch (JSONException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return object; } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 44c6ae660..f8782c10a 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -5,7 +5,7 @@ import com.fr.design.extra.WebViewDlgHelper; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.env.RemoteEnv; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.stable.StringUtils; @@ -93,7 +93,7 @@ public class PluginModel extends AlphaCellModel { modelObject.put("name", getName()).put("description", getContent()).put("pic", getImageUrl()).put("version", getVersion()).put("jartime", getJartime()).put("id", getId()).put("pluginid", getPluginId()).put("type", getType().getTypeValue()).put("price", getPrice()).put("link", getLink()).put("searchCount", getSearchCount()); object.put("result", modelObject).put("cellType", getType().getTypeValue()); } catch (JSONException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return object; diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 59237baad..33dd2893e 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -32,7 +32,7 @@ import com.fr.design.mainframe.alphafine.search.manager.impl.RecommendSearchMana import com.fr.form.main.Form; import com.fr.form.main.FormIO; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.io.TemplateWorkBookIO; @@ -509,7 +509,7 @@ public class AlphaFineDialog extends UIDialog { try { form = FormIO.readForm(FRContext.getCurrentEnv(), fileName); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return FormIO.exportFormAsImage(form); } @@ -521,9 +521,9 @@ public class AlphaFineDialog extends UIDialog { try { rightSearchResultPane.add(new FilePreviewPane(get())); } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (ExecutionException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } validate(); repaint(); @@ -541,7 +541,7 @@ public class AlphaFineDialog extends UIDialog { try { workBook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(), fileName); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } BufferedImage bufferedImage = new ImageExporter().exportToImage(workBook); return bufferedImage; @@ -556,9 +556,9 @@ public class AlphaFineDialog extends UIDialog { validate(); repaint(); } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (ExecutionException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } @@ -593,7 +593,7 @@ public class AlphaFineDialog extends UIDialog { try { bufferedImage = ImageIO.read(getClass().getResource("/com/fr/design/mainframe/alphafine/images/default_product.png")); } catch (IOException e1) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } return bufferedImage; @@ -609,9 +609,9 @@ public class AlphaFineDialog extends UIDialog { repaint(); } } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } catch (ExecutionException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } @@ -695,7 +695,7 @@ public class AlphaFineDialog extends UIDialog { Thread.sleep(10); doSearch(searchTextField.getText().toLowerCase()); } catch (InterruptedException e1) { - FRLogger.getLogger().error(e1.getMessage()); + FineLoggerFactory.getLogger().error(e1.getMessage()); } } @@ -788,7 +788,7 @@ public class AlphaFineDialog extends UIDialog { try { object.put("uuid", uuid).put("activityKey", activityKey).put("username", username).put("createTime", createTime).put("key", key).put("resultKind", resultKind).put("resultValue", resultValue); } catch (JSONException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } final HashMap para = new HashMap<>(); String date = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()); @@ -797,7 +797,7 @@ public class AlphaFineDialog extends UIDialog { HttpClient httpClient = new HttpClient(AlphaFineConstants.CLOUD_SERVER_URL, para, true); httpClient.asGet(); if (!httpClient.isServerAlive()) { - FRLogger.getLogger().error("Failed to sent data to server!"); + FineLoggerFactory.getLogger().error("Failed to sent data to server!"); } } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index d4611256c..2fa777f03 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -8,7 +8,7 @@ import com.fr.design.mainframe.alphafine.cell.model.DocumentModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; @@ -88,7 +88,7 @@ public class DocumentSearchManager implements AlphaFineSearchProvider { } } } catch (JSONException e) { - FRLogger.getLogger().error("document search error: " + e.getMessage()); + FineLoggerFactory.getLogger().error("document search error: " + e.getMessage()); } } return lessModelList; diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 8cc578683..33c592073 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -12,7 +12,7 @@ import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.json.JSONObject; import com.fr.stable.StringUtils; @@ -175,7 +175,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { isr.close(); reader.close(); } catch (Exception e) { - FRLogger.getLogger().error("file read error: " + e.getMessage()); + FineLoggerFactory.getLogger().error("file read error: " + e.getMessage()); } } diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 17cd01f58..ab3ce080d 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -9,7 +9,7 @@ import com.fr.design.mainframe.alphafine.cell.model.PluginModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; @@ -57,7 +57,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { try { imageUrl = isFromCloud ? AlphaFineConstants.PLUGIN_IMAGE_URL + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineConstants.PLUGIN_IMAGE_URL.length()), "utf8") : object.optString("pic"); } catch (UnsupportedEncodingException e) { - FRLogger.getLogger().error("plugin icon error: " + e.getMessage()); + FineLoggerFactory.getLogger().error("plugin icon error: " + e.getMessage()); } String version = null; String jartime = null; @@ -133,9 +133,9 @@ public class PluginSearchManager implements AlphaFineSearchProvider { } } } catch (JSONException e) { - FRLogger.getLogger().error("plugin search json error :" + e.getMessage()); + FineLoggerFactory.getLogger().error("plugin search json error :" + e.getMessage()); } catch (UnsupportedEncodingException e) { - FRLogger.getLogger().error("plugin search encode error :" + e.getMessage()); + FineLoggerFactory.getLogger().error("plugin search encode error :" + e.getMessage()); } } return this.lessModelList; diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 9bc485287..2dc1ee9c0 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -10,7 +10,7 @@ import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; @@ -67,7 +67,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { } } } catch (JSONException e) { - FRLogger.getLogger().error("recommend search error! :" + e.getMessage()); + FineLoggerFactory.getLogger().error("recommend search error! :" + e.getMessage()); } Iterator modelIterator = recommendModelList.iterator(); while (modelIterator.hasNext()) { diff --git a/designer-realize/src/com/fr/design/mainframe/bbs/BBSDialog.java b/designer-realize/src/com/fr/design/mainframe/bbs/BBSDialog.java index b0667d4c6..ef4633f5a 100644 --- a/designer-realize/src/com/fr/design/mainframe/bbs/BBSDialog.java +++ b/designer-realize/src/com/fr/design/mainframe/bbs/BBSDialog.java @@ -4,7 +4,7 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.extra.PluginWebBridge; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.SiteCenter; import javafx.application.Platform; @@ -63,7 +63,7 @@ public class BBSDialog extends UIDialog { } }); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-realize/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java b/designer-realize/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java index 7acc4a2d7..6c0c8e694 100644 --- a/designer-realize/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java +++ b/designer-realize/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java @@ -11,6 +11,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.*; import com.fr.general.http.HttpClient; +import com.fr.log.FineLoggerFactory; import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; @@ -280,7 +281,7 @@ public class BBSLoginDialog extends UIDialog { username = URLEncoder.encode(username, EncodeConstants.ENCODING_GBK); password = URLEncoder.encode(password, EncodeConstants.ENCODING_GBK); } catch (UnsupportedEncodingException e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } String url = SiteCenter.getInstance().acquireUrlByKind("bbs.login") + "&username=" + username + "&password=" + password; String loginSuccessFlag = SiteCenter.getInstance().acquireUrlByKind("bbs"); @@ -293,7 +294,7 @@ public class BBSLoginDialog extends UIDialog { return true; } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } } } diff --git a/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java b/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java index 3fae72f92..69392dd39 100644 --- a/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java +++ b/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java @@ -11,7 +11,6 @@ import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.mainframe.DesignerContext; import com.fr.general.DateUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.EnvChangedListener; @@ -32,27 +31,42 @@ import java.util.Date; */ public class UserInfoPane extends BasicPane { - //默认未登录颜色 + /** + * 默认未登录颜色 + */ private static final Color UN_LOGIN_BACKGROUND = UIConstants.TEMPLATE_TAB_PANE_BACKGROUND; private static final Color LOGIN_BACKGROUND = new Color(184, 220, 242); private static final int WIDTH = 104; private static final int HEIGHT = 24; - //登录成功 + /** + * 登录成功 + */ private static final String LOGININ = "0"; - // 登录框弹出间隔时间 + /** + * 登录框弹出间隔时间 + */ private static final int LOGIN_DIFF_DAY = 7; - // 等待国际化等相关初始化工作完成之后再弹出登录框 + /** + * 等待国际化等相关初始化工作完成之后再弹出登录框 + */ private static final int WAIT_TIME = 10000; private UserInfoLabel userInfoLabel; + private static UserInfoPane instance = new UserInfoPane(); + + + public static UserInfoPane getInstance() { + return instance; + } + /** * 构造函数 */ - public UserInfoPane() { + private UserInfoPane() { this.setPreferredSize(new Dimension(WIDTH, HEIGHT)); this.setLayout(new BorderLayout()); @@ -73,6 +87,34 @@ public class UserInfoPane extends BasicPane { this.userInfoLabel = userInfoLabel; } + + /** + * 标志未登录状态, 面板设置为灰色 + */ + public void markUnSignIn() { + this.userInfoLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); + this.userInfoLabel.setOpaque(true); + this.userInfoLabel.setBackground(UN_LOGIN_BACKGROUND); + this.userInfoLabel.resetUserName(); + } + + /** + * 标志登陆状态, 面包设置为蓝色 + * + * @param userName 用户名 + */ + public void markSignIn(String userName) { + this.userInfoLabel.setText(userName); + this.userInfoLabel.setUserName(userName); + this.userInfoLabel.setOpaque(true); + this.userInfoLabel.setBackground(LOGIN_BACKGROUND); + } + + @Override + protected String title4PopupWindow() { + return StringUtils.EMPTY; + } + private void addEnvChangedListener() { GeneralContext.addEnvChangedListener(new EnvChangedListener() { @Override @@ -90,11 +132,15 @@ public class UserInfoPane extends BasicPane { } - // 计算xml保存的上次弹框时间和当前时间的时间差 + /** + * 计算xml保存的上次弹框时间和当前时间的时间差 + * + * @return 时间差 + */ private int getDiffFromLastLogin() { String lastBBSTime = DesignerEnvManager.getEnvManager().getLastShowBBSTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - Date lastBBSDate = null; + Date lastBBSDate; try { if (lastBBSTime != null) { synchronized (this) { @@ -108,7 +154,7 @@ public class UserInfoPane extends BasicPane { return dayNew - dayOld; } } catch (ParseException e) { - FRLogger.getLogger().error(e.getMessage()); + FRContext.getLogger().error(e.getMessage()); } return 1; } @@ -153,31 +199,5 @@ public class UserInfoPane extends BasicPane { showBBSThread.start(); } - /** - * 标志未登录状态, 面板设置为灰色 - */ - public void markUnSignIn() { - this.userInfoLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); - this.userInfoLabel.setOpaque(true); - this.userInfoLabel.setBackground(UN_LOGIN_BACKGROUND); - this.userInfoLabel.resetUserName(); - } - - /** - * 标志登陆状态, 面包设置为蓝色 - * - * @param userName 用户名 - */ - public void markSignIn(String userName) { - this.userInfoLabel.setText(userName); - this.userInfoLabel.setUserName(userName); - this.userInfoLabel.setOpaque(true); - this.userInfoLabel.setBackground(LOGIN_BACKGROUND); - } - - @Override - protected String title4PopupWindow() { - return StringUtils.EMPTY; - } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java b/designer-realize/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java index a56d251a7..8a3b2ded4 100644 --- a/designer-realize/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java +++ b/designer-realize/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java @@ -120,4 +120,9 @@ public abstract class AbstractDSCellEditorPane extends JPanel { scrollBar.setBlockIncrement(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP); scrollBar.setBorder(BorderFactory.createMatteBorder(0, CONTENT_PANE_WIDTH_GAP, 0, 0, this.getBackground())); } + + /** + * 释放tc + */ + protected abstract void release(); } diff --git a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java index e2a3b30ca..8e5471571 100644 --- a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java +++ b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java @@ -3,7 +3,6 @@ package com.fr.design.mainframe.errorinfo; import com.fr.base.FRContext; import com.fr.design.mainframe.SiteCenterToken; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; import com.fr.general.SiteCenter; @@ -11,8 +10,8 @@ import com.fr.general.http.HttpClient; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.license.function.VT4FR; +import com.fr.log.FineLoggerFactory; import com.fr.log.LogHandler; -import com.fr.stable.CodeUtils; import com.fr.stable.EnvChangedListener; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; @@ -21,8 +20,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.HashMap; /** @@ -41,7 +38,7 @@ public class ErrorInfoUploader { GeneralContext.addEnvChangedListener(new EnvChangedListener() { @Override public void envChanged() { - FRLogger.getLogger().addLogAppender(new LogHandler() { + FineLoggerFactory.getLogger().addLogAppender(new LogHandler() { @Override public ErrorInfoLogAppender getHandler() { return new ErrorInfoLogAppender(); @@ -53,7 +50,7 @@ public class ErrorInfoUploader { } private ErrorInfoUploader() { - FRLogger.getLogger().addLogAppender(new LogHandler() { + FineLoggerFactory.getLogger().addLogAppender(new LogHandler() { @Override public ErrorInfoLogAppender getHandler() { return new ErrorInfoLogAppender(); diff --git a/designer-realize/src/com/fr/design/module/DesignerModule.java b/designer-realize/src/com/fr/design/module/DesignerModule.java index d2697fa69..5b95d034f 100644 --- a/designer-realize/src/com/fr/design/module/DesignerModule.java +++ b/designer-realize/src/com/fr/design/module/DesignerModule.java @@ -49,7 +49,7 @@ import com.fr.design.parameter.WorkBookParameterReader; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.FILE; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.ModuleContext; import com.fr.general.xml.GeneralXMLTools; @@ -150,25 +150,25 @@ public class DesignerModule extends DesignModule { */ private void registerCellEditor() { - ActionFactory.registerCellEditorClass(String.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditorClass(Number.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditorClass(BaseFormula.class, CellFormulaQuickEditor.class); - ActionFactory.registerCellEditorClass(SubReport.class, CellSubReportEditor.class); - ActionFactory.registerCellEditorClass(RichText.class, CellRichTextEditor.class); - ActionFactory.registerCellEditorClass(DSColumn.class, CellDSColumnEditor.class); - ActionFactory.registerCellEditorClass(Image.class, CellImageQuickEditor.class); - ActionFactory.registerCellEditorClass(BiasTextPainter.class, CellBiasTextPainterEditor.class); - ActionFactory.registerCellEditorClass(BufferedImage.class, CellImageQuickEditor.class); + ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor()); + ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor()); + ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor()); + ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor()); + ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor()); + ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); + ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); ActionFactory.registerCellEditor(CellImagePainter.class, new CellImageQuickEditor()); - + //todo 图表编辑器populate没能实现刷新面板显示 ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { try { - ActionFactory.registerCellEditorClass(provider.targetObjectClass(), provider.quickEditor()); + ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } } @@ -185,12 +185,12 @@ public class DesignerModule extends DesignModule { */ private void registerFloatEditor() { - ActionFactory.registerFloatEditorClass(String.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditorClass(Formula.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditorClass(Image.class, FloatImageQuickEditor.class); - ActionFactory.registerFloatEditorClass(BufferedImage.class, FloatImageQuickEditor.class); + ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); + ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); ActionFactory.registerFloatEditor(CellImagePainter.class, new FloatImageQuickEditor()); - + //todo 图表编辑器populate没能实现刷新面板显示 ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); } @@ -445,7 +445,7 @@ public class DesignerModule extends DesignModule { ServerPreferenceConfig.getInstance().putStyle(namelist.get(i), Style.DEFAULT_STYLE); } } catch (Exception ex) { - FRLogger.getLogger().error(ex.getMessage()); + FineLoggerFactory.getLogger().error(ex.getMessage()); } jd.dispose(); new StyleListAction().actionPerformed(e);// 弹窗 diff --git a/designer-realize/src/com/fr/design/present/CellWriteAttrPane.java b/designer-realize/src/com/fr/design/present/CellWriteAttrPane.java index 3ef36b121..f2754c555 100644 --- a/designer-realize/src/com/fr/design/present/CellWriteAttrPane.java +++ b/designer-realize/src/com/fr/design/present/CellWriteAttrPane.java @@ -10,7 +10,7 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.design.widget.WidgetPane; import com.fr.form.ui.NoneWidget; import com.fr.form.ui.Widget; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; @@ -111,7 +111,7 @@ public class CellWriteAttrPane extends BasicPane { newWidget.setWidgetPrivilegeControl((WidgetPrivilegeControl) oldWidget.getWidgetPrivilegeControl().clone()); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return newWidget; } diff --git a/designer-realize/src/com/fr/design/widget/WidgetEventPane.java b/designer-realize/src/com/fr/design/widget/WidgetEventPane.java index 4e149ac2e..34b42baf9 100644 --- a/designer-realize/src/com/fr/design/widget/WidgetEventPane.java +++ b/designer-realize/src/com/fr/design/widget/WidgetEventPane.java @@ -18,7 +18,7 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.JTemplate; import com.fr.form.event.Listener; import com.fr.form.ui.Widget; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.grid.GridUtils; diff --git a/designer-realize/src/com/fr/design/write/submit/SubmitVisitorListPane.java b/designer-realize/src/com/fr/design/write/submit/SubmitVisitorListPane.java index 3dfea6c15..e26e3549c 100644 --- a/designer-realize/src/com/fr/design/write/submit/SubmitVisitorListPane.java +++ b/designer-realize/src/com/fr/design/write/submit/SubmitVisitorListPane.java @@ -14,7 +14,7 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.design.scrollruler.ModLineBorder; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.BuiltInSQLSubmiter; @@ -137,7 +137,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane { try { editing = (BuiltInSQLSubmiterProvider) editing.clone(); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } editing.setDBManipulation(dbManipulation); diff --git a/designer-realize/src/com/fr/grid/selection/CellSelection.java b/designer-realize/src/com/fr/grid/selection/CellSelection.java index 4cf1da661..b0e905672 100644 --- a/designer-realize/src/com/fr/grid/selection/CellSelection.java +++ b/designer-realize/src/com/fr/grid/selection/CellSelection.java @@ -49,8 +49,9 @@ import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.unit.FU; -import javax.swing.*; -import java.awt.*; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -114,6 +115,7 @@ public class CellSelection extends Selection { /** * 增加选中的区域 + * * @param cellRectangle 区域 */ public void addCellRectangle(Rectangle cellRectangle) { @@ -164,6 +166,7 @@ public class CellSelection extends Selection { /** * 清除区域块 + * * @param i 区域块 */ public void clearCellRectangles(int i) { @@ -172,8 +175,9 @@ public class CellSelection extends Selection { /** * 包含单元格 - * @param column 列 - * @param row 行 + * + * @param column 列 + * @param row 行 * @return 若不包含返回-1 */ public int containsCell(int column, int row) { @@ -205,6 +209,7 @@ public class CellSelection extends Selection { /** * 转换成矩形 + * * @return 矩形 */ public Rectangle toRectangle() { @@ -213,6 +218,7 @@ public class CellSelection extends Selection { /** * 是否选择一个单元格 + * * @param ePane 区域 * @return 是则返回rue */ @@ -239,8 +245,9 @@ public class CellSelection extends Selection { /** * 作为可传输的 + * * @param transferable 传输介质 - * @param ePane 区域 + * @param ePane 区域 */ public void asTransferable(ElementsTransferable transferable, ElementCasePane ePane) { java.util.List list = new java.util.ArrayList(); @@ -251,12 +258,12 @@ public class CellSelection extends Selection { TemplateCellElement cellElement = (TemplateCellElement) cells.next(); list.add((TemplateCellElement) cellElement.deriveCellElement(cellElement.getColumn() - column, cellElement.getRow() - row)); } - FU [] columnWidth = new FU[columnSpan]; - FU [] rowHeight = new FU[rowSpan]; - for (int i = 0; i < columnSpan; i++){ + FU[] columnWidth = new FU[columnSpan]; + FU[] rowHeight = new FU[rowSpan]; + for (int i = 0; i < columnSpan; i++) { columnWidth[i] = ec.getColumnWidth(this.column + i); } - for (int j = 0; j < rowSpan; j++){ + for (int j = 0; j < rowSpan; j++) { rowHeight[j] = ec.getRowHeight(this.row + j); } transferable.addObject(new CellElementsClip(this.columnSpan, this.rowSpan, columnWidth, rowHeight, list.toArray(new TemplateCellElement[list.size()]))); @@ -264,9 +271,10 @@ public class CellSelection extends Selection { /** * 黏贴单元格 + * * @param ceClip 单元格 - * @param ePane 区域 - * @return 成功返回true + * @param ePane 区域 + * @return 成功返回true */ @Override public boolean pasteCellElementsClip(CellElementsClip ceClip, ElementCasePane ePane) { @@ -281,8 +289,9 @@ public class CellSelection extends Selection { /** * 黏贴字符串 - * @param str 字符串 - * @param ePane 区域 + * + * @param str 字符串 + * @param ePane 区域 * @return 成功返回true */ @Override @@ -329,7 +338,8 @@ public class CellSelection extends Selection { /** * 黏贴其他 - * @param ob 要黏贴的东西 + * + * @param ob 要黏贴的东西 * @param ePane 区域 * @return 成功返回true */ @@ -352,6 +362,7 @@ public class CellSelection extends Selection { /** * 是否能合并单元格 + * * @param ePane 区域 * @return 是则返回true */ @@ -363,6 +374,7 @@ public class CellSelection extends Selection { /** * 合并单元格 + * * @param ePane 区域 * @return 成功返回true */ @@ -371,7 +383,7 @@ public class CellSelection extends Selection { TemplateElementCase ec = ePane.getEditingElementCase(); Iterator cells = ec.intersect(column, row, columnSpan, rowSpan); - if (cells.hasNext() && cells.hasNext()) { // alex:有两个以上的格子在这个区域内 + if (cells.hasNext()) { // alex:有两个以上的格子在这个区域内 int returnValue = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(ePane), Inter.getLocText("Des-Merger_Cell"), Inter.getLocText("Utils-Merge_Cell"), JOptionPane.OK_CANCEL_OPTION); if (returnValue != JOptionPane.OK_OPTION) { @@ -386,6 +398,7 @@ public class CellSelection extends Selection { /** * 是否撤销合并单元格 + * * @param ePane 区域 * @return 是则返回true */ @@ -407,6 +420,7 @@ public class CellSelection extends Selection { /** * 撤销合并单元格 + * * @param ePane 区域 * @return 成功返回true */ @@ -443,6 +457,7 @@ public class CellSelection extends Selection { /** * 创建弹出菜单 + * * @param ePane 区域 * @return 菜单 */ @@ -477,7 +492,7 @@ public class CellSelection extends Selection { popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu()); popup.add(new CellAttributeAction().createMenuItem()); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 控件设置 + if (jTemplate.isJWorkBook()) { //表单中报表块编辑屏蔽掉 控件设置 popup.add(new CellWidgetAttrAction().createMenuItem()); } popup.add(new ConditionAttributesAction().createMenuItem()); @@ -497,8 +512,9 @@ public class CellSelection extends Selection { /** * 清除 - * @param type 要清除的类型 - * @param ePane 区域 + * + * @param type 要清除的类型 + * @param ePane 区域 * @return 成功返回true */ @Override @@ -581,6 +597,7 @@ public class CellSelection extends Selection { /** * 向左移动 + * * @param ePane 区域 */ public void moveLeft(ElementCasePane ePane) { @@ -592,6 +609,7 @@ public class CellSelection extends Selection { /** * 向右移动 + * * @param ePane 区域 */ public void moveRight(ElementCasePane ePane) { @@ -600,6 +618,7 @@ public class CellSelection extends Selection { /** * 向上移动 + * * @param ePane 区域 */ public void moveUp(ElementCasePane ePane) { @@ -611,6 +630,7 @@ public class CellSelection extends Selection { /** * 向下移动 + * * @param ePane 区域 */ public void moveDown(ElementCasePane ePane) { @@ -626,6 +646,7 @@ public class CellSelection extends Selection { /** * 触发删除动作 + * * @param ePane 区域 * @return 成功返回true */ @@ -657,6 +678,7 @@ public class CellSelection extends Selection { /** * 包含行列 + * * @param cr 行列 * @return 包含返回true */ @@ -716,7 +738,7 @@ public class CellSelection extends Selection { CellElementPropertyPane.getInstance().reInit(ePane); } - public void populateWidgetPropertyPane(ElementCasePane ePane){ + public void populateWidgetPropertyPane(ElementCasePane ePane) { CellWidgetPropertyPane.getInstance().reInit(ePane); } diff --git a/designer-realize/src/com/fr/grid/selection/FloatSelection.java b/designer-realize/src/com/fr/grid/selection/FloatSelection.java index 0d441a1f7..bd3b71a3b 100644 --- a/designer-realize/src/com/fr/grid/selection/FloatSelection.java +++ b/designer-realize/src/com/fr/grid/selection/FloatSelection.java @@ -5,7 +5,12 @@ import com.fr.base.FRContext; import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.FloatStyleAction; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.edit.*; +import com.fr.design.actions.edit.CopyAction; +import com.fr.design.actions.edit.CutAction; +import com.fr.design.actions.edit.DeleteAction; +import com.fr.design.actions.edit.EditFloatElementNameAction; +import com.fr.design.actions.edit.HyperlinkAction; +import com.fr.design.actions.edit.PasteAction; import com.fr.design.actions.edit.order.BringFloatElementForwardAction; import com.fr.design.actions.edit.order.BringFloatElementToFrontAction; import com.fr.design.actions.edit.order.SendFloatElementBackwardAction; @@ -28,10 +33,12 @@ import com.fr.stable.ColumnRow; import com.fr.stable.unit.FU; import com.fr.stable.unit.OLDPIX; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPopupMenu; +import java.awt.Toolkit; + /** * the float selection + * * @editor zhou * 2012-3-22下午2:09:20 */ @@ -216,6 +223,7 @@ public class FloatSelection extends Selection { public boolean isSelectedOneCell(ElementCasePane ePane) { return false; } + //TODO:august 这儿不比较FloatElement会不会有问题啊 @Override public boolean equals(Object obj) { @@ -239,8 +247,7 @@ public class FloatSelection extends Selection { CellElementPropertyPane.getInstance().removeAll(); } - public void populateWidgetPropertyPane(ElementCasePane ePane){ - return; + public void populateWidgetPropertyPane(ElementCasePane ePane) { } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/quickeditor/FloatQuickEditor.java b/designer-realize/src/com/fr/quickeditor/FloatQuickEditor.java index 1f3d76a0e..72fd6870e 100644 --- a/designer-realize/src/com/fr/quickeditor/FloatQuickEditor.java +++ b/designer-realize/src/com/fr/quickeditor/FloatQuickEditor.java @@ -1,24 +1,32 @@ package com.fr.quickeditor; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.selection.QuickEditor; import com.fr.grid.selection.FloatSelection; import com.fr.report.cell.FloatElement; -import com.fr.design.selection.QuickEditor; /** - * * @author zhou * @since 2012-7-23下午5:17:23 */ public abstract class FloatQuickEditor extends QuickEditor { - protected FloatElement floatElement; + protected FloatElement floatElement; + + @Override + protected void refresh() { + FloatSelection fs = (FloatSelection) tc.getSelection(); + floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); + refreshDetails(); + } - @Override - protected void refresh() { - FloatSelection fs = (FloatSelection)tc.getSelection(); - floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); - refreshDetails(); - } + /** + * 刷新详细信息 + */ + protected abstract void refreshDetails(); - protected abstract void refreshDetails(); + @Override + public void release() { + super.release(); + floatElement = null; + } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer-realize/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 1ae401bc5..72e6c9ae1 100644 --- a/designer-realize/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer-realize/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -35,6 +35,7 @@ import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.FilterTypeEnum; import com.fr.report.cell.cellattr.core.group.SelectCount; +import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.Icon; @@ -74,9 +75,6 @@ public class CellDSColumnEditor extends CellQuickEditor { private static final Color TIP_FONT_COLOR = new Color(0x7F333334, true); - private JPanel dsColumnRegion; - private JPanel centerPane; - /** * 基本和高级设置 */ @@ -117,10 +115,10 @@ public class CellDSColumnEditor extends CellQuickEditor { public JComponent createCenterBody() { this.createPanes(); this.createSwitchTab(); - dsColumnRegion = new JPanel(new BorderLayout()); + JPanel dsColumnRegion = new JPanel(new BorderLayout()); dsColumnRegion.add(tabsHeaderIconPane, BorderLayout.NORTH); dsColumnRegion.add(cardContainer, BorderLayout.CENTER); - centerPane = new JPanel(new BorderLayout()); + JPanel centerPane = new JPanel(new BorderLayout()); centerPane.add(dsColumnRegion, BorderLayout.CENTER); return centerPane; } @@ -141,17 +139,6 @@ public class CellDSColumnEditor extends CellQuickEditor { } - /** - * 关闭时候释放 - */ - @Override - public void release() { - super.release(); - dsColumnRegion = null; - centerPane = null; - } - - /** * 初始化基本和高级设置切换tab */ @@ -187,6 +174,12 @@ public class CellDSColumnEditor extends CellQuickEditor { paneList.add(cellDSColumnAdvancedPane); } + @Override + public void release() { + super.release(); + cellDSColumnBasicPane.release(); + cellDSColumnAdvancedPane.release(); + } /** * 单元格元素 数据列 高级设置内容面板 @@ -252,9 +245,9 @@ public class CellDSColumnEditor extends CellQuickEditor { }; DSColumnBasicEditorPane() { - dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); + dataPane = new SelectedDataColumnPane(true, true); groupPane = new ResultSetGroupDockingPane(); - dataPane.addListener(dataListener); + dataPane.setListener(dataListener); groupPane.setListener(groupListener); double[] rowSize = {P}, columnSize = {P, F}; @@ -297,13 +290,19 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override public void populate() { - dataPane.populate(null, cellElement); + dataPane.populate(DesignTableDataManager.getEditingTableDataSource(), cellElement, tc); groupPane.populate(cellElement); if (tc != null) { condition.setEditingComponent(tc); } } + @Override + protected void release() { + condition.setEditingComponent(null); + dataPane.release(); + } + /** * 创建有内容的面板显示信息 @@ -330,6 +329,7 @@ public class CellDSColumnEditor extends CellQuickEditor { class DSColumnAdvancedEditorPane extends AbstractDSCellEditorPane { + /*pane begin*/ /** * 排列顺序 */ @@ -353,7 +353,7 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 补充空白数据 */ - private UICheckBox useMultiplyNumCheckBox; + private UICheckBox useMultiNumCheckBox; /** * 补充空白数据数目输入框 */ @@ -362,6 +362,75 @@ public class CellDSColumnEditor extends CellQuickEditor { * 补充空白数据数目面板 可隐藏 */ private JPanel multiPane; + /*pane end*/ + + + /*listeners begin*/ + private UIObserverListener sortPaneFormulaChangeListener = new UIObserverListener() { + @Override + public void doChange() { + sortPane.update(cellElement); + fireTargetModified(); + } + }; + + private ChangeListener sortTypeBtnGroupChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + sortPane.update(cellElement); + fireTargetModified(); + } + }; + + private UIObserverListener filterPaneChangeListener = new UIObserverListener() { + @Override + public void doChange() { + filterPane.update(cellElement); + fireTargetModified(); + } + }; + + private UIObserverListener customValuePaneChangeListener = new UIObserverListener() { + @Override + public void doChange() { + valuePane.update(cellElement); + fireTargetModified(); + } + }; + + private ChangeListener heCheckBoxChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateExtendConfig(); + fireTargetModified(); + } + }; + + private ChangeListener veCheckBoxChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateExtendConfig(); + fireTargetModified(); + } + }; + + private ActionListener useMultiNumCheckBoxChangeListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + checkButtonEnabled(); + cellDSColumnAdvancedPane.updateMultipleConfig(); + fireTargetModified(); + } + }; + + private ChangeListener multiNumSpinnerChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateMultipleConfig(); + fireTargetModified(); + } + }; + /*listeners end*/ public DSColumnAdvancedEditorPane() { @@ -397,6 +466,7 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override public void populate() { if (cellElement != null) { + disableListener(); sortPane.populate(cellElement); valuePane.populate(cellElement); filterPane.populate(cellElement); @@ -406,6 +476,7 @@ public class CellDSColumnEditor extends CellQuickEditor { cellElement.setCellExpandAttr(cellExpandAttr); } // extendable + //noinspection Duplicates switch (cellExpandAttr.getExtendable()) { case CellExpandAttr.Both_EXTENDABLE: heCheckBox.setSelected(true); @@ -425,15 +496,23 @@ public class CellDSColumnEditor extends CellQuickEditor { } } if (cellExpandAttr.getMultipleNumber() == -1) { - useMultiplyNumCheckBox.setSelected(false); + useMultiNumCheckBox.setSelected(false); + // 默认值 + multiNumSpinner.setValue(1); } else { - useMultiplyNumCheckBox.setSelected(true); + useMultiNumCheckBox.setSelected(true); multiNumSpinner.setValue(cellExpandAttr.getMultipleNumber()); } this.checkButtonEnabled(); + enableListener(); } } + @Override + protected void release() { + + } + /** * 更新单元格扩展属性 */ @@ -443,6 +522,7 @@ public class CellDSColumnEditor extends CellQuickEditor { cellExpandAttr = new CellExpandAttr(); cellElement.setCellExpandAttr(cellExpandAttr); } + //noinspection Duplicates if (heCheckBox.isSelected()) { if (veCheckBox.isSelected()) { cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE); @@ -463,12 +543,11 @@ public class CellDSColumnEditor extends CellQuickEditor { */ private void updateMultipleConfig() { CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); - if (this.useMultiplyNumCheckBox.isSelected()) { + if (this.useMultiNumCheckBox.isSelected()) { cellExpandAttr.setMultipleNumber((int) multiNumSpinner.getValue()); } else { cellExpandAttr.setMultipleNumber(-1); } - } /** @@ -479,68 +558,29 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override protected JPanel createContentPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); + //结果集排序 sortPane = new ResultSetSortConfigPane(); - sortPane.addListener(new UIObserverListener() { - @Override - public void doChange() { - sortPane.update(cellElement); - fireTargetModified(); - } - }, new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - sortPane.update(cellElement); - fireTargetModified(); - } - } - ); + //结果筛选 filterPane = new ResultSetFilterConfigPane(); - filterPane.addListener(new UIObserverListener() { - @Override - public void doChange() { - filterPane.update(cellElement); - fireTargetModified(); - } - } - ); + //自定义值显示 valuePane = new CustomValuePane(); - valuePane.addListener(new UIObserverListener() { - @Override - public void doChange() { - valuePane.update(cellElement); - fireTargetModified(); - } - }); //可扩展性 JPanel extendableDirectionPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); extendableDirectionPane.add(heCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); extendableDirectionPane.add(veCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); - heCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateExtendConfig(); - fireTargetModified(); - } - }); - veCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateExtendConfig(); - fireTargetModified(); - } - }); - JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); //补充空白数据 - useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); + JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + useMultiNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); JPanel checkBoxPane = new JPanel(new BorderLayout()); - checkBoxPane.add(useMultiplyNumCheckBox, BorderLayout.WEST); + checkBoxPane.add(useMultiNumCheckBox, BorderLayout.WEST); multiNumPane.add(checkBoxPane); multiNumSpinner = new UISpinner(1, 10000, 1, 1); + //数据倍数 UILabel multipleLabel = new UILabel(Inter.getLocText("Column_Multiple")); multiPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ @@ -551,25 +591,11 @@ public class CellDSColumnEditor extends CellQuickEditor { ); multiPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); multiNumPane.add(multiPane); - useMultiplyNumCheckBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkButtonEnabled(); - cellDSColumnAdvancedPane.updateMultipleConfig(); - fireTargetModified(); - } - }); - multiNumSpinner.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateMultipleConfig(); - fireTargetModified(); - } - }); + + enableListener(); double[] rowSize = {P, P, P, P, P, P}; double[] columnSize = {F}; - Component[][] components = new Component[][]{ {sortPane}, {filterPane}, @@ -580,9 +606,29 @@ public class CellDSColumnEditor extends CellQuickEditor { return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, HGAP, VGAP); } + public void enableListener() { + sortPane.addListener(sortPaneFormulaChangeListener, sortTypeBtnGroupChangeListener); + filterPane.addListener(filterPaneChangeListener); + valuePane.addListener(customValuePaneChangeListener); + heCheckBox.addChangeListener(heCheckBoxChangeListener); + veCheckBox.addChangeListener(veCheckBoxChangeListener); + useMultiNumCheckBox.addActionListener(useMultiNumCheckBoxChangeListener); + multiNumSpinner.addChangeListener(multiNumSpinnerChangeListener); + } + + public void disableListener() { + sortPane.removeListener(sortTypeBtnGroupChangeListener); + filterPane.removeListener(); + valuePane.removeListener(); + heCheckBox.removeChangeListener(heCheckBoxChangeListener); + veCheckBox.removeChangeListener(veCheckBoxChangeListener); + useMultiNumCheckBox.removeActionListener(useMultiNumCheckBoxChangeListener); + multiNumSpinner.removeChangeListener(multiNumSpinnerChangeListener); + } + private void checkButtonEnabled() { - if (useMultiplyNumCheckBox.isSelected()) { + if (useMultiNumCheckBox.isSelected()) { multiNumSpinner.setEnabled(true); multiPane.setVisible(true); } else { @@ -659,7 +705,7 @@ public class CellDSColumnEditor extends CellQuickEditor { public void populate(TemplateCellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { this.formulaField.populateElement(cellElement); DSColumn dSColumn = (DSColumn) value; int sort = dSColumn.getOrder(); @@ -676,6 +722,8 @@ public class CellDSColumnEditor extends CellQuickEditor { String sortFormula = dSColumn.getSortFormula(); if (sortFormula != null && sortFormula.length() >= 1) { this.formulaField.populate(sortFormula); + } else { + this.formulaField.populate(DEFAULT_VALUE); } } } @@ -689,8 +737,8 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + if (value instanceof DSColumn) { + DSColumn dSColumn = (DSColumn) value; dSColumn.setOrder(this.sortTypePane.getSelectedIndex()); dSColumn.setSortFormula(this.formulaField.getFormulaText()); } @@ -707,6 +755,16 @@ public class CellDSColumnEditor extends CellQuickEditor { formulaField.addListener(formulaChangeListener); sortTypePane.addChangeListener(changeListener); } + + /** + * 去除事件监听器 + * + * @param changeListener 排序类型下拉框改动事件监听器 + */ + public void removeListener(ChangeListener changeListener) { + formulaField.removeListener(); + sortTypePane.removeChangeListener(changeListener); + } } /** @@ -852,13 +910,18 @@ public class CellDSColumnEditor extends CellQuickEditor { rsComboBox.removeActionListener(actionListener); if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) (cellElement.getValue()); SelectCount selectCount = dSColumn.getSelectCount(); this.topFormulaPane.populateElement(cellElement); this.bottomFormulaPane.populateElement(cellElement); CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); + // 重置默认值 + this.topFormulaPane.populate(DEFAULT_VALUE); + this.bottomFormulaPane.populate(DEFAULT_VALUE); + this.serialTextField.setText(StringUtils.EMPTY); + if (selectCount != null) { int selectCountType = selectCount.getType(); this.rsComboBox.setSelectedIndex(selectCountType); @@ -927,6 +990,7 @@ public class CellDSColumnEditor extends CellQuickEditor { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); } } else { + this.rsComboBox.setSelectedIndex(0); //未定义 setCardPaneLayout.show(setCardPane, UNDEFINE.name()); tipCardPaneLayout.show(tipCardPane, UNDEFINE.name()); @@ -944,8 +1008,8 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + if (value instanceof DSColumn) { + DSColumn dSColumn = (DSColumn) value; int selectedFilterIndex = this.rsComboBox.getSelectedIndex(); if (selectedFilterIndex == 0) { dSColumn.setSelectCount(null); @@ -953,6 +1017,7 @@ public class CellDSColumnEditor extends CellQuickEditor { SelectCount selectCount = new SelectCount(); selectCount.setType(selectedFilterIndex); dSColumn.setSelectCount(selectCount); + //noinspection Duplicates if (selectedFilterIndex == TOP.getValue()) { selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); } else if (selectedFilterIndex == BOTTOM.getValue()) { @@ -976,6 +1041,16 @@ public class CellDSColumnEditor extends CellQuickEditor { rsComboBox.registerChangeListener(formulaListener); serialTextField.registerChangeListener(formulaListener); } + + /** + * 去除事件监听器 + */ + public void removeListener() { + topFormulaPane.removeListener(); + bottomFormulaPane.removeListener(); + rsComboBox.removeChangeListener(); + serialTextField.registerChangeListener(null); + } } /** @@ -1029,6 +1104,13 @@ public class CellDSColumnEditor extends CellQuickEditor { this.formulaTextField.registerChangeListener(listener); } + /** + * 取消事件监听器 + */ + public void removeListener() { + this.formulaTextField.registerChangeListener(null); + } + private ActionListener formulaButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { @@ -1042,7 +1124,7 @@ public class CellDSColumnEditor extends CellQuickEditor { final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dsColumn = (DSColumn) value; String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName()); formulaPane.populate(valueFormula, new CustomVariableResolver(displayNames, true)); @@ -1086,12 +1168,14 @@ public class CellDSColumnEditor extends CellQuickEditor { public void populate(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) value; //formula String valueFormula = dSColumn.getResult(); if (valueFormula != null) { formulaField.populate(valueFormula); + } else { + formulaField.populate(DEFAULT_VALUE); } formulaField.populateElement(cellElement); @@ -1102,7 +1186,7 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) (cellElement.getValue()); dSColumn.setResult(this.formulaField.getFormulaText()); } @@ -1117,6 +1201,13 @@ public class CellDSColumnEditor extends CellQuickEditor { public void addListener(UIObserverListener formulaListener) { this.formulaField.addListener(formulaListener); } + + /** + * 移除事件监听器 + */ + public void removeListener() { + this.formulaField.removeListener(); + } } } diff --git a/designer-realize/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer-realize/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index 461dee3ee..456bfdeb1 100644 --- a/designer-realize/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer-realize/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -3,7 +3,6 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.RichTextCellAction; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; @@ -13,7 +12,6 @@ import javax.swing.JComponent; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Dimension; /** * 单元格元素富文本编辑器 @@ -58,4 +56,9 @@ public class CellRichTextEditor extends CellQuickEditor { return true; } + @Override + public void release() { + super.release(); + richTextButton.setAction(null); + } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer-realize/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index e8f79166a..e90e27715 100644 --- a/designer-realize/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer-realize/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,7 +3,6 @@ package com.fr.quickeditor.cellquick; import com.fr.base.BaseFormula; import com.fr.base.Style; import com.fr.base.TextFormat; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextarea.UITextArea; import com.fr.grid.GridKeyListener; import com.fr.grid.selection.CellSelection; @@ -18,7 +17,6 @@ import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; diff --git a/designer-realize/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer-realize/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index cfa362cb3..b33deff88 100644 --- a/designer-realize/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer-realize/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -56,4 +56,10 @@ public class CellSubReportEditor extends CellQuickEditor { public boolean isScrollAll() { return true; } + + @Override + public void release() { + super.release(); + subReportButton.setAction(null); + } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java b/designer-realize/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java index a243195c1..57a487603 100644 --- a/designer-realize/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java +++ b/designer-realize/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java @@ -14,8 +14,10 @@ import com.fr.general.Inter; import com.fr.quickeditor.FloatQuickEditor; import com.fr.report.cell.cellattr.CellImage; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -73,8 +75,6 @@ public class FloatImageQuickEditor extends FloatQuickEditor { @Override protected void refreshDetails() { - // TODO Auto-generated method stub - } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java b/designer-realize/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java index 1f5718a9e..eae3e81dc 100644 --- a/designer-realize/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java +++ b/designer-realize/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java @@ -12,10 +12,16 @@ import com.fr.quickeditor.FloatQuickEditor; import com.fr.report.ReportHelper; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.JTextArea; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -27,6 +33,25 @@ public class FloatStringQuickEditor extends FloatQuickEditor { private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; + private DocumentListener documentListener = new DocumentListener() { + + @Override + public void insertUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void removeUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void changedUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + }; + public FloatStringQuickEditor() { super(); stringTextField = new JTextArea(); @@ -34,11 +59,17 @@ public class FloatStringQuickEditor extends FloatQuickEditor { formulaButton = new UIButton(); formulaButton.setPreferredSize(new Dimension(25, 23)); formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); + ActionListener getFormulaActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing(); + } + }; formulaButton.addActionListener(getFormulaActionListener); JPanel pane = new JPanel(new BorderLayout(5, 0)); pane.add(stringTextField, BorderLayout.CENTER); pane.add(formulaButton, BorderLayout.EAST); - pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,5)); + pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); formulaButton.setVisible(false); this.setLayout(new BorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); @@ -55,16 +86,10 @@ public class FloatStringQuickEditor extends FloatQuickEditor { stringTextField.setBackground(Color.WHITE); } - ActionListener getFormulaActionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing(); - } - }; @Override protected void refreshDetails() { - String str = null; + String str; Object value = floatElement.getValue(); if (value == null) { str = StringUtils.EMPTY; @@ -89,26 +114,8 @@ public class FloatStringQuickEditor extends FloatQuickEditor { stringTextField.getDocument().addDocumentListener(documentListener); } - DocumentListener documentListener = new DocumentListener() { - - @Override - public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - }; - protected void changeReportPaneCell(String tmpText) { + private void changeReportPaneCell(String tmpText) { if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { BaseFormula textFormula = BaseFormula.createFormulaBuilder().build(tmpText); textFormula.setReserveInResult(reserveInResult); @@ -125,5 +132,4 @@ public class FloatStringQuickEditor extends FloatQuickEditor { fireTargetModified(); stringTextField.requestFocus(); } - } \ No newline at end of file diff --git a/designer-realize/src/com/fr/start/Designer.java b/designer-realize/src/com/fr/start/Designer.java index af2ababb1..ae382d2fa 100644 --- a/designer-realize/src/com/fr/start/Designer.java +++ b/designer-realize/src/com/fr/start/Designer.java @@ -3,6 +3,7 @@ package com.fr.start; import com.fr.base.BaseUtils; import com.fr.base.Env; import com.fr.base.FRContext; +import com.fr.dav.LocalEnv; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.file.WebPreviewUtils; @@ -89,8 +90,10 @@ public class Designer extends BaseDesigner { //传递启动参数 designerRoot.setSingleton(StartupArgs.class, new StartupArgs(args)); designerRoot.start(); - // 预启动一下 - StartServer.start(); + if (FRContext.getCurrentEnv() instanceof LocalEnv) { + // 预启动一下 + StartServer.start(); + } } public Designer(String[] args) { @@ -369,7 +372,7 @@ public class Designer extends BaseDesigner { @Override public Component createBBSLoginPane() { if (userInfoPane == null) { - userInfoPane = new UserInfoPane(); + userInfoPane = UserInfoPane.getInstance(); } return userInfoPane; } diff --git a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java index 7a8becd11..b6abbdf85 100644 --- a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java +++ b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java @@ -1,5 +1,6 @@ package com.fr.start.module; +import com.fr.design.mainframe.loghandler.socketio.DesignerSocketIO; import com.fr.design.module.DesignerModule; import com.fr.general.ModuleContext; import com.fr.locale.InterMutableKey; @@ -20,6 +21,8 @@ public class DesignerModuleActivator extends Activator implements Prepare { ModuleContext.registerModuleListener(getModule().upFindSingleton(ModuleListener.class)); ModuleContext.startModule(DesignerModule.class.getName()); ModuleContext.clearModuleListener(); + + DesignerSocketIO.init(); } @Override