private void SetupOnClick( RemoteFileDescr forFile, AnchorBasedActionView widget, bool isInitial) { if (!_parent.Downloadable) { widget.Href = "#"; return; } var effectiveMethod = _parent.ImageOpenMethod == OpenImagesMethod.Lightbox && forFile.FullDimensions == null ? OpenImagesMethod.DownloadAsAttachment : _parent.ImageOpenMethod; switch (effectiveMethod) { case OpenImagesMethod.DownloadAsAttachment: if (isInitial) { widget.Triggered += () => _parent.RunDownloadOperation(forFile, DownloadMethod.Attachment); } break; case OpenImagesMethod.InlineInNewTab: widget.OnClickPreventsDefault = false; widget.Target = "_blank"; widget.Href = _parent.BuildHref(forFile, DownloadMethod.Inline); break; case OpenImagesMethod.Lightbox: if (isInitial) { widget.ShouldTriggerOnTarget = x => { var res = x.IsElementOrItsDescendant(widget.Widget); Logger.Debug(GetType(), "click was meaningful?=" + res); return(res); }; widget.Triggered += () => { Logger.Debug(GetType(), "invoking lightBoxManager from onclick"); new LightBoxManager(x => _parent.BuildHref(forFile, DownloadMethod.Inline)) .Start(widget, forFile); }; } break; default: throw new Exception("unsupported OpenImagesMethod"); } }
public IView <HTMLElement> Create(RemoteFileDescr forFile, Action forceAddOrRemoveToView) { var widget = new AnchorBasedActionView( forFile.GetNotTooLongFileName( _parent.FileNameMaxVisibleLength, _parent.FileNameShortening), forFile.FileName); UpdateEnablementAndHref(forFile, widget, false); var effectiveMethod = _parent.ImageOpenMethod == OpenImagesMethod.Lightbox && forFile.FullDimensions == null ? OpenImagesMethod.DownloadAsAttachment : _parent.ImageOpenMethod; switch (effectiveMethod) { case OpenImagesMethod.DownloadAsAttachment: widget.Triggered += () => { if (!_parent.Downloadable) { return; } _parent.RunDownloadOperation(forFile, DownloadMethod.Attachment); }; break; case OpenImagesMethod.InlineInNewTab: widget.OnClickPreventsDefault = false; widget.Target = "_blank"; widget.Href = _parent.BuildHref(forFile, DownloadMethod.Inline); break; case OpenImagesMethod.Lightbox: widget.ShouldTriggerOnTarget = x => x.IsElementOrItsDescendant(widget.Widget); widget.Triggered += () => { Logger.Debug(GetType(), "invoking lightBoxManager from view"); new LightBoxManager(x => _parent.BuildHref(forFile, DownloadMethod.Inline)) .Start(widget, forFile); }; break; default: throw new Exception("unsupported OpenImagesMethod"); } _known.Add(forFile, widget); return(widget); }