diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 079a393e5..549cb1763 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -327,6 +327,7 @@ public class LoginWebBridge { DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBbsUid(uid); DesignerEnvManager.getEnvManager().setInShowBBsName(username); + BBSPluginLogin.getInstance().login(new BBSUserInfo(username, "")); } else if (status.equals(LOGIN_FAILED)) { //账号没有QQ授权 closeQQWindow(); diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index a2a30c748..7f64bcec4 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -509,6 +509,13 @@ public class PluginWebBridge { LoginWebBridge.getHelper().showQQ(); } + //通过QQ登录后通知登录 + public void ucsynLogin(long uid, String username){ + BBSUserInfo bbsUserInfo = new BBSUserInfo(username, ""); + BBSPluginLogin.getInstance().login(bbsUserInfo); + uiLabel.setText(username); + } + /** * 清除用户信息 */ diff --git a/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java index 3af2b5d43..84ecb10c3 100644 --- a/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -80,21 +80,29 @@ public class WebViewDlgHelper { public static void checkAndCopyMainFile(String indexPath, String mainJsPath){ File file = new File(indexPath); if (!file.exists()) { - try { - File mainJsFile = new File(mainJsPath); - int byteread = 0; - if (mainJsFile.exists()) { - InputStream inStream = new FileInputStream(mainJsPath); - FileOutputStream fs = new FileOutputStream(indexPath); - byte[] buffer = new byte[BYTES_NUM]; - while ((byteread = inStream.read(buffer)) != -1) { - fs.write(buffer, 0, byteread); - } - inStream.close(); + copyMainFile(indexPath, mainJsPath); + } + } + + /** + * 將script文件夹中的index.html文件复制到webreport下 + * + */ + public static void copyMainFile(String indexPath, String mainJsPath){ + try { + File mainJsFile = new File(mainJsPath); + int byteread = 0; + if (mainJsFile.exists()) { + InputStream inStream = new FileInputStream(mainJsPath); + FileOutputStream fs = new FileOutputStream(indexPath); + byte[] buffer = new byte[BYTES_NUM]; + while ((byteread = inStream.read(buffer)) != -1) { + fs.write(buffer, 0, byteread); } - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + inStream.close(); } + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage()); } } @@ -186,7 +194,9 @@ public class WebViewDlgHelper { try { if (get()) { + String relativePath = "/scripts/store/web/index.html"; IOUtils.unzip(new File(StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE)), installHome); + copyMainFile(StableUtils.pathJoin(installHome, "index.html"), StableUtils.pathJoin(installHome, relativePath)); // TODO: 2017/4/17 删除之前存放在安装目录下的script int rv = JOptionPane.showOptionDialog( null, diff --git a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java index 96eccfc59..afb23ec70 100644 --- a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -37,9 +37,9 @@ public class UIResizableContainer extends JPanel { private static final int MIN_WIDTH = 165; private static final int ARROW_MARGIN = 15; - private static final int ARROW_MARGIN_VERTICAL = 20; + private static final int ARROW_MARGIN_VERTICAL = 7; private static final int ARROW_RANGE = 35; - private static final int ARROW_RANGE_VERTICAL = 40; + private static final int ARROW_RANGE_VERTICAL = 25; private boolean isLeftRightDragEnabled = true; private boolean isDownPaneVisible = true ; @@ -502,7 +502,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); + g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, 5, null); } else { g.drawImage(UIConstants.DRAG_BAR, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java deleted file mode 100644 index 12d281627..000000000 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.fr.design.mainframe.loghandler; - -import com.fr.general.LogRecordTime; -import com.fr.stable.StringUtils; -import org.apache.log4j.Appender; -import org.apache.log4j.Logger; -import org.apache.log4j.WriterAppender; - -import java.io.PipedReader; -import java.io.PipedWriter; -import java.io.Writer; -import java.util.Date; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.LogRecord; - -/** - * Created by Administrator on 2017/6/2/0002. - */ -public class DesignerLogAppendThread extends Thread{ - - PipedReader reader; - - public DesignerLogAppendThread() { - Logger root = Logger.getRootLogger(); - // 获取子记录器的输出源 - Appender appender = root.getAppender("design"); - // 定义一个未连接的输入流管道 - reader = new PipedReader(); - // 定义一个已连接的输出流管理,并连接到reader - Writer writer = null; - try { - writer = new PipedWriter(reader); - // 设置 appender 输出流 - ((WriterAppender) appender).setWriter(writer); - } catch (Throwable e) { - } - } - - public void run() { - // 不间断地扫描输入流 - Scanner scanner = new Scanner(reader); - - // 将扫描到的字符流打印在屏目 - while (scanner.hasNext()) { - try { - Thread.sleep(100); - String log = scanner.nextLine(); - if (StringUtils.isEmpty(log)) { - return; - } - - LogRecordTime logRecordTime = new LogRecordTime(new Date(),new LogRecord(Level.INFO, log)); - DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); - } catch (Throwable e) { - - } - } - } -} diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppender.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppender.java new file mode 100644 index 000000000..0531748af --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppender.java @@ -0,0 +1,42 @@ +package com.fr.design.mainframe.loghandler; + +import org.apache.log4j.AppenderSkeleton; +import org.apache.log4j.Level; +import org.apache.log4j.spi.LoggingEvent; + +import java.util.Date; + +/** + * Created by Administrator on 2017/7/18 0018. + */ +public class DesignerLogAppender extends AppenderSkeleton { + + public DesignerLogAppender() { + this.layout = new org.apache.log4j.PatternLayout("%d{HH:mm:ss} %t %p [%c] %m%n"); + } + + protected void append(LoggingEvent event) { + this.subAppend(event); + } + + public boolean requiresLayout() { + return true; + } + + public synchronized void close() { + if (this.closed) { + return; + } + this.closed = true; + + } + + public void subAppend(LoggingEvent event) { + synchronized (DesignerLogHandler.getInstance()) { + Level level = event.getLevel(); + String msg = this.layout.format(event); + DesignerLogHandler.getInstance().printRemoteLog(msg, level, new Date()); + } + } +} + 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 ddf301fd2..a844fd3a2 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -6,11 +6,10 @@ import com.fr.design.DesignerEnvManager; 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.Inter; -import com.fr.general.LogRecordTime; +import com.fr.general.*; +import com.fr.stable.EnvChangedListener; import com.fr.stable.xml.LogRecordTimeProvider; +import org.apache.log4j.Level; import javax.swing.*; import javax.swing.text.*; @@ -31,6 +30,16 @@ public class DesignerLogHandler { private static final int ERRO_GAP_Y = -40; private static final int SERVER_GAP_Y = -20; + static { + GeneralContext.addEnvChangedListener(new EnvChangedListener() { + @Override + public void envChanged() { + // envchange后需要重新读取webinf里的log4j配置, 重新添加appender + FRLogger.getLogger().addLogAppender(new DesignerLogAppender()); + } + }); + } + public static DesignerLogHandler getInstance() { return HOLDER.singleton; } @@ -116,8 +125,8 @@ public class DesignerLogHandler { return caption; } - public void printRemoteLog(LogRecordTime logRecordTime) { - logHandlerArea.printStackTrace(logRecordTime); + public void printRemoteLog(String message, Level level, Date date) { + logHandlerArea.printStackTrace(message, level, date); } private class LogHandlerArea extends JPanel { @@ -201,6 +210,22 @@ public class DesignerLogHandler { } + public void printStackTrace(String message, Level level, Date date) { + int logLevelvalue = level.toInt(); + if (logLevelvalue == INFO_INT && showInfo.isSelected()) { + printMessage(message, logLevelvalue, date); + } else if (logLevelvalue == ERRO_INT && showError.isSelected()) { + printMessage(message, logLevelvalue, date); + } else if (logLevelvalue == SERVER_INT && showServer.isSelected()) { + printMessage(message, logLevelvalue, date); + } + + } + + private void printMessage(String message, int logLevelvalue, Date date) { + printMessage(message, logLevelvalue, date, null); + } + private void printMessage(String messange, int logLevelvalue, Date date, Throwable e) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); this.log(simpleDateFormat.format(date) + "\n", 0); diff --git a/designer_base/src/com/fr/design/module/DesignModule.java b/designer_base/src/com/fr/design/module/DesignModule.java index 1929452b9..6fb9b2ac5 100644 --- a/designer_base/src/com/fr/design/module/DesignModule.java +++ b/designer_base/src/com/fr/design/module/DesignModule.java @@ -12,7 +12,6 @@ import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.mainframe.App; import com.fr.design.mainframe.DesignerFrame; -import com.fr.design.mainframe.loghandler.DesignerLogAppendThread; import com.fr.general.Inter; import com.fr.general.ModuleContext; import com.fr.js.*; @@ -45,10 +44,6 @@ public abstract class DesignModule extends TopModule { ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); DesignModuleFactory.registerCreators4Hyperlink(hyperlinkTypes()); - - // 将log4j日志输出到设计器日志面板的线程. - DesignerLogAppendThread logTread = new DesignerLogAppendThread(); - logTread.start(); } public boolean isStarted() { diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 4ef8d61e1..8fd63a18e 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -17,7 +17,6 @@ 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.design.mainframe.loghandler.DesignerLogHandler; import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; @@ -1788,8 +1787,7 @@ public class RemoteEnv extends AbstractEnv { } LogRecordTime[] records = DavXMLUtils.readXMLLogRecords(input); for (LogRecordTime logRecordTime : records) { - DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); - + //TODO } }