/// <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); }