You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/07/06 10:44:01 UTC
svn commit: r1862652 - in
/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger:
PDFDebugger.java ui/WindowPrefs.java
Author: tilman
Date: Sat Jul 6 10:44:01 2019
New Revision: 1862652
URL: http://svn.apache.org/viewvc?rev=1862652&view=rev
Log:
PDFBOX-2941: save and restore window settings
Added:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java (with props)
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1862652&r1=1862651&r2=1862652&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Sat Jul 6 10:44:01 2019
@@ -21,6 +21,7 @@ import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FileDialog;
+import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
@@ -109,6 +110,7 @@ import org.apache.pdfbox.debugger.ui.Rot
import org.apache.pdfbox.debugger.ui.TextDialog;
import org.apache.pdfbox.debugger.ui.Tree;
import org.apache.pdfbox.debugger.ui.ViewMenu;
+import org.apache.pdfbox.debugger.ui.WindowPrefs;
import org.apache.pdfbox.debugger.ui.ZoomMenu;
import org.apache.pdfbox.filter.FilterFactory;
import org.apache.pdfbox.io.IOUtils;
@@ -150,6 +152,7 @@ public class PDFDebugger extends JFrame
private final JPanel documentPanel = new JPanel();
private TreeStatusPane statusPane;
private RecentFiles recentFiles;
+ private WindowPrefs windowPrefs;
private boolean isPageMode;
private PDDocument document;
private String currentFilePath;
@@ -362,10 +365,10 @@ public class PDFDebugger extends JFrame
}
});
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ windowPrefs = new WindowPrefs(this.getClass());
+
jScrollPane1.setBorder(new BevelBorder(BevelBorder.RAISED));
- jScrollPane1.setPreferredSize(new Dimension(screenSize.width / 8, 500));
- jSplitPane1.setDividerLocation(screenSize.width / 8);
+ jSplitPane1.setDividerLocation(windowPrefs.getDividerLocation());
tree.addTreeSelectionListener(new TreeSelectionListener()
{
@Override
@@ -380,7 +383,6 @@ public class PDFDebugger extends JFrame
jSplitPane1.setRightComponent(jScrollPane2);
jSplitPane1.setDividerSize(3);
- jScrollPane2.setPreferredSize(new Dimension(screenSize.width / 8 * 7, 500));
jScrollPane2.setViewportView(jTextPane1);
jSplitPane1.setLeftComponent(jScrollPane1);
@@ -407,7 +409,8 @@ public class PDFDebugger extends JFrame
menuBar.add(viewMenu.getMenu());
setJMenuBar(menuBar);
- setBounds(screenSize.width / 4, screenSize.height / 4, screenSize.width / 2, screenSize.height / 2);
+ setExtendedState(windowPrefs.getExtendedState());
+ setBounds(windowPrefs.getBounds());
// drag and drop to open files
setTransferHandler(new TransferHandler()
@@ -1193,6 +1196,10 @@ public class PDFDebugger extends JFrame
throw new RuntimeException(e);
}
}
+ windowPrefs.setExtendedState(getExtendedState());
+ this.setExtendedState(Frame.NORMAL);
+ windowPrefs.setBounds(getBounds());
+ windowPrefs.setDividerLocation(jSplitPane1.getDividerLocation());
performApplicationExit();
}
Added: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java?rev=1862652&view=auto
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java (added)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java Sat Jul 6 10:44:01 2019
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.debugger.ui;
+
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.util.prefs.Preferences;
+
+/**
+ * A class to save windows position and size in preference using java Preference API.
+ *
+ * @author Tilman Hausherr
+ */
+public class WindowPrefs
+{
+ private static final String KEY = "window_prefs_";
+ private final Preferences pref;
+
+ public WindowPrefs(Class className)
+ {
+ this.pref = Preferences.userNodeForPackage(className);
+ }
+
+ public void setBounds(Rectangle rect)
+ {
+ Preferences node = pref.node(KEY);
+ node.putInt("X", rect.x);
+ node.putInt("Y", rect.y);
+ node.putInt("W", rect.width);
+ node.putInt("H", rect.height);
+ }
+
+ public Rectangle getBounds()
+ {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Preferences node = pref.node(KEY);
+ int x = node.getInt("X", screenSize.width / 4);
+ int y = node.getInt("Y", screenSize.height / 4);
+ int w = node.getInt("W", screenSize.width / 2);
+ int h = node.getInt("H", screenSize.height / 2);
+ return new Rectangle(x, y, w, h);
+ }
+
+ public void setDividerLocation(int divider)
+ {
+ Preferences node = pref.node(KEY);
+ node.putInt("DIV", divider);
+ }
+
+ public int getDividerLocation()
+ {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Preferences node = pref.node(KEY);
+ return node.getInt("DIV", screenSize.width / 8);
+ }
+
+ public void setExtendedState(int extendedState)
+ {
+ Preferences node = pref.node(KEY);
+ node.putInt("EXTSTATE", extendedState);
+ }
+
+ public int getExtendedState()
+ {
+ Preferences node = pref.node(KEY);
+ return node.getInt("EXTSTATE", Frame.NORMAL);
+ }
+}
Propchange: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/WindowPrefs.java
------------------------------------------------------------------------------
svn:eol-style = native