Author: yradtsevich
Date: 2012-06-28 14:10:05 -0400 (Thu, 28 Jun 2012)
New Revision: 42293
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.browsersim/src/org/jboss/tools/vpe/browsersim/ui/BrowserSim.java
Log:
https://issues.jboss.org/browse/JBIDE-12191 : BrowserSim: automatically hide/customize
scrollbars
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.browsersim/src/org/jboss/tools/vpe/browsersim/ui/BrowserSim.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.browsersim/src/org/jboss/tools/vpe/browsersim/ui/BrowserSim.java 2012-06-28
17:57:32 UTC (rev 42292)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.browsersim/src/org/jboss/tools/vpe/browsersim/ui/BrowserSim.java 2012-06-28
18:10:05 UTC (rev 42293)
@@ -26,6 +26,7 @@
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.BrowserFunction;
+import org.eclipse.swt.browser.LocationAdapter;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.ProgressEvent;
@@ -236,12 +237,62 @@
}
});
- browser.addLocationListener(new LocationListener() {
+ browser.addLocationListener(new LocationAdapter() {
public void changed(LocationEvent event) {
initOrientation(deviceOrientation.getOrientationAngle());
}
- public void changing(LocationEvent event) {
+ });
+
+ browser.addLocationListener(new LocationAdapter() {
+ @Override
+ public void changed(LocationEvent event) {
+ Browser browser = (Browser) event.widget;
+ setCustomScrollbarStyles(browser);
}
+
+ @SuppressWarnings("nls")
+ private void setCustomScrollbarStyles(Browser browser) {
+ browser.execute(
+ "if (window._browserSim_customScrollBarStylesSetter === undefined) {"
+ +"window._browserSim_customScrollBarStylesSetter = function () {"
+ + "document.removeEventListener('DOMSubtreeModified',
window._browserSim_customScrollBarStylesSetter, false);"
+ + "var head = document.head;"
+ + "var style = document.createElement('style');"
+ + "style.type = 'text/css';"
+ + "style.id='browserSimStyles';"
+ + "head.appendChild(style);"
+ + "style.innerText='"
+ // The following two rules fix a problem with showing scrollbars in Google Mail and
similar,
+ // but autohiding of navigation bar stops to work with it. That is why they are
commented.
+ //+ "html {"
+ //+ "overflow: hidden;"
+ //+ "}"
+ //+ "body {"
+ //+ "position: absolute;"
+ //+ "top: 0px;"
+ //+ "left: 0px;"
+ //+ "bottom: 0px;"
+ //+ "right: 0px;"
+ //+ "margin: 0px;"
+ //+ "overflow-y: auto;"
+ //+ "overflow-x: auto;"
+ //+ "}"
+ + "::-webkit-scrollbar {"
+ + "width: 5px;"
+ + "height: 5px;"
+ + "}"
+ + "::-webkit-scrollbar-thumb {"
+ + "background: rgba(0,0,0,0.4); "
+ + "}"
+ + "::-webkit-scrollbar-corner, ::-webkit-scrollbar-thumb:window-inactive
{"
+ + "background: rgba(0,0,0,0.0);"
+ + "};"
+ + "';"
+ +"};"
+ + "document.addEventListener('DOMSubtreeModified',
window._browserSim_customScrollBarStylesSetter, false);"
+ + "}"
+ );
+ }
});
browser.addLocationListener(new LocationListener() {
@@ -267,7 +318,8 @@
}
};
- ((Browser)event.widget).execute(
+ Browser browser = (Browser)event.widget;
+ browser.execute(
"(function() {" +
"var scrollListener = function(e){" +
"window._browserSim_scrollListener(window.pageYOffset)" +