Revision: 4708
          http://sourceforge.net/p/jump-pilot/code/4708
Author:   edso
Date:     2015-12-27 20:02:37 +0000 (Sun, 27 Dec 2015)
Log Message:
-----------
keep scrollbar positions intact after panel update

Modified Paths:
--------------
    core/trunk/src/com/vividsolutions/jump/workbench/ui/AboutDialog.java
    
core/trunk/src/com/vividsolutions/jump/workbench/ui/ExtensionsAboutPanel.java

Modified: core/trunk/src/com/vividsolutions/jump/workbench/ui/AboutDialog.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/ui/AboutDialog.java        
2015-12-27 20:01:47 UTC (rev 4707)
+++ core/trunk/src/com/vividsolutions/jump/workbench/ui/AboutDialog.java        
2015-12-27 20:02:37 UTC (rev 4708)
@@ -64,6 +64,9 @@
 import javax.swing.JTabbedPane;
 import javax.swing.JTextArea;
 import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.event.AncestorEvent;
+import javax.swing.event.AncestorListener;
 
 import com.vividsolutions.jump.I18N;
 import com.vividsolutions.jump.JUMPVersion;
@@ -303,6 +306,36 @@
         extScroll.setBorder(BorderFactory.createEmptyBorder());
         jTabbedPane1.addTab(I18N.get("ui.AboutDialog.Extensions"), extScroll);
 
+        extScroll.addAncestorListener(new AncestorListener() {
+          int h = 0, v = 0;
+
+          @Override
+          public void ancestorRemoved(AncestorEvent event) {
+            h = extScroll.getHorizontalScrollBar().getValue();
+            v = extScroll.getVerticalScrollBar().getValue();
+          }
+
+          @Override
+          public void ancestorMoved(AncestorEvent event) {
+            h = extScroll.getHorizontalScrollBar().getValue();
+            v = extScroll.getVerticalScrollBar().getValue();
+          }
+
+          // reload if the tab is activated
+          @Override
+          public void ancestorAdded(AncestorEvent event) {
+
+            extensionsAboutPanel.refresh();
+            // restore scrollbar positions after refresh
+            SwingUtilities.invokeLater(new Runnable() {
+              public void run() {
+                extScroll.getHorizontalScrollBar().setValue(h);
+                extScroll.getVerticalScrollBar().setValue(v);
+              }
+            });
+          }
+        });
+        
         // add tabbedpane
         add(jTabbedPane1, BorderLayout.CENTER);
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/ExtensionsAboutPanel.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/ui/ExtensionsAboutPanel.java   
    2015-12-27 20:01:47 UTC (rev 4707)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/ui/ExtensionsAboutPanel.java   
    2015-12-27 20:02:37 UTC (rev 4708)
@@ -57,22 +57,6 @@
             ex.printStackTrace();
         }
         
-        addAncestorListener(new AncestorListener() {
-          
-          @Override
-          public void ancestorRemoved(AncestorEvent event) {
-          }
-          
-          @Override
-          public void ancestorMoved(AncestorEvent event) {
-          }
-          // reload if the tab is activated
-          @Override
-          public void ancestorAdded(AncestorEvent event) {
-            refresh();
-          }
-        });
-
     }
 
     public void refresh() {
@@ -111,6 +95,6 @@
         editorPane.setText("jEditorPane1");
         editorPane.setContentType("text/html");
         editorPane.setBorder(BorderFactory.createEmptyBorder());
-        refresh();
+        add(editorPane);
     }
 }
\ No newline at end of file


------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to