OSDN Git Service

終了時に画面サイズ, 表示位置を記憶し次回起動時に再現する
authoryukihane <yukihane.feather@gmail.com>
Fri, 2 Sep 2011 07:13:16 +0000 (16:13 +0900)
committeryukihane <yukihane.feather@gmail.com>
Fri, 9 Sep 2011 11:39:32 +0000 (20:39 +0900)
frontend/src/yukihane/inqubus/Config.java
frontend/src/yukihane/inqubus/gui/MainFrame.java

index b2125d1..bbbf0bc 100644 (file)
@@ -445,7 +445,6 @@ public enum Config {
     public void setSearchVideoDirs(List<String> s) {
         config.setProperty(SEARCH_VIDEO, s);
     }
-
     private static final String SEARCH_COMMENT = "search.comment";
 
     @SuppressWarnings("unchecked")
@@ -496,6 +495,87 @@ public enum Config {
     public void setSystemTempDir(String s) {
         config.setProperty(SYSTEM_TEMPDIR, s);
     }
+    private static final String SYSTEM_WINDOW_WIDTH = "system.window.width";
+
+    public int getSystemWindowWidth() {
+        return config.getInt(SYSTEM_WINDOW_WIDTH, -1);
+    }
+
+    public void setSystemWindowWidth(int s) {
+        config.setProperty(SYSTEM_WINDOW_WIDTH, s);
+    }
+    private static final String SYSTEM_WINDOW_HEIGHT = "system.window.height";
+
+    public int getSystemWindowHeight() {
+        return config.getInt(SYSTEM_WINDOW_HEIGHT, -1);
+    }
+
+    public void setSystemWindowHeight(int s) {
+        config.setProperty(SYSTEM_WINDOW_HEIGHT, s);
+    }
+
+    private static final String SYSTEM_WINDOW_POS_X = "system.window.posx";
+    public int getSystemWindowPosX() {
+       return config.getInt(SYSTEM_WINDOW_POS_X, -1);
+    }
+
+    public void setSystemWindowPosX(int s) {
+         config.setProperty(SYSTEM_WINDOW_POS_X, s);
+    }
+
+    private static final String SYSTEM_WINDOW_POS_Y = "system.window.posy";
+    public int getSystemWindowPosY() {
+       return config.getInt(SYSTEM_WINDOW_POS_Y, -1);
+    }
+
+    public void setSystemWindowPosY(int s) {
+         config.setProperty(SYSTEM_WINDOW_POS_Y, s);
+    }
+    private static final String SYSTEM_COLUMN_ID = "system.column.id";
+
+    public int getSystemColumnId() {
+        return config.getInt(SYSTEM_COLUMN_ID, -1);
+    }
+
+    public void setSystemColumnId(int s) {
+        config.setProperty(SYSTEM_COLUMN_ID, s);
+    }
+    private static final String SYSTEM_COLUMN_VIDEO = "system.column.video";
+
+    public int getSystemColumnVideo() {
+        return config.getInt(SYSTEM_COLUMN_VIDEO, -1);
+    }
+
+    public void setSystemColumnVideo(int s) {
+        config.setProperty(SYSTEM_COLUMN_VIDEO, s);
+    }
+    private static final String SYSTEM_COLUMN_COMMENT = "system.column.comment";
+
+    public int getSystemColumnComment() {
+        return config.getInt(SYSTEM_COLUMN_COMMENT, -1);
+    }
+
+    public void setSystemColumnComment(int s) {
+        config.setProperty(SYSTEM_COLUMN_COMMENT, s);
+    }
+    private static final String SYSTEM_COLUMN_CONVERT = "system.column.convert";
+
+    public int getSystemColumnConvert() {
+        return config.getInt(SYSTEM_COLUMN_CONVERT, -1);
+    }
+
+    public void setSystemColumnConvert(int s) {
+        config.setProperty(SYSTEM_COLUMN_CONVERT, s);
+    }
+    private static final String SYSTEM_COLUMN_STATUS = "system.column.status";
+
+    public int getSystemColumnStatus() {
+        return config.getInt(SYSTEM_COLUMN_STATUS, -1);
+    }
+
+    public void setSystemColumnStatus(int s) {
+        config.setProperty(SYSTEM_COLUMN_STATUS, s);
+    }
 
     /*
      *
index dddc532..248e2b0 100644 (file)
@@ -5,18 +5,20 @@
  */
 package yukihane.inqubus.gui;
 
+import java.awt.Dimension;
 import java.awt.Image;
 import java.awt.ItemSelectable;
+import java.awt.Point;
 import java.awt.Toolkit;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.File;
@@ -56,6 +58,7 @@ import javax.swing.SwingUtilities;
 import javax.swing.TransferHandler;
 import javax.swing.WindowConstants;
 import javax.swing.border.BevelBorder;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import saccubus.FfmpegOption;
@@ -109,6 +112,9 @@ public class MainFrame extends JFrame {
 
     /** Creates new form MainFrame */
     public MainFrame() {
+        super();
+        addWindowListener(new MainFrameWindowListener());
+
         final Config p = Config.INSTANCE;
 
         // ワーカスレッド生成
@@ -465,6 +471,33 @@ public class MainFrame extends JFrame {
         );
 
         pack();
+
+        /*
+         * 画面のサイズや位置を前回終了時のものに設定する
+         */
+        final int windowWidth = p.getSystemWindowWidth();
+        final int windowHeight = p.getSystemWindowHeight();
+        if (windowWidth > 0 && windowHeight > 0) {
+            setSize(windowWidth, windowHeight);
+        }
+
+        final int windowPosX = p.getSystemWindowPosX();
+        final int windowPosY = p.getSystemWindowPosY();
+        if (windowPosX > 0 && windowPosY > 0) {
+            setLocation(windowPosX, windowPosY);
+        } else {
+            setLocationByPlatform(true);
+        }
+
+        final int colId = p.getSystemColumnId();
+        if(colId > 0) {
+            tblDisplay.getColumnModel().getColumn(0).setPreferredWidth(colId);
+        }
+        final int colStatus = p.getSystemColumnStatus();
+        if(colStatus > 0) {
+            tblDisplay.getColumnModel().getColumn(4).setPreferredWidth(colStatus);
+        }
+
         initInputPanel();
         pnlMain.setTransferHandler(new DownloadListTransferHandler());
         tblDisplay.setTransferHandler(new TableTransferHandler());
@@ -834,6 +867,32 @@ public class MainFrame extends JFrame {
         }
     }
 
+    private class MainFrameWindowListener extends WindowAdapter {
+        @Override
+        public void windowClosing(WindowEvent e) {
+            final Config p = Config.INSTANCE;
+
+            final Dimension size = getSize();
+            p.setSystemWindowWidth(size.width);
+            p.setSystemWindowHeight(size.height);
+
+            final Point pos = getLocation();
+            p.setSystemWindowPosX(pos.x);
+            p.setSystemWindowPosY(pos.y);
+
+            p.setSystemColumnId(tblDisplay.getColumnModel().getColumn(0).getWidth());
+            p.setSystemColumnVideo(tblDisplay.getColumnModel().getColumn(1).getWidth());
+            p.setSystemColumnComment(tblDisplay.getColumnModel().getColumn(2).getWidth());
+            p.setSystemColumnConvert(tblDisplay.getColumnModel().getColumn(3).getWidth());
+            p.setSystemColumnStatus(tblDisplay.getColumnModel().getColumn(4).getWidth());
+            try {
+                p.save();
+            } catch (ConfigurationException ex) {
+                logger.log(Level.SEVERE, "コンフィグ保存失敗", ex);
+            }
+        }
+    }
+
     /*
      * ここからDownloadProfile作成用クラスの定義
      */