/* Ċ Copyright Ġ 2 0 1 8 ĠBar D ĠSoftware Ġs . r . o Ċ Ċ This Ġfile Ġis Ġpart Ġof ĠG antt Project , Ġan Ġopen source Ġproject Ġmanagement Ġtool . Ċ Ċ Gantt Project Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ it Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ċ Gantt Project Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ but ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ MER CHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ GNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ċ You Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ along Ġwith ĠG antt Project . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ */ Ċ package Ġbiz . g ant tp ro ject . storage . cloud Ċ Ċ import Ġbiz . g ant tp ro ject . FX Util Ċ import Ġbiz . g ant tp ro ject . app . Root Local izer Ċ import Ġbiz . g ant tp ro ject . app . Spinner Ċ import Ġbiz . g ant tp ro ject . storage . BROW SE _ P ANE _ LOCAL IZER Ċ import Ġbiz . g ant tp ro ject . storage . Storage Dialog Builder Ċ import Ġbiz . g ant tp ro ject . storage . Storage Ui Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . layout . Border Pane Ċ import Ġjavafx . scene . layout . Pane Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . java fx . Java Fx Ċ import Ġkotlinx . coroutines . launch Ċ import Ġnet . sourceforge . g ant tp ro ject . document . Document Ċ import Ġnet . sourceforge . g ant tp ro ject . document . Document Manager Ċ import Ġjava . time . Instant Ċ import Ġjava . time . temporal . Ch rono Unit Ċ import Ġjava . util .* Ċ Ċ // const Ġval ĠG PC LO UD _ HOST Ġ= Ġ" c umul us - dot - g ant tp ro ject - cloud . app spot . com " Ċ const Ġval ĠG PC LO UD _ SCHEME Ġ= Ġ" https " Ċ // const Ġval ĠG PC LO UD _ HOST Ġ= Ġ" cloud . g ant tp ro ject . biz " Ċ const Ġval ĠG PC LO UD _ HOST Ġ= Ġ" g ant tp ro ject . cloud " Ċ const Ġval ĠG PC LO UD _ ORIGIN Ġ= Ġ"$ G PC LO UD _ SCHEME :// $ G PC LO UD _ HOST " Ċ const Ġval ĠG PC LO UD _ PROJECT _ READ _ URL Ġ= Ġ"$ G PC LO UD _ ORIGIN / p / read " Ċ const Ġval ĠG PC LO UD _ SIGN IN _ URL Ġ= Ġ"$ G PC LO UD _ ORIGIN / __/ auth / desktop " Ċ const Ġval ĠG PC LO UD _ SIGN UP _ URL Ġ= Ġ"$ G PC LO UD _ ORIGIN / __/ auth / handler " Ċ const Ġval ĠG PC LO UD _ WEB SOCKET _ URL Ġ= Ġ" wss :// ws .$ G PC LO UD _ HOST " Ċ enum Ġclass ĠScene Id Ġ{ ĠB ROW SER , ĠSIGN UP , ĠSIGN IN , ĠOFF LINE , ĠSP INNER , ĠTOKEN _ SP INNER , ĠOFF LINE _ BROWSER Ġ} Ċ type alias ĠScene Ch anger Ġ= Ġ( Node , ĠScene Id ) Ġ-> ĠUnit Ċ Ċ /** Ċ Ġ* Ġ@ author Ġd bar as he v @ b ard software . com Ċ Ġ*/ Ċ class ĠG PC loud Storage ( ĊĠĠĠ Ġprivate Ġval Ġdialog Ui : ĠStorage Dialog Builder . Dialog Ui , ĊĠĠĠ Ġprivate Ġval Ġmode : ĠStorage Dialog Builder . Mode , ĊĠĠĠ Ġprivate Ġval Ġcurrent Document : ĠDocument , ĊĠĠĠ Ġprivate Ġval Ġopen Document : Ġ( Document ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġdocument Manager : ĠDocument Manager ) Ġ: ĠStorage Ui Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġbrowser Pane : ĠG PC loud Browser Pane ĊĠ Ġprivate Ġval Ġmy Pane : ĠBorder Pane Ġ= ĠBorder Pane () ĊĊĠ Ġoverride Ġval Ġname Ġ= Ġi 1 8 n . format Text (" list Label ") ĊĊĠ Ġoverride Ġfun Ġcreate Settings Ui (): ĠOptional < Pane > Ġ{ ĊĠĠĠ Ġreturn ĠOptional . empty () ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġcategory Ġ= Ġ" cloud " ĊĊĠ Ġoverride Ġfun Ġcreate Ui (): ĠP ane Ġ{ ĊĠĠĠ Ġreturn Ġdo Create Ui () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdo Create Ui (): ĠP ane Ġ{ ĊĠĠĠ Ġval Ġdocument Consumer : Ġ( Document ) Ġ-> ĠUnit Ġ= Ġ{ doc Ġ-> ĊĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Document ( doc ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġbrowser Pane Ġ= ĠG PC loud Browser Pane ( this . mode , Ġthis . dialog Ui , Ġthis . document Manager , Ġdocument Consumer , Ġthis . current Document ) ĊĊĠĠĠ Ġval Ġoffline Pane Ġ= ĠG PC loud Offline Pane ( this . mode ) ĊĠĠĠ Ġval Ġoffline Browser Ġ= ĠG PC loud Offline Browser ( this . mode , Ġthis . dialog Ui , Ġdocument Consumer ) ĊĠĠĠ ĠG PC loud Ui Flow Builder (). apply Ġ{ ĊĠĠĠĠĠ Ġwrapper Pane Ġ= Ġmy Pane ĊĠĠĠĠĠ Ġdialog Ġ= Ġdialog Ui . dialog Controller ĊĠĠĠĠĠ Ġmain Page Ġ= Ġbrowser Pane ĊĠĠĠĠĠ Ġoffline Alert Page Ġ= Ġoffline Pane ĊĠĠĠĠĠ Ġoffline Main Page Ġ= Ġoffline Browser ĊĠĠĠĠĠ Ġbuild (). start () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmy Pane ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġnext Page ( new Page : ĠNode , Ġscene Id : ĠScene Id ) Ġ{ ĊĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠ ĠFX Util . transition Center Pane ( my Pane , Ġnew Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Ui . resize () ĊĠĠĠĠĠĠĠ Ġif Ġ( scene Id Ġ== ĠScene Id . BROWSER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbrowser Pane . focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġ( G PC loud Options ). on AuthToken (): ĠAuth Token Callback Ġ{ ĊĠ Ġreturn Ġ{ Ġtoken , Ġvalidity , ĠuserId , Ġwebsocket Token Ġ-> ĊĠĠĠ Ġval Ġvalidity As Long Ġ= Ġvalidity ?. to Long OrNull () ĊĠĠĠ Ġthis . auth Token . value Ġ= Ġtoken ĊĠĠĠ Ġthis . validity . value Ġ= Ġif Ġ( validity As Long Ġ== Ġnull Ġ|| Ġvalidity As Long Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠInstant . now (). plus ( validity As Long , ĠCh rono Unit . HOUR S ). epoch Second . toString () ĊĠĠĠ Ġ} ĊĠĠĠ Ġthis . userId . value Ġ= ĠuserId ĊĠĠĠ Ġthis . websocket Token Ġ= Ġwebsocket Token ĊĠĠĠ Ġweb Socket . start () ĊĠĠĠ Ġthis . cloud Status . value Ġ= ĠCloud Status . CONNECTED ĊĠ Ġ} Ċ } Ċ Ċ fun Ġ( G PC loud Options ). disconnect () Ġ{ ĊĠ Ġweb Socket . stop () ĊĠ Ġauth Token . value Ġ= Ġ"" ĊĠ Ġvalidity . value Ġ= Ġ"" ĊĠ ĠuserId . value Ġ= Ġ"" ĊĠ Ġwebsocket Token Ġ= Ġ"" ĊĠ Ġcloud Status . value Ġ= ĠCloud Status . DIS CONNECTED Ċ Ċ } Ċ private Ġval Ġi 1 8 n Ġ= ĠRoot Local izer . create With Root Key (" storage Service . cloud ", ĠB ROW SE _ P ANE _ LOCAL IZER ) Ċ