private static RenderedLayerDisplayInfo BuildLayerSelector(ViewerControl viewer, CachePackage cachePackage, string basePath, CrunchedFile crunchedFile) { RenderedLayerDisplayInfo renderedLayerDisplayInfo = new RenderedLayerDisplayInfo(); renderedLayerDisplayInfo.tsmiList = new List <ToolStripMenuItem>(); foreach (CrunchedLayer current in crunchedFile.crunchedLayers) { RenderedLayerSelector renderedLayerSelector = new RenderedLayerSelector(current); renderedLayerSelector.viewer = viewer; renderedLayerSelector.menuItem = new ToolStripMenuItem(current.displayName); renderedLayerSelector.tileSource = new RenderedTileSource(cachePackage, new VENamingScheme(Path.Combine(basePath, current.namingScheme.GetFilePrefix()), current.namingScheme.GetFileSuffix())); renderedLayerSelector.menuItem.Tag = renderedLayerSelector; renderedLayerSelector.menuItem.Click += MenuItem_Click; renderedLayerDisplayInfo.tsmiList.Add(renderedLayerSelector.menuItem); } for (int i = 0; i < renderedLayerDisplayInfo.tsmiList.Count; i++) { ((RenderedLayerSelector)renderedLayerDisplayInfo .tsmiList[renderedLayerDisplayInfo.tsmiList.Count - 1 - i].Tag).ToggleLayer(); } renderedLayerDisplayInfo.defaultView = crunchedFile.crunchedLayers[0].defaultView; return(renderedLayerDisplayInfo); }
private static CrunchedFile GetRenderedMashupsFromFile(Uri uri) { CrunchedFile crunchedFile; try { crunchedFile = CrunchedFile.FromUri(uri); } catch (XmlException ex) { throw new Exception(string.Format("File {0} does not conform to {1} format. (Error was: {2})", uri, CrunchedFile.CrunchedFilename, ex.Message)); } catch (Exception ex2) { throw new Exception(string.Format("Couldn't read {0}:\n{1}", uri, ex2.Message)); } if (crunchedFile.crunchedLayers.Count == 0) { throw new Exception(string.Format("Found no rendered layers described in {0}\n", uri)); } return(crunchedFile); }
public static CrunchedFile FromUri(Uri uri) { XmlTextReader reader; if (uri.IsFile) { string localPath = uri.LocalPath; reader = new XmlTextReader(File.Open(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } else { if (!(uri.Scheme == "http")) { throw new Exception(string.Format("Unhandled URI scheme {0}", uri.Scheme)); } HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate); D.Sayf(1, "Fetching {0}", new object[] { uri }); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); if (httpWebResponse.StatusCode != HttpStatusCode.OK) { throw new Exception( string.Format("HTTP {0} from web source", httpWebResponse.StatusCode.ToString())); } Stream responseStream = httpWebResponse.GetResponseStream(); reader = new XmlTextReader(responseStream); } MashupParseContext mashupParseContext = new MashupParseContext(reader); CrunchedFile crunchedFile = null; using (mashupParseContext) { while (mashupParseContext.reader.Read() && crunchedFile == null) { if (mashupParseContext.reader.NodeType == XmlNodeType.Element && mashupParseContext.reader.Name == crunchedFileTag) { crunchedFile = new CrunchedFile(mashupParseContext); break; } } mashupParseContext.Dispose(); } if (crunchedFile == null) { throw new InvalidMashupFile(mashupParseContext, string.Format("{0} doesn't appear to be a valid crunched file.", uri)); } return(crunchedFile); }
public static RenderedLayerDisplayInfo GetLayerSelector(ViewerControl viewer, CachePackage cachePackage, Uri uri) { RenderedLayerDisplayInfo result; try { CrunchedFile renderedMashupsFromFile = RenderedLayerSelector.GetRenderedMashupsFromFile(uri); D.Assert(uri.IsFile); string localPath = uri.LocalPath; result = RenderedLayerSelector.BuildLayerSelector(viewer, cachePackage, Path.GetDirectoryName(localPath), renderedMashupsFromFile); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error opening crunched file ", MessageBoxButtons.OK, MessageBoxIcon.Hand); result = null; } return(result); }
private static RenderedLayerDisplayInfo BuildLayerSelector(ViewerControl viewer, CachePackage cachePackage, string basePath, CrunchedFile crunchedFile) { RenderedLayerDisplayInfo renderedLayerDisplayInfo = new RenderedLayerDisplayInfo(); renderedLayerDisplayInfo.tsmiList = new List<ToolStripMenuItem>(); foreach (CrunchedLayer current in crunchedFile.crunchedLayers) { RenderedLayerSelector renderedLayerSelector = new RenderedLayerSelector(current); renderedLayerSelector.viewer = viewer; renderedLayerSelector.menuItem = new ToolStripMenuItem(current.displayName); renderedLayerSelector.tileSource = new RenderedTileSource(cachePackage, new VENamingScheme(Path.Combine(basePath, current.namingScheme.GetFilePrefix()), current.namingScheme.GetFileSuffix())); renderedLayerSelector.menuItem.Tag = renderedLayerSelector; renderedLayerSelector.menuItem.Click += new EventHandler(RenderedLayerSelector.MenuItem_Click); renderedLayerDisplayInfo.tsmiList.Add(renderedLayerSelector.menuItem); } for (int i = 0; i < renderedLayerDisplayInfo.tsmiList.Count; i++) { ((RenderedLayerSelector)renderedLayerDisplayInfo.tsmiList[renderedLayerDisplayInfo.tsmiList.Count - 1 - i].Tag).ToggleLayer(); } renderedLayerDisplayInfo.defaultView = crunchedFile.crunchedLayers[0].defaultView; return renderedLayerDisplayInfo; }
public static CrunchedFile FromUri(Uri uri) { XmlTextReader reader; if (uri.IsFile) { string localPath = uri.LocalPath; reader = new XmlTextReader(File.Open(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } else { if (!(uri.Scheme == "http")) { throw new Exception(string.Format("Unhandled URI scheme {0}", uri.Scheme)); } HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate); D.Sayf(1, "Fetching {0}", new object[] { uri }); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); if (httpWebResponse.StatusCode != HttpStatusCode.OK) { throw new Exception(string.Format("HTTP {0} from web source", httpWebResponse.StatusCode.ToString())); } Stream responseStream = httpWebResponse.GetResponseStream(); reader = new XmlTextReader(responseStream); } MashupParseContext mashupParseContext = new MashupParseContext(reader); CrunchedFile crunchedFile = null; using (mashupParseContext) { while (mashupParseContext.reader.Read() && crunchedFile == null) { if (mashupParseContext.reader.NodeType == XmlNodeType.Element && mashupParseContext.reader.Name == CrunchedFile.crunchedFileTag) { crunchedFile = new CrunchedFile(mashupParseContext); break; } } mashupParseContext.Dispose(); } if (crunchedFile == null) { throw new InvalidMashupFile(mashupParseContext, string.Format("{0} doesn't appear to be a valid crunched file.", uri)); } return crunchedFile; }