OSDN Git Service

remove LogPanel
authorOlyutorskii <olyutorskii@users.osdn.me>
Wed, 22 Apr 2020 06:50:44 +0000 (15:50 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Wed, 22 Apr 2020 06:50:44 +0000 (15:50 +0900)
src/main/java/jp/sfjp/jindolf/log/LogFrame.java
src/main/java/jp/sfjp/jindolf/log/LogPanel.java [deleted file]

index 36b2629..38b77bb 100644 (file)
@@ -10,6 +10,7 @@ package jp.sfjp.jindolf.log;
 import io.github.olyutorskii.quetexj.HeightKeeper;
 import io.github.olyutorskii.quetexj.MaxTracker;
 import io.github.olyutorskii.quetexj.MvcFacade;
+import io.github.olyutorskii.quetexj.SwingLogHandler;
 import java.awt.Container;
 import java.awt.Frame;
 import java.awt.GridBagConstraints;
@@ -17,11 +18,21 @@ import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.util.logging.Handler;
 import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.BoundedRangeModel;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JDialog;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
+import javax.swing.JTextArea;
 import javax.swing.JToggleButton;
+import javax.swing.border.Border;
+import javax.swing.text.Document;
+import jp.sfjp.jindolf.dxchg.TextPopup;
+import jp.sfjp.jindolf.util.Monodizer;
 
 /**
  * ログ表示ウィンドウ。
@@ -29,16 +40,15 @@ import javax.swing.JToggleButton;
 @SuppressWarnings("serial")
 public final class LogFrame extends JDialog {
 
-    private static final String CMD_CLOSELOG = "CMD_CLOSE_LOG";
-
-
     private final MvcFacade facade;
 
-    private final LogPanel logPanel;
+    private final JScrollPane scrollPane;
     private final JButton clearButton;
     private final JButton closeButton;
     private final JCheckBox trackButton;
 
+    private final Handler handler;
+
 
     /**
      * コンストラクタ。
@@ -50,21 +60,89 @@ public final class LogFrame extends JDialog {
 
         this.facade = new MvcFacade();
 
-        this.logPanel = new LogPanel(this.facade);
+        this.scrollPane = buildScrollPane(this.facade);
+
         this.clearButton = new JButton();
         this.closeButton = new JButton();
         this.trackButton = new JCheckBox();
 
+        setupButtons();
+
+        MaxTracker tracker = this.facade.getMaxTracker();
+        HeightKeeper keeper = this.facade.getHeightKeeper();
+
+        tracker.setTrackingMode(true);
+        keeper.setConditions(5000, 4000);
+
+        Handler logHandler = null;
+        if(LogUtils.hasLoggingPermission()){
+            Document document = this.facade.getDocument();
+            logHandler = new SwingLogHandler(document);
+        }
+        this.handler = logHandler;
+
+        setResizable(true);
+        setLocationByPlatform(true);
+        setModal(false);
+
         design();
 
+        return;
+    }
+
+
+    /**
+     * ログ用スクロール領域を生成する。
+     *
+     * @param facadeArg ファサード
+     * @return スクロール領域
+     */
+    private static JScrollPane buildScrollPane(MvcFacade facadeArg){
+        JScrollPane scrollPane = new JScrollPane();
+
+        JScrollBar vbar = scrollPane.getVerticalScrollBar();
+        BoundedRangeModel rangeModel = facadeArg.getVerticalBoundedRangeModel();
+        vbar.setModel(rangeModel);
+
+        JTextArea textArea = buildTextArea(facadeArg);
+        scrollPane.setViewportView(textArea);
+
+        return scrollPane;
+    }
+
+    /**
+     * ログ用テキストエリアを生成する。
+     *
+     * @param facadeArg ファサード
+     * @return テキストエリア
+     */
+    private static JTextArea buildTextArea(MvcFacade facadeArg){
+        JTextArea textArea = facadeArg.getTextArea();
+
+        textArea.setEditable(false);
+        textArea.setLineWrap(true);
+        Monodizer.monodize(textArea);
+
+        Border border = BorderFactory.createEmptyBorder(3, 3, 3, 3);
+        textArea.setBorder(border);
+
+        JPopupMenu popup = new TextPopup();
+        textArea.setComponentPopupMenu(popup);
+
+        return textArea;
+    }
+
+
+    /**
+     * ボタンの各種設定。
+     */
+    private void setupButtons(){
         Action clearAction = this.facade.getClearAction();
         this.clearButton.setAction(clearAction);
         this.clearButton.setText("クリア");
 
-        this.closeButton.setActionCommand(CMD_CLOSELOG);
         this.closeButton.addActionListener(event -> {
-            String cmd = event.getActionCommand();
-            if(CMD_CLOSELOG.equals(cmd)){
+            if(event.getSource() == this.closeButton){
                 setVisible(false);
             }
         });
@@ -75,21 +153,11 @@ public final class LogFrame extends JDialog {
         this.trackButton.setModel(toggleModel);
         this.trackButton.setText("末尾に追従");
 
-        MaxTracker tracker = this.facade.getMaxTracker();
-        tracker.setTrackingMode(true);
-
-        HeightKeeper keeper = this.facade.getHeightKeeper();
-        keeper.setConditions(5000, 4000);
-
-        setResizable(true);
-        setLocationByPlatform(true);
-        setModal(false);
-
         return;
     }
 
     /**
-     * デザインを行う。
+     * ã\83¬ã\82¤ã\82¢ã\82¦ã\83\88ã\83\87ã\82¶ã\82¤ã\83³ã\82\92è¡\8cã\81\86ã\80\82
      */
     private void design(){
         Container content = getContentPane();
@@ -103,7 +171,7 @@ public final class LogFrame extends JDialog {
         constraints.fill = GridBagConstraints.BOTH;
         constraints.gridwidth = GridBagConstraints.REMAINDER;
 
-        content.add(this.logPanel, constraints);
+        content.add(this.scrollPane, constraints);
 
         constraints.weighty = 0.0;
         constraints.fill = GridBagConstraints.HORIZONTAL;
@@ -127,10 +195,11 @@ public final class LogFrame extends JDialog {
 
     /**
      * ロギングハンドラを返す。
+     *
      * @return ロギングハンドラ
      */
     public Handler getHandler(){
-        return this.logPanel.getHandler();
+        return this.handler;
     }
 
 }
diff --git a/src/main/java/jp/sfjp/jindolf/log/LogPanel.java b/src/main/java/jp/sfjp/jindolf/log/LogPanel.java
deleted file mode 100644 (file)
index 71f638a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Log panel
- *
- * License : The MIT License
- * Copyright(c) 2012 olyutorskii
- */
-
-package jp.sfjp.jindolf.log;
-
-import io.github.olyutorskii.quetexj.MvcFacade;
-import io.github.olyutorskii.quetexj.SwingLogHandler;
-import java.util.logging.Handler;
-import javax.swing.BorderFactory;
-import javax.swing.BoundedRangeModel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.border.Border;
-import javax.swing.text.Document;
-import jp.sfjp.jindolf.dxchg.TextPopup;
-import jp.sfjp.jindolf.util.Monodizer;
-
-/**
- * スクロールバー付きログ表示パネル。
- *
- * <p>垂直スクロールバーは自動的に最下部へトラックする。
- */
-@SuppressWarnings("serial")
-public final class LogPanel extends JScrollPane {
-
-    private final JTextArea textarea;
-    private final Document document;
-    private final Handler handler;
-
-
-    /**
-     * コンストラクタ。
-     *
-     * @param facade MvcFacade
-     */
-    public LogPanel(MvcFacade facade){
-        super();
-
-        this.textarea = facade.getTextArea();
-        this.document = facade.getDocument();
-
-        if(LogUtils.hasLoggingPermission()){
-            this.handler = new SwingLogHandler(this.document);
-        }else{
-            this.handler = null;
-        }
-
-        this.textarea.setEditable(false);
-        this.textarea.setLineWrap(true);
-        Monodizer.monodize(this.textarea);
-
-        Border border = BorderFactory.createEmptyBorder(3, 3, 3, 3);
-        this.textarea.setBorder(border);
-
-        JPopupMenu popup = new TextPopup();
-        this.textarea.setComponentPopupMenu(popup);
-
-        setViewportView(this.textarea);
-
-        JScrollBar vbar = getVerticalScrollBar();
-        BoundedRangeModel rangeModel = facade.getVerticalBoundedRangeModel();
-        vbar.setModel(rangeModel);
-
-        return;
-    }
-
-    /**
-     * ロギングハンドラを返す。
-     * @return ロギングハンドラ
-     */
-    public Handler getHandler(){
-        return this.handler;
-    }
-
-}