/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 8 ĠH az uki Ċ Ġ* Ċ Ġ* ĠLicensed Ġ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 Ġjp . h az uki . y uz ub rowser . utils . view . behavior Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . design . widget . AppBar Layout Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġjp . h az uki . y uz ub rowser . R Ċ import Ġjp . h az uki . y uz ub rowser . browser . Browser Controller Ċ import Ġjp . h az uki . y uz ub rowser . tab . manager . Main Tab Data Ċ import Ġjp . h az uki . y uz ub rowser . utils . view . Padding Frame Layout Ċ import Ġjp . h az uki . y uz ub rowser . webkit . Custom WebView Ċ Ċ class ĠWebView Behavior ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠApp Bar Layout . Scrolling View Behavior ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Initialized Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtop ToolBar : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Bar : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpadding Frame : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġoverlay Padding Frame : ĠPadding Frame Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontroller : ĠBrowser Controller ĊĠĠĠ Ġprivate Ġvar ĠwebView : ĠCustom WebView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġprev Y : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġpadding Height Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġis I me Shown Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Dep ends On ( parent : ĠCoord inator Layout , Ġchild : ĠView , Ġdependency : ĠView ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dependency Ġis ĠApp Bar Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop ToolBar Ġ= Ġparent . findViewById ( R . id . top Toolbar Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Bar Ġ= Ġparent . findViewById ( R . id . bottom Overlay Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Frame Ġ= Ġchild . findViewById ( R . id . padding Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Padding Frame Ġ= Ġchild . findViewById ( R . id . overlay Toolbar Scroll Padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Initialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dependent View Changed ( parent : ĠCoord inator Layout ?, Ġchild : ĠView ?, Ġdependency : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġdependency . bottom ĊĊĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= ĠwebView ĊĠĠĠĠĠĠĠ Ġif Ġ( web View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . is Toolbar Showing Ġ= Ġdependency . top Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! web View . is Touch ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . scroll By ( 0 , Ġbottom Ġ- Ġprev Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bottom Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . set Swipe able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcontroller . get Tab OrNull ( web View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjust WebView ( data , Ġtop ToolBar . height Ġ+ Ġbottom Bar . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprev Y Ġ= Ġbottom ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Dependent View Changed ( parent , Ġchild , Ġdependency ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadjust WebView ( data : ĠMain Tab Data , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isInitialized ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( padding Height Ġ!= Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġpadding Frame . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Frame . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data . is Finished Ġ&& Ġ! data . m WebView . is Scroll able Ġ&& Ġ! is I me Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . expand Toolbar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . m WebView . is Nested Scrolling Enabled Method Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Frame . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Padding Frame . force Hide Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Frame . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Padding Frame . force Hide Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset WebView ( web View : ĠCustom WebView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . web View Ġ= ĠwebView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Controller ( browser Controller : ĠBrowser Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontroller Ġ= Ġbrowser Controller ĊĠĠĠ Ġ} Ċ } Ċ