示例#1
0
            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");
                }
            }
示例#2
0
            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);
            }