Example #1
0
        /// <summary>
        /// Initializes a new instance of the EditorWindow class
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="resourceId"></param>
        public EditorWindow(IServerConnection conn, string resourceId)
            : this()
        {
            _conn     = conn;
            this.Text = this.Text + " - " + resourceId;
            _svc      = new DefaultResourceEditorService(resourceId, conn);
            _svc.DirtyStateChanged += OnDirtyStateChanged;
            _ed.Dock = DockStyle.Fill;
            var previewer = conn.GetPreviewUrlGenerator();

            btnPreview.Enabled = (previewer != null && previewer.IsPreviewableType(ResourceIdentifier.GetResourceTypeAsString(resourceId)));
            this.Controls.Add(_ed);
            _ed.Bind(_svc);
            _ed.ReadyForEditing();
            _ed.TextChanged += OnXmlContentChanged;
        }
        /// <summary>
        /// Gets whether the specified resource can be previewed
        /// </summary>
        /// <param name="res"></param>
        /// <param name="conn"></param>
        /// <returns></returns>
        public bool IsPreviewable(IResource res, IServerConnection conn)
        {
            Check.ArgumentNotNull(res, nameof(res));
            Check.ArgumentNotNull(conn, nameof(conn));

            var rt = res.ResourceType;

            if (conn.Capabilities.SupportsResourcePreviews)
            {
                bool bKnownResourceType = !(res is UntypedResource);
                if (rt == ResourceTypes.SymbolDefinition.ToString())
                {
                    return(bKnownResourceType && conn.SiteVersion >= new Version(2, 0) && Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0);
                }
                else
                {
                    var  previewer    = conn.GetPreviewUrlGenerator();
                    bool bPreviewable = (previewer != null && previewer.IsPreviewableType(rt));
                    //A Map Definition can be saved directly and referenced by a Web Layout
                    //An Web Layout and Application Definition can be saved directly and
                    //passed straight to the AJAX/Fusion viewers.
                    //
                    //So even if they're UntypedResource instances, they're still "previewable" for the purpose
                    //of this test
                    if (res.ResourceType != ResourceTypes.MapDefinition.ToString() &&
                        res.ResourceType != ResourceTypes.WebLayout.ToString() &&
                        res.ResourceType != ResourceTypes.ApplicationDefinition.ToString())
                    {
                        return(bKnownResourceType && bPreviewable);
                    }
                    else
                    {
                        return(bPreviewable);
                    }
                }
            }
            return(false);
        }