public a(IBeforeLogin ee) { //FormStyler.AtFormCreated = FormStyler.LikeVisualStudioMetro; //FormStyler.AtFormCreated = FormStylerLikeFloat.LikeFloat; var ff = new Form { FormBorderStyle = FormBorderStyle.None }; var ScrollArea = new App().ScrollArea.AttachTo(ff.GetHTMLTargetContainer()); //ScrollArea.style.backgroundColor = "#185D7B"; //ScrollArea.style.backgroundColor = "#185D7B"; ScrollArea.style.backgroundColor = "#105070"; var SidebarWidth = 172; ff.MoveTo(SidebarWidth, 0); Action AtResize = delegate { ff.SizeTo(Native.window.Width - SidebarWidth, Native.window.Height); }; Native.window.onresize += delegate { AtResize(); }; AtResize(); var iii = global::CSSMinimizeFormToSidebar.ApplicationExtension.InitializeSidebarBehaviour( ff, // should be handle close instead! HandleClosed: true, HandleDragToLeft: false ); iii.SidebarText.className = "AppPreviewText"; //iii.SidebarText.innerText = "My Appz"; //iii.SidebarText.innerText = "Synchronizing..."; //var finish = iii.SidebarText.ToASCIIStyledLoadAnimation("My Appz"); //Native.Document.body.style.backgroundColor = "#105070"; Native.document.body.style.backgroundColor = "#185D7B"; Native.window.onresize += delegate { // lets not centerize //ff.Show(); }; //var page = new App(); //page.ScrollArea.AttachToDocument(); var count = 0; var yield_BringToFront = false; var icon_throttle = 0; #region yield yield_ACTION_MAIN yield = ( packageName, name, __IsCoreAndroidWebServiceActivity, label ) => { if (string.IsNullOrEmpty(label)) label = packageName; var IsCoreAndroidWebServiceActivity = System.Convert.ToBoolean(__IsCoreAndroidWebServiceActivity); count++; var a = new AppPreview(); #region icon if (packageName != "foo") { // see also: X:\jsc.svn\examples\javascript\ImageCachedIntoLocalStorageExperiment\ImageCachedIntoLocalStorageExperiment\Application.cs // extension to the system // data.icon[packageName].With Action loadicon = delegate { new ScriptCoreLib.JavaScript.Runtime.Timer( delegate { new IHTMLImage { src = "/icon/" + packageName }.InvokeOnComplete( i => { var dataURL = i.toDataURL(); // Uncaught QuotaExceededError: An attempt was made to add something to storage that exceeded the quota. // http://stackoverflow.com/questions/6276282/how-can-i-request-an-increase-to-the-html5-localstorage-size-on-ipad-like-the-f //message: "An attempt was made to add something to storage that exceeded the quota." //name: "QuotaExceededError" a.Icon.src = dataURL; try { Native.window.localStorage[new { packageName }] = dataURL; } catch (Exception err) { Console.WriteLine(new { packageName, error = new { err.Message } }); } } ); } ).StartTimeout(icon_throttle); }; // VirtualDictionary? Native.window.localStorage[new { packageName }].With( dataURL => { Console.WriteLine("load from localstorage: " + new { packageName }); a.Icon.src = dataURL; loadicon = delegate { }; } ); loadicon(); icon_throttle += 900; } #endregion //a.Icon.src = "/icon/" + packageName; //a.Icon.src = "data:image/png;base64," + icon_base64; a.Label.innerText = label; if (yield_BringToFront) { Console.WriteLine("yield_BringToFront " + new { packageName }); ScrollArea.insertBefore(a.Container, ScrollArea.firstChild); } else { a.Container.AttachTo(ScrollArea); } //(page.gauge_layer1.style as dynamic).webkitTransition = "-webkit-transform 0.7s ease-in"; //-webkit-transition: filter 0.3s linear; __Form __ff = ff; (__ff.HTMLTarget.style as dynamic).webkitTransition = "-webkit-filter 0.7s ease-in"; #region onclick Action<bool> onclick = CanAutoLaunch => { Console.WriteLine(new { label }); var content = new windows.ApplicationControl(); var f = new Form { Text = label, ShowIcon = false }; f.ClientSize = content.Size; f.FormClosed += delegate { (__ff.HTMLTarget.style as dynamic).webkitFilter = "blur(0px) brightness(1.0)"; }; f.Shown += delegate { ; (__ff.HTMLTarget.style as dynamic).webkitFilter = "blur(4px) brightness(0.8)"; }; f.Show(); //FormAsPopupExtensionsForConsoleFormPackage.PopupInsteadOfClosing( // f, // HandleFormClosing: false, // NotifyDocked: // delegate // { // (__ff.HTMLTarget.style as dynamic).webkitFilter = "blur(4px) brightness(0.8)"; // }, // NotifyFloat: // delegate // { // (__ff.HTMLTarget.style as dynamic).webkitFilter = "blur(0px) brightness(1.0)"; // }, // SpecialCloseOnLeft: delegate // { // Console.WriteLine("SpecialCloseOnLeft"); // service.Launch( // packageName, // name, // DisableCallbackToken: "true" // ); // //f.Close(); // } //); if (CanAutoLaunch && IsCoreAndroidWebServiceActivity) { f.Opacity = 0.5; var w = new WebBrowser(); w.Dock = DockStyle.Fill; f.Controls.Add(w); service.Launch( packageName, name, yield_port: // we should remember the port // to launch it offline via AppCache port => { Console.WriteLine(new { port }); // close to left sidebar! // broken? //ff.Close(); f.Opacity = 1.0; var uri = Native.document.location.protocol + "//" + Native.document.location.host.TakeUntilIfAny(":") + ":" + port; //w.Navigated += // delegate // { // Console.WriteLine("WebBrowser Navigated " + new { packageName, uri, Abstractatech.JavaScript.FormAsPopup.FormAsPopupExtensionsForConsoleFormPackageMediator.InternalPopupHasFrame }); // // FormAsPopupExtensionsForConsoleFormPackageMediator // if (Abstractatech.JavaScript.FormAsPopup.FormAsPopupExtensionsForConsoleFormPackageMediator.InternalPopupHasFrame) // { // } // }; w.Navigate(uri); f.ClientSize = content.Size; } ); } else { f.Controls.Add(content); content.Dock = DockStyle.Fill; content.Label.Text = label; content.Package.Text = packageName; //a.Icon.cloneNode(true).AttachTo( // ScriptCoreLib.JavaScript.Windows.Forms.Extensions.GetHTMLTargetContainer(content.Icon) //); content.Uninstall.Click += delegate { service.Remove( packageName, name ); //f.Hide(); // http://www.w3schools.com/cssref/pr_text_text-decoration.asp a.Label.style.textDecoration = "line-through"; f.Close(); }; content.Launch.Click += delegate { // level 1 // run on android // level 2 // run as float // level 3 // run here as iframe // level 4 // run here as js import service.Launch( packageName, name, yield_port: port => { Console.WriteLine(new { port }); // close to left sidebar! ff.Close(); var uri = Native.Document.location.protocol + "//" + Native.Document.location.host.TakeUntilIfAny(":") + ":" + port; var w = new WebBrowser(); f.Controls.Add(w); w.Dock = DockStyle.Fill; w.Navigate(uri); f.ClientSize = content.Size; } ); }; } }; #endregion a.Clickable.oncontextmenu += e => { e.preventDefault(); onclick(false); }; a.Clickable.onclick += e => { e.preventDefault(); onclick(true); }; }; #endregion #region more var skip = 0; var take = 32; { Action done = delegate { }; Action MoveNext = delegate { icon_throttle = 0; //more.disabled = true; //more.innerText = "checking for more..."; Console.WriteLine("MoveNext: " + new { skip, take }); service.queryIntentActivities( yield, skip: "" + skip, take: "" + take, yield_done: done ); //service.File_list("", // ydirectory: ydirectory, // yfile: yfile, // sskip: skip.ToString(), // stake: take.ToString(), // done: done //); skip += take; }; done = delegate { //more.innerText = getmore; //more.disabled = false; if (count == skip) { //Native.Document.body.With( // body => // { // if (more.disabled) // return; // if (body.scrollHeight - 1 <= Native.Window.Height + body.scrollTop) // { MoveNext(); // } // } //); } else { //finish(); yield_BringToFront = true; service.oninstall(yield); } }; MoveNext(); //more.onclick += delegate //{ // MoveNext(); //}; //Native.Window.onscroll += // e => // { // Native.Document.body.With( // body => // { // if (more.disabled) // return; // if (body.scrollHeight - 1 <= Native.Window.Height + body.scrollTop) // { // MoveNext(); // } // } // ); // }; } //); #endregion }