SampleCode.java revision c11a467135f9118604f31fadc99d2edd494edb0b
1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.data.Data; 19920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 20920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.*; 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.io.*; 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class SampleCode { 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mSource; 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mDest; 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mTitle; 28c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String mProjectDir; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public SampleCode(String source, String dest, String title) { 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mSource = source; 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mTitle = title; 331b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int len = dest.length(); 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (len > 1 && dest.charAt(len - 1) != '/') { 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mDest = dest + '/'; 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mDest = dest; 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 401b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 41c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 421b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //System.out.println("SampleCode init: source: " + mSource); 431b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //System.out.println("SampleCode init: dest: " + mDest); 441b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //System.out.println("SampleCode init: title: " + mTitle); 451b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 481b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public Node write(boolean offlineMode) { 491b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty List<Node> filelist = new ArrayList<Node>(); 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson File f = new File(mSource); 51c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty mProjectDir = f.getName(); 52c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String name = mProjectDir; 531b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String startname = name; 541b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String subdir = mDest; 551b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String mOut = subdir + name; 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (!f.isDirectory()) { 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson System.out.println("-samplecode not a directory: " + mSource); 581b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty return null; 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 601b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 611b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (offlineMode) 621b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty writeIndexOnly(f, mDest, offlineMode); 631b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty else { 641b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty Data hdf = Doclava.makeHDF(); 651b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("samples", "true"); 66c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectDir", mProjectDir); 671b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty writeProjectDirectory(filelist, f, mDest, false, hdf, "Files."); 68c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty writeProjectStructure(name, hdf); 69c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty getSummaryFromDir(hdf, f, "Files."); 70c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty writeProjectIndex(hdf); 711b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.removeTree("parentdirs"); 721b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("parentdirs.0.Name", name); 731b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // return a root SC node for the sample with children appended 74c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty return new Node(mProjectDir, "samples/" + startname + "/index.html", filelist, null); 751b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 761b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty return null; 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static String convertExtension(String s, String ext) { 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return s.substring(0, s.lastIndexOf('.')) + ext; 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static String[] IMAGES = {".png", ".jpg", ".gif"}; 841b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public static String[] TEMPLATED = {".java", ".xml", ".aidl", ".rs",".txt", ".TXT"}; 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static boolean inList(String s, String[] list) { 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (String t : list) { 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (s.endsWith(t)) { 89920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return true; 90920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 91920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 92920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return false; 93920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 941b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 951b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public static String mapTypes(String name) { 961b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String type = name.substring(name.lastIndexOf('.') + 1, name.length()); 971b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (type.equals("xml") || type.equals("java")) { 981b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (name.equals("AndroidManifest.xml")) type = "manifest"; 991b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty return type; 1001b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 1011b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty return type = "file"; 1021b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1031b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1041b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 1051b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public void writeProjectDirectory(List<Node> parent, File dir, String relative, Boolean recursed, Data hdf, String newkey) { 1061b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty TreeSet<String> dirs = new TreeSet<String>(); //dirs for project structure and breadcrumb 1071b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty TreeSet<String> files = new TreeSet<String>(); //files for project structure and breadcrumb 1081b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 1091b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String subdir = relative; 1101b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String name = ""; 1111b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String label = ""; 1121b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String link = ""; 1131b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String type = ""; 1141b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty int i = 0; 1151b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String expansion = ".Sub."; 1161b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String key = newkey; 1171b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 1181b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (recursed) { 1191b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty key = (key + expansion); 1201b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 1211b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty expansion = ""; 1221b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1231b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 124c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty File[] dirContents = dir.listFiles(); 125c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Arrays.sort(dirContents, byTypeAndName); 126c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty for (File f: dirContents) { 1271b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name = f.getName(); 1281b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // don't process certain types of files 1291b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (name.startsWith(".") || 1301b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name.startsWith("_") || 1311b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name.equals("default.properties") || 1321b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name.equals("build.properties") || 1331b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name.endsWith(".ttf") || 1341b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty name.equals("Android.mk")) { 1351b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //System.out.println("Invalid File Type, bypassing: " + name); 1361b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty continue; 1371b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1381b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (f.isFile() && name.contains(".")){ 1391b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String path = relative + name; 1401b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty type = mapTypes(name); 1411b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty link = convertExtension(path, ".html"); 1421b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("samples", "true");//dd needed? 1431b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (inList(path, IMAGES)) { 1441b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // copy these files to output directly 1451b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty type = "img"; 1461b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty ClearPage.copyFile(false, f, path); 1471b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty writeImagePage(f, convertExtension(path, Doclava.htmlExtension), relative); 1481b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty files.add(name); 1491b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Type", "img"); 1501b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Name", name); 1511b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Href", link); 1521b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1531b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (inList(path, TEMPLATED)) { 1541b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // copied and goes through the template 1551b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty ClearPage.copyFile(false, f, path); 1561b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty writePage(f, convertExtension(path, Doclava.htmlExtension), relative); 1571b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty files.add(name); 1581b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Type", type); 1591b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Name", name); 1601b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(key + i + ".Href", link); 1611b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1621b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // add file to the navtree 1631b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty parent.add(new Node(name, link , null, type)); 1641b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty i++; 1651b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else if (f.isDirectory()) { 1661b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty List<Node> mchildren = new ArrayList<Node>(); 1671b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty type = "dir"; 1681b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String dirpath = relative + name; 1691b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty link = dirpath + "/index.html"; 1701b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String hdfkeyName = (key + i + ".Name"); 1711b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String hdfkeyType = (key + i + ".Type"); 1721b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String hdfkeyHref = (key + i + ".Href"); 1731b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(hdfkeyName, name); 1741b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(hdfkeyType, type); 1751b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue(hdfkeyHref, relative + name + "/" + "index.html"); 1761b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //System.out.println("Found directory, recursing. Current key: " + hdfkeyName); 1771b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty writeProjectDirectory(mchildren, f, relative + name + "/", true, hdf, (key + i)); 1781b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (mchildren.size() > 0) { 1791b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //dir is processed, now add it to the navtree 180c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //don't link sidenav subdirs at this point (but can use "link" to do so) 1811b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty parent.add(new Node(name, null, mchildren, type)); 1821b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 183c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty dirs.add(name); 184c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 1851b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty i++; 1861b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1871b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 1881b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //dd not working yet 189c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //Get summary from any _index files in any project dirs (currently disabled) 190c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty // getSummaryFromDir(hdf, dir, newkey); 1911b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //If this is an index for the project root (assumed root if split length is 3 (development/samples/nn)), 1921b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //then remove the root dir so that it won't appear in the breadcrumb. Else just pass it through to 1931b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty //setParentDirs as usual. 1941b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String mpath = dir + ""; 1951b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String sdir[] = mpath.split("/"); 1961b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (sdir.length == 3 ) { 1971b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty System.out.println("-----------------> this must be the root: [sdir len]" + sdir.length + "[dir]" + dir); 198c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("showProjectPaths","true");//dd remove here? 1991b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 2001b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty setParentDirs(hdf, relative, name, false); 201c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println("writing sample index -- " + relative + "index" + Doclava.htmlExtension); 202c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //hdf.setValue("projectTitle", mTitle); 203c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //ClearPage.write(hdf, "sampleindex.cs", relative + "/index" + Doclava.htmlExtension); 204e27c950134c99151d1d9914eaaf28848327e4f63Scott Main } 205e27c950134c99151d1d9914eaaf28848327e4f63Scott Main 206c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public void writeProjectStructure(String dir, Data hdf) { 207c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println(">>-- writing project structure for " + dir ); 208c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectStructure", "true"); 209c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectDir", mProjectDir); 210c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("page.title", mProjectDir + " Structure"); 211c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectTitle", mTitle); 212c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.write(hdf, "sampleindex.cs", mDest + "project" + Doclava.htmlExtension); //write the project.html file 213c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectStructure", ""); 214920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 215920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 216c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 217c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * Write the project's templated _index.html 218c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 219c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public void writeProjectIndex(Data hdf) { 220c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println(">>-- writing project index for " + mDest ); 221c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectDir", mProjectDir); 222c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("page.title", mProjectDir + " Sample"); 223c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectTitle", mTitle); 224c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.write(hdf, "sampleindex.cs", mDest + "index" + Doclava.htmlExtension); 2251b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 2261b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 227c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 228c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * Grab the contents of an _index.html summary from a dir. 229c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 230c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public void getSummaryFromDir(Data hdf, File dir, String key) { 231c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println("Getting summary for " + dir + "/_index.html"); 232c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("summary", ""); 233c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("summaryFlag", ""); 234920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String filename = dir.getPath() + "/_index.html"; 235c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String summary = SampleTagInfo.readFile(new SourcePositionInfo(filename, 236c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty -1,-1), filename, "sample code", true, false, false, true); 237c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (summary != null) { 238c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue(key + "SummaryFlag", "true"); 239c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("summary", summary); 240c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //set the target for [info] link 241c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //hdf.setValue(key + "Href", dir + "/index.html"); 242c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //return true; 243c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 244c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 245920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 246c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 247c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * Keep track of file parents 248c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 249c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Data setParentDirs(Data hdf, String subdir, String name, Boolean isFile) { 250c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty isFile = false; 251c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty int iter; 252c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.removeTree("parentdirs"); 253c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println("setParentDirs for " + subdir + name); 254c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String s = subdir; 255c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String urlParts[] = s.split("/"); 256c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty int n, l = (isFile)?1:0; 257c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty for (iter=2; iter < urlParts.length - l; iter++) { 258c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty n = iter-2; 259c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty //System.out.println("parentdirs." + n + ".Name == " + urlParts[iter]); 260c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("parentdirs." + n + ".Name", urlParts[iter]); 261920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 262920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return hdf; 263920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 264920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 265c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 266c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * Write a templated source code file to out. 267c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 268920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void writePage(File f, String out, String subdir) { 269920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String name = f.getName(); 2701b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty String path = f.getPath(); 271920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String data = 2721b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty SampleTagInfo.readFile(new SourcePositionInfo(path, -1, -1), path, "sample code", 2731b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty true, true, true, true); 274920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data = Doclava.escape(data); 275920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 276920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson Data hdf = Doclava.makeHDF(); 2771b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("samples", "true"); 2781b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty setParentDirs(hdf, subdir, name, true); 2791b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("projectTitle", mTitle); 280c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectDir", mProjectDir); 281920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("page.title", name); 282920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("subdir", subdir); 283920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("realFile", name); 284920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("fileContents", data); 2851b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("resTag", "sample"); 2861b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("resType", "Sample Code"); 287920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 288920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClearPage.write(hdf, "sample.cs", out); 289920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 290920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 291c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 292c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * Write a templated image file to out. 293c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 294920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void writeImagePage(File f, String out, String subdir) { 295920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String name = f.getName(); 296920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 297920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String data = "<img src=\"" + name + "\" title=\"" + name + "\" />"; 298920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 299920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson Data hdf = Doclava.makeHDF(); 3001b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("samples", "true"); 3011b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty setParentDirs(hdf, subdir, name, true); 302920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("page.title", name); 3031b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("projectTitle", mTitle); 304c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectDir", mProjectDir); 305920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("subdir", subdir); 306920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("realFile", name); 307920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson hdf.setValue("fileContents", data); 3081b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("resTag", "sample"); 3091b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty hdf.setValue("resType", "Sample Code"); 310920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClearPage.write(hdf, "sample.cs", out); 311920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 3121b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3131b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty /** 3141b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty * Render a SC node to a navtree js file. 3151b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty */ 3161b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public static void writeSamplesNavTree(List<Node> tnode) { 3171b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty Node node = new Node("Reference", "packages.html", tnode, null); 3181b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3191b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty StringBuilder buf = new StringBuilder(); 3201b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (false) { 3211b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // if you want a root node 3221b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("["); 3231b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty node.render(buf); 3241b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("]"); 3251b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 3261b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // if you don't want a root node 3271b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty node.renderChildren(buf); 3281b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3291b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3301b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty Data data = Doclava.makeHDF(); 3311b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty data.setValue("reference_tree", buf.toString()); 3321b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty ClearPage.write(data, "samples_navtree_data.cs", "samples_navtree_data.js"); 3331b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3341b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 335c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Comparator<File> byTypeAndName = new Comparator<File>() { 336c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public int compare (File one, File other) { 337c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (one.isDirectory() && !other.isDirectory()) { 338c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty return 1; 339c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } else if (!one.isDirectory() && other.isDirectory()) { 340c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty return -1; 341c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } else { 342c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty return one.compareTo(other); 343c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 344c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 345c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty }; 346c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 3471b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty /** 3481b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty * SampleCode variant of NavTree node. 3491b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty */ 3501b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty public static class Node { 3511b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty private String mLabel; 3521b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty private String mLink; 3531b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty List<Node> mChildren; 354c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public String mType; 3551b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3561b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty Node(String label, String link, List<Node> children, String type) { 3571b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty mLabel = label; 3581b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty mLink = link; 3591b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty mChildren = children; 3601b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty mType = type; 3611b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3621b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3631b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty static void renderString(StringBuilder buf, String s) { 3641b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (s == null) { 3651b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("null"); 3661b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 3671b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append('"'); 3681b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty final int N = s.length(); 3691b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty for (int i = 0; i < N; i++) { 3701b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty char c = s.charAt(i); 3711b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (c >= ' ' && c <= '~' && c != '"' && c != '\\') { 3721b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(c); 3731b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 3741b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("\\u"); 3751b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty for (int j = 0; i < 4; i++) { 3761b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty char x = (char) (c & 0x000f); 3771b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (x > 10) { 3781b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty x = (char) (x - 10 + 'a'); 3791b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 3801b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty x = (char) (x + '0'); 3811b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3821b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(x); 3831b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty c >>= 4; 3841b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3851b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3861b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3871b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append('"'); 3881b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3891b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 3901b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 3911b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty void renderChildren(StringBuilder buf) { 3921b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty List<Node> list = mChildren; 3931b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (list == null || list.size() == 0) { 3941b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // We output null for no children. That way empty lists here can just 3951b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty // be a byproduct of how we generate the lists. 3961b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("null"); 3971b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } else { 3981b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("[ "); 3991b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty final int N = list.size(); 4001b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty for (int i = 0; i < N; i++) { 4011b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty list.get(i).render(buf); 4021b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty if (i != N - 1) { 4031b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(", "); 4041b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4051b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4061b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(" ]\n"); 4071b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4081b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4091b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 4101b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty void render(StringBuilder buf) { 4111b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append("[ "); 4121b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty renderString(buf, mLabel); 4131b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(", "); 4141b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty renderString(buf, mLink); 4151b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(", "); 4161b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty renderChildren(buf); 4171b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(", "); 4181b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty renderString(buf, mType); 4191b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty buf.append(" ]"); 4201b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4211b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty } 4221b45d1d08a4ff984e1d0741dd13f0759f6527ebfDirk Dougherty 423c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 424c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * @deprecated 425c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 426c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public void writeDirectory(File dir, String relative, boolean offline) { 427c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty TreeSet<String> dirs = new TreeSet<String>(); 428c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty TreeSet<String> files = new TreeSet<String>(); 429c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 430c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String subdir = relative; // .substring(mDest.length()); 431c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 432c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty for (File f : dir.listFiles()) { 433c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String name = f.getName(); 434c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (name.startsWith(".") || name.startsWith("_")) { 435c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty continue; 436c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 437c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (f.isFile()) { 438c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String out = relative + name; 439c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (inList(out, IMAGES)) { 440c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty // copied directly 441c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.copyFile(false, f, out); 442c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty writeImagePage(f, convertExtension(out, Doclava.htmlExtension), subdir); 443c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty files.add(name); 444c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 445c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (inList(out, TEMPLATED)) { 446c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty // copied and goes through the template 447c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.copyFile(false, f, out); 448c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty writePage(f, convertExtension(out, Doclava.htmlExtension), subdir); 449c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty files.add(name); 450c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 451c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 452c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty // else ignored 453c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } else if (f.isDirectory()) { 454c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty writeDirectory(f, relative + name + "/", offline); 455c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty dirs.add(name); 456c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 457c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 458c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 459c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty // write the index page 460c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty int i; 461c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 462c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Data hdf = writeIndex(dir); 463c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("subdir", subdir); 464c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty i = 0; 465c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty for (String d : dirs) { 466c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("subdirs." + i + ".Name", d); 467c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("files." + i + ".Href", convertExtension(d, ".html")); 468c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty i++; 469c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 470c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty i = 0; 471c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty for (String f : files) { 472c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("files." + i + ".Name", f); 473c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("files." + i + ".Href", convertExtension(f, ".html")); 474c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty i++; 475c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 476c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 477c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (!offline) relative = "/" + relative; 478c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.write(hdf, "sampleindex.cs", relative + "index" + Doclava.htmlExtension); 479c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 480c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 481c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 482c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * @deprecated 483c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 484c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public void writeIndexOnly(File dir, String relative, Boolean offline) { 485c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Data hdf = writeIndex(dir); 486c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (!offline) relative = "/" + relative; 487c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 488c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty System.out.println("writing indexonly at " + relative + "/index" + Doclava.htmlExtension); 489c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty ClearPage.write(hdf, "sampleindex.cs", relative + "index" + Doclava.htmlExtension); 490c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 491c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 492c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty /** 493c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty * @deprecated 494c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty */ 495c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty public Data writeIndex(File dir) { 496c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty Data hdf = Doclava.makeHDF(); 497c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("page.title", dir.getName() + " - " + mTitle); 498c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("projectTitle", mTitle); 499c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 500c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String filename = dir.getPath() + "/_index.html"; 501c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty String summary = 502c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty SampleTagInfo.readFile(new SourcePositionInfo(filename, -1, -1), filename, "sample code", 503c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty true, false, false, true); 504c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 505c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty if (summary == null) { 506c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty summary = ""; 507c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 508c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty hdf.setValue("summary", summary); 509c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 510c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty return hdf; 511c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty } 512c11a467135f9118604f31fadc99d2edd494edb0bDirk Dougherty 513920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 514