home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 24 / CDACTUAL24.iso / corel / BARISTA / ZSTORAGE.CLASS (.txt) < prev   
Encoding:
Java Class File  |  1997-11-06  |  14.1 KB  |  687 lines

  1. import animationlib.BMPImageMaker;
  2. import corel.af.advgraphics.AdvGraphics;
  3. import corel.af.graphobjslib.GraphObj;
  4. import corel.af.graphobjslib.GraphObjsGroup;
  5. import corel.af.graphobjslib.SoundObj;
  6. import corel.af.graphobjslib.TableObj;
  7. import corel.af.graphobjslib.TextObj;
  8. import java.awt.Image;
  9. import java.awt.MediaTracker;
  10. import java.io.DataInputStream;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.net.URL;
  14. import java.util.Enumeration;
  15. import java.util.Hashtable;
  16. import java.util.StringTokenizer;
  17.  
  18. public class ZStorage extends Hashtable implements Runnable {
  19.    private VDoc m_Document;
  20.    private int m_iPageToLoad = 1;
  21.    private int m_iCurReadingPage = 1;
  22.    private boolean m_bCachePages = true;
  23.    private boolean m_bOutOfMem = false;
  24.    private InputStream m_HtmlInpStream;
  25.    private BMPImageMaker m_BMPImageMaker;
  26.    Barista m_Applet;
  27.    Thread m_PgLoader;
  28.    AdvGraphics m_oAdvGraphics;
  29.    private String m_StringLoadStatus;
  30.  
  31.    public ZStorage(VDoc var1) {
  32.       this.m_Document = var1;
  33.       this.m_Applet = this.m_Document.m_Applet;
  34.       this.m_PgLoader = null;
  35.       this.ReadHeader();
  36.       this.m_oAdvGraphics = new AdvGraphics();
  37.       if (this.m_Document.m_LogExtent.height == 1 && this.m_Document.m_LogExtent.width == 1) {
  38.          this.m_oAdvGraphics.setMapMode(500);
  39.       } else {
  40.          this.m_oAdvGraphics.setMapMode(506);
  41.          this.m_oAdvGraphics.setDeviceOrg((double)0.0F, (double)0.0F);
  42.          this.m_oAdvGraphics.setLogicalOrg((double)0.0F, (double)0.0F);
  43.          this.m_oAdvGraphics.setLogicalUnit((double)this.m_Document.m_LogExtent.height, (double)this.m_Document.m_LogExtent.width, (double)this.m_Document.m_DevExtent.width, (double)this.m_Document.m_DevExtent.height);
  44.       }
  45.    }
  46.  
  47.    private final void ReadHeader() {
  48.       String var1 = this.m_Applet.getParameter("Version");
  49.       if (var1 != null) {
  50.          this.m_Document.m_sVersion = (short)Integer.valueOf(var1);
  51.       }
  52.  
  53.       var1 = this.m_Applet.getParameter("PageDir");
  54.       if (var1 != null) {
  55.          this.m_Document.m_PageDirName = var1;
  56.       }
  57.  
  58.       var1 = this.m_Applet.getParameter("BackgroundColor");
  59.       if (var1 != null) {
  60.          int var2 = Integer.valueOf(var1, 16);
  61.          if (var2 < 16777216) {
  62.             this.m_Document.m_cBkColor = var2;
  63.          }
  64.       }
  65.  
  66.       if (this.m_Document.m_cBkColor == 1) {
  67.          this.m_Document.m_cBkColor = 0;
  68.       }
  69.  
  70.       var1 = this.m_Applet.getParameter("XYDPI");
  71.       if (var1 != null) {
  72.          this.m_Document.m_xyDpi = Integer.valueOf(var1);
  73.          this.m_Document.m_LogExtent.height = this.m_Document.m_LogExtent.width = this.m_Document.m_xyDpi / this.m_Document.m_defaultDpi;
  74.          if (this.m_Document.m_LogExtent.width == 0) {
  75.             this.m_Document.m_LogExtent.height = this.m_Document.m_LogExtent.width = 1;
  76.          }
  77.  
  78.          this.m_Document.m_DevExtent.width = this.m_Document.m_DevExtent.height = 1;
  79.       }
  80.  
  81.       var1 = this.m_Applet.getParameter("NumOfPages");
  82.       if (var1 != null) {
  83.          int var18 = Integer.valueOf(var1);
  84.          this.m_Document.m_nNumOfPages = var18;
  85.          if (var18 == 1) {
  86.             this.m_Document.m_bIsMultiPage = false;
  87.          }
  88.       }
  89.  
  90.       var1 = this.m_Applet.getParameter("DisplayToolbar");
  91.       if (var1 != null && (!this.m_Document.m_bIsMultiPage || Integer.valueOf(var1) == 0)) {
  92.          this.m_Document.m_bDisplayToolBar = false;
  93.       }
  94.  
  95.       if ((var1 = this.m_Applet.getParameter("DisableDoubleBuffering")) != null && Integer.valueOf(var1) == 1) {
  96.          this.m_Document.m_bDoubleBufferingDisabled = true;
  97.       }
  98.  
  99.       if (!this.m_Document.m_bDoubleBufferingDisabled) {
  100.          var1 = this.m_Applet.getParameter("AutoScroll");
  101.          if (var1 != null) {
  102.             this.m_Document.CreateAutoScroll(var1);
  103.          } else {
  104.             this.m_Document.CreateTransition();
  105.          }
  106.       }
  107.  
  108.       var1 = this.m_Applet.getParameter("ZoomFactor");
  109.       if (var1 != null) {
  110.          this.m_Document.m_fZoomFactor = (short)Integer.valueOf(var1);
  111.       }
  112.  
  113.       this.m_Applet.showStatus(this.m_Applet.m_BaristaLoc.m_StringInitializingFonts);
  114.       this.ReadFontnameList();
  115.       this.CreateFontRefTable();
  116.       var1 = this.m_Applet.getParameter("BookmarkList");
  117.       if (var1 != null) {
  118.          StringTokenizer var19 = new StringTokenizer(var1, ",");
  119.  
  120.          while(var19.hasMoreTokens()) {
  121.             String var3 = var19.nextToken().trim();
  122.  
  123.             for(int var5 = 0; var5 < this.m_Document.m_skBookmarkList.size(); ++var5) {
  124.                Bookmark var4 = (Bookmark)this.m_Document.m_skBookmarkList.elementAt(var5);
  125.                if (var4.m_BookmarkName.equalsIgnoreCase(var3)) {
  126.                   System.out.println("Bookmark named " + var3 + " already exists -- ignored");
  127.                }
  128.             }
  129.  
  130.             int var6 = Integer.valueOf(var19.nextToken().trim().substring(1));
  131.             int var7 = Integer.valueOf(var19.nextToken().trim());
  132.             int var8 = Integer.valueOf(var19.nextToken().trim());
  133.             this.m_Document.m_skBookmarkList.addElement(new Bookmark(var3, var6, var7, var8));
  134.          }
  135.       }
  136.  
  137.    }
  138.  
  139.    private final synchronized void WaitForVPanelCreation() {
  140.       if (this.m_Document.m_MainPanel == null) {
  141.          try {
  142.             this.wait();
  143.          } catch (IllegalMonitorStateException var1) {
  144.          } catch (InterruptedException var2) {
  145.          }
  146.       }
  147.    }
  148.  
  149.    public final synchronized void NotifyVPanelCreated() {
  150.       try {
  151.          this.notify();
  152.       } catch (IllegalMonitorStateException var1) {
  153.       }
  154.    }
  155.  
  156.    public void run() {
  157.       this.WaitForVPanelCreation();
  158.       this.LoadFile();
  159.       if (this.m_PgLoader != null && this.m_PgLoader.isAlive()) {
  160.          this.m_PgLoader.stop();
  161.       }
  162.  
  163.    }
  164.  
  165.    private final void LoadFile() {
  166.       if (this.m_Document.m_PageDirName != null) {
  167.          this.LoadAndReadPage(this.m_iPageToLoad);
  168.          if (this.m_bCachePages) {
  169.             this.LoadAndReadPage(this.m_iPageToLoad + 1);
  170.             this.LoadAndReadPage(this.m_iPageToLoad - 1);
  171.             this.LoadAndReadPage(this.m_iPageToLoad + 2);
  172.             this.LoadAndReadPage(this.m_iPageToLoad - 2);
  173.             return;
  174.          }
  175.       } else {
  176.          for(int var1 = 1; var1 <= this.m_Document.m_nNumOfPages; ++var1) {
  177.             this.m_iPageToLoad = var1;
  178.             String var2 = "P" + var1;
  179.             if (this.ReadPage(var2, this.m_iPageToLoad) == -1) {
  180.                return;
  181.             }
  182.          }
  183.       }
  184.  
  185.    }
  186.  
  187.    boolean DelPgFromMem() {
  188.       if (this.NoOfPgsInTbl() <= 1) {
  189.          return false;
  190.       } else {
  191.          Enumeration var3 = ((Hashtable)this).keys();
  192.  
  193.          String var1;
  194.          while(true) {
  195.             if (!var3.hasMoreElements()) {
  196.                return false;
  197.             }
  198.  
  199.             var1 = (String)var3.nextElement();
  200.             if (this.IsPage(var1) && var1 != null) {
  201.                if (!this.IsPgIsCurrPg(var1)) {
  202.                   break;
  203.                }
  204.  
  205.                var1 = (String)var3.nextElement();
  206.                if (this.IsPage(var1)) {
  207.                   break;
  208.                }
  209.             }
  210.          }
  211.  
  212.          VPage var4 = (VPage)((Hashtable)this).get(var1);
  213.  
  214.          for(int var5 = 0; var5 < var4.GetNumOfObjs(); ++var5) {
  215.             String var2 = var4.GetObjName(var5);
  216.             if (((Hashtable)this).containsKey(var2)) {
  217.                ((Hashtable)this).remove(var2);
  218.             }
  219.          }
  220.  
  221.          var4.m_nLastReadObj = 0;
  222.          ((Hashtable)this).remove(var1);
  223.          return true;
  224.       }
  225.    }
  226.  
  227.    private final boolean IsPage(String var1) {
  228.       char var2 = var1.charAt(0);
  229.       Character var3 = new Character(var2);
  230.       Character var4 = new Character('P');
  231.       return var3 == var4;
  232.    }
  233.  
  234.    private final int NoOfPgsInTbl() {
  235.       int var2 = 0;
  236.       Enumeration var3 = ((Hashtable)this).keys();
  237.  
  238.       while(var3.hasMoreElements()) {
  239.          String var1 = (String)var3.nextElement();
  240.          if (this.IsPage(var1)) {
  241.             ++var2;
  242.          }
  243.       }
  244.  
  245.       return var2;
  246.    }
  247.  
  248.    private final boolean IsPgIsCurrPg(String var1) {
  249.       String var2 = var1.substring(1);
  250.       Integer var3 = Integer.valueOf(var2);
  251.       int var4 = var3;
  252.       return var4 == this.m_Document.m_iCurrPage;
  253.    }
  254.  
  255.    private final boolean FreeMemAndReLoad(String var1, VPage var2) {
  256.       String var3 = this.m_Document.GetCurrPage().GetName();
  257.       String var4 = var3.substring(1);
  258.       Integer.valueOf(var4);
  259.       if (this.m_Document.m_PageDirName != null) {
  260.          if (!this.DelPgFromMem()) {
  261.             System.out.println("System is out of memory, cannot display page");
  262.             return false;
  263.          }
  264.  
  265.          this.m_bOutOfMem = false;
  266.          this.ReadObj(var1, var2);
  267.          if (this.m_bOutOfMem) {
  268.             System.out.println("System is out of memory, cannot display page");
  269.             return false;
  270.          }
  271.       }
  272.  
  273.       this.m_bOutOfMem = false;
  274.       return true;
  275.    }
  276.  
  277.    private final void LoadAndReadPage(int var1) {
  278.       if (var1 >= 1 && var1 <= this.m_Document.m_nNumOfPages) {
  279.          this.m_iCurReadingPage = var1;
  280.          String var2 = "P" + var1;
  281.          VPage var3 = (VPage)((Hashtable)this).get(var2);
  282.          if (var3 == null) {
  283.             this.m_HtmlInpStream = this.OpenFile(var2);
  284.             if (this.m_HtmlInpStream == null) {
  285.                return;
  286.             }
  287.  
  288.             try {
  289.                this.m_Document.m_HtmlDataInpStream = new DataInputStream(this.m_HtmlInpStream);
  290.             } catch (Exception var4) {
  291.                return;
  292.             }
  293.  
  294.             this.m_Document.ParsePageHTML();
  295.             this.ReadPage(var2, var1);
  296.             this.m_Document.ClearContents();
  297.             return;
  298.          }
  299.       }
  300.  
  301.    }
  302.  
  303.    private final InputStream OpenFile(String var1) {
  304.       Object var2 = null;
  305.       Object var3 = null;
  306.       Object var4 = null;
  307.       String var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".htm");
  308.  
  309.       try {
  310.          URL var11 = new URL(this.m_Applet.getDocumentBase(), var13);
  311.          var12 = var11.openStream();
  312.       } catch (IOException var7) {
  313.          try {
  314.             var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".HTM");
  315.             URL var10 = new URL(this.m_Applet.getDocumentBase(), var13);
  316.             var12 = var10.openStream();
  317.          } catch (IOException var6) {
  318.             try {
  319.                var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".html");
  320.                URL var9 = new URL(this.m_Applet.getDocumentBase(), var13);
  321.                var12 = var9.openStream();
  322.             } catch (IOException var5) {
  323.                var12 = null;
  324.             }
  325.          }
  326.       } catch (Exception var8) {
  327.          var12 = null;
  328.       }
  329.  
  330.       return var12;
  331.    }
  332.  
  333.    private final int ReadPage(String var1, int var2) {
  334.       VPage var3 = (VPage)((Hashtable)this).get(var1);
  335.       if (var3 != null) {
  336.          return 0;
  337.       } else {
  338.          VPage var4 = new VPage(this, var2);
  339.          var4.Read(this, var1);
  340.          this.OutputLoadProgress(var4);
  341.          ((Hashtable)this).put(var1, var4);
  342.          String var5 = var4.GetObjName(0);
  343.          if (var5 != null && !((Hashtable)this).containsKey(var5)) {
  344.             this.ReadObj(var5, var4);
  345.             if (this.m_bOutOfMem && !this.FreeMemAndReLoad(var5, var4)) {
  346.                return -1;
  347.             }
  348.          }
  349.  
  350.          if (var4 == this.m_Document.GetCurrPage()) {
  351.             this.m_Document.m_MainPanel.SetPage(var1);
  352.          }
  353.  
  354.          if (var4 == this.m_Document.GetCurrPage()) {
  355.             this.m_Document.m_MainPanel.m_bReadingPage = true;
  356.          }
  357.  
  358.          for(int var6 = 0; var6 < var4.GetNumOfObjs(); ++var6) {
  359.             var5 = var4.GetObjName(var6);
  360.             var4.m_nLastReadObj = var6 + 1;
  361.             if (var4.m_nLastReadObj % 20 == 0 || var4.m_nLastReadObj == var4.m_nNumObj) {
  362.                this.OutputLoadProgress(var4);
  363.             }
  364.  
  365.             if (!((Hashtable)this).containsKey(var5)) {
  366.                this.ReadObj(var5, var4);
  367.                if (this.m_bOutOfMem && !this.FreeMemAndReLoad(var5, var4)) {
  368.                   return -1;
  369.                }
  370.             }
  371.  
  372.             if (var4 == this.m_Document.GetCurrPage()) {
  373.                if (this.m_Document.m_MainPanel.m_nCurrObjRead == -1) {
  374.                   this.m_Document.m_MainPanel.m_nPrevObjRead = 0;
  375.                }
  376.  
  377.                this.m_Document.m_MainPanel.m_nCurrObjRead = var6;
  378.             } else if (this.m_Document.m_MainPanel.m_nCurrObjRead == -1) {
  379.                this.m_Document.m_MainPanel.m_bReadingPage = false;
  380.             }
  381.          }
  382.  
  383.          if (this.m_Document.m_MainPanel != null) {
  384.             this.m_Document.m_MainPanel.repaint();
  385.          }
  386.  
  387.          return var4.GetNumOfObjs();
  388.       }
  389.    }
  390.  
  391.    private final int ReadObj(String var1, VPage var2) {
  392.       char var3 = var1.charAt(0);
  393.       var2.GetName();
  394.       switch (var3) {
  395.          case 'A':
  396.             this.addAutoScrollObj(var1);
  397.             break;
  398.          case 'B':
  399.             this.addTableObj(var1, var2);
  400.             break;
  401.          case 'G':
  402.             this.addGraphObj(var1, var2);
  403.             break;
  404.          case 'K':
  405.             this.addGraphGroupObj(var1);
  406.             break;
  407.          case 'S':
  408.             this.addSoundObj(var1, var2);
  409.             break;
  410.          case 'T':
  411.             this.addTextObj(var1);
  412.       }
  413.  
  414.       return 1;
  415.    }
  416.  
  417.    public void addAutoScrollObj(String var1) {
  418.       try {
  419.          AutoScrollObj var2 = new AutoScrollObj();
  420.          var2.Read(this.m_Applet, var1);
  421.          var2.Store(this, var1);
  422.       } catch (RuntimeException var3) {
  423.          System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
  424.       } catch (OutOfMemoryError var4) {
  425.          System.out.println("OUT OF MEMORY ERROR");
  426.          this.m_bOutOfMem = true;
  427.       }
  428.    }
  429.  
  430.    public void addTextObj(String var1) {
  431.       try {
  432.          TextObj var2 = new TextObj();
  433.          var2.Read(this.m_Applet, var1);
  434.          var2.Store(this, var1);
  435.       } catch (RuntimeException var3) {
  436.          System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
  437.       } catch (OutOfMemoryError var4) {
  438.          System.out.println("OUT OF MEMORY ERROR");
  439.          this.m_bOutOfMem = true;
  440.       }
  441.    }
  442.  
  443.    public void addTableObj(String var1, VPage var2) {
  444.       try {
  445.          TableObj var3 = new TableObj();
  446.          var3.Read(this.m_Applet, var1);
  447.          var3.Store(this, var1);
  448.       } catch (RuntimeException var4) {
  449.          System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
  450.       } catch (OutOfMemoryError var5) {
  451.          System.out.println("OUT OF MEMORY ERROR");
  452.          this.m_bOutOfMem = true;
  453.       }
  454.    }
  455.  
  456.    public void addGraphObj(String var1, VPage var2) {
  457.       try {
  458.          GraphObj var3 = new GraphObj();
  459.          var3.Read(this.m_Applet, var1);
  460.          var3.SetView(var2.GetView());
  461.          boolean var4 = false;
  462.          String var5 = this.m_Applet.getParameter(var1 + "I");
  463.          if (var5 == null && (var5 = this.m_Applet.getParameter(var1 + "B")) != null) {
  464.             var4 = true;
  465.          }
  466.  
  467.          if (var5 != null) {
  468.             StringTokenizer var6 = new StringTokenizer(var5);
  469.             var3.m_stImage = new String(var6.nextToken());
  470.             if (var6.hasMoreTokens()) {
  471.                var3.m_ImgOption = Integer.valueOf(var6.nextToken());
  472.             } else {
  473.                var3.m_ImgOption = 0;
  474.             }
  475.          }
  476.  
  477.          if (var3.m_stImage != null) {
  478.             if (!var4) {
  479.                if (this.m_Document.m_PageDirName != null) {
  480.                   var3.m_imgObj = this.m_Applet.getImage(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_stImage);
  481.                } else {
  482.                   var3.m_imgObj = this.m_Applet.getImage(this.m_Applet.getDocumentBase(), var3.m_stImage);
  483.                }
  484.             } else {
  485.                var3.m_imgObj = this.GetBMPImage(var3.m_stImage);
  486.             }
  487.  
  488.             if (var3.m_ImgOption == 1 || var3.m_ImgOption == 2) {
  489.                if (var3.m_View == null) {
  490.                   var3.m_View = this.m_Applet;
  491.                }
  492.  
  493.                MediaTracker var7 = new MediaTracker(var3.m_View);
  494.                var7.addImage(var3.m_imgObj, 0);
  495.  
  496.                try {
  497.                   var7.waitForID(0);
  498.                } catch (Exception var8) {
  499.                }
  500.             }
  501.  
  502.             var2.AddImage(var3.m_imgObj, var1, var4);
  503.          }
  504.  
  505.          var5 = this.m_Applet.getParameter(var1 + "A");
  506.          if (var5 != null) {
  507.             StringTokenizer var12 = new StringTokenizer(var5);
  508.             int var13 = Integer.valueOf(var12.nextToken());
  509.             if (var13 == 10) {
  510.                var12.nextToken();
  511.                var12.nextToken();
  512.                var3.m_stImage = new String(var12.nextToken("?"));
  513.                if (var3.m_stImage != null) {
  514.                   if (this.m_Document.m_PageDirName != null) {
  515.                      var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_stImage);
  516.                   } else {
  517.                      var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), var3.m_stImage);
  518.                   }
  519.  
  520.                   var2.AddAudio(var3.m_sndObj, var1);
  521.                }
  522.             }
  523.          }
  524.  
  525.          var3.Store(this, var1);
  526.       } catch (RuntimeException var9) {
  527.          System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
  528.       } catch (OutOfMemoryError var10) {
  529.          System.out.println("OUT OF MEMORY ERROR");
  530.          this.m_bOutOfMem = true;
  531.       }
  532.    }
  533.  
  534.    public void addGraphGroupObj(String var1) {
  535.       GraphObjsGroup var2 = new GraphObjsGroup();
  536.       var2.Read(this.m_Applet, var1);
  537.       var2.Store(this, var1);
  538.    }
  539.  
  540.    public void addSoundObj(String var1, VPage var2) {
  541.       try {
  542.          SoundObj var3 = new SoundObj();
  543.          var3.Read(this.m_Applet, var1);
  544.          if (var3.m_nSoundType == 0 && var3.m_strSound != null) {
  545.             if (this.m_Document.m_PageDirName != null) {
  546.                var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_strSound);
  547.             } else {
  548.                var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), var3.m_strSound);
  549.             }
  550.  
  551.             var2.AddAudio(var3.m_sndObj, var1);
  552.          }
  553.  
  554.          var3.Store(this, var1);
  555.       } catch (RuntimeException var4) {
  556.          System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
  557.       } catch (OutOfMemoryError var5) {
  558.          System.out.println("OUT OF MEMORY ERROR");
  559.          this.m_bOutOfMem = true;
  560.       }
  561.    }
  562.  
  563.    public Image GetBMPImage(String var1) {
  564.       if (this.m_BMPImageMaker == null) {
  565.          this.m_BMPImageMaker = new BMPImageMaker(this.m_Applet);
  566.       }
  567.  
  568.       if (this.m_BMPImageMaker == null) {
  569.          return null;
  570.       } else {
  571.          return this.m_Document.m_PageDirName != null ? this.m_BMPImageMaker.getImage(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var1) : this.m_BMPImageMaker.getImage(this.m_Applet.getDocumentBase(), var1);
  572.       }
  573.    }
  574.  
  575.    public void ReadFontnameList() {
  576.       StringTokenizer var1 = null;
  577.       StringTokenizer var2 = null;
  578.       String var3 = this.m_Applet.getParameter("J3FontnameList");
  579.       if (var3 != null) {
  580.          var1 = new StringTokenizer(var3, ",");
  581.       }
  582.  
  583.       var3 = this.m_Applet.getParameter("FontnameList");
  584.       if (var3 != null) {
  585.          var2 = new StringTokenizer(var3, ",");
  586.       }
  587.  
  588.       if (var1 != null || var2 != null) {
  589.          TextObj.TokenizeFontNames(var1, var2);
  590.          TextObj.m_fZoomFactor = this.m_Document.m_fZoomFactor;
  591.       }
  592.  
  593.    }
  594.  
  595.    public void CreateFontRefTable() {
  596.       String var1 = this.m_Applet.getParameter("FontRefList");
  597.       if (var1 != null) {
  598.          TextObj.CreateFontRefTable(var1);
  599.          TextObj.Reset2TrueDoc(this.m_Applet);
  600.       }
  601.  
  602.    }
  603.  
  604.    public void start(int var1, boolean var2) {
  605.       if (this.m_Document.m_PageDirName != null) {
  606.          if (this.m_PgLoader != null && this.m_PgLoader.isAlive()) {
  607.             this.m_PgLoader.stop();
  608.             if (this.m_Document.m_HtmlDataInpStream != null) {
  609.                try {
  610.                   this.m_Document.m_HtmlDataInpStream.close();
  611.                } catch (IOException var7) {
  612.                }
  613.  
  614.                this.m_Document.m_HtmlDataInpStream = null;
  615.             }
  616.  
  617.             if (this.m_Document.m_PageDirName != null) {
  618.                String var3 = Integer.toString(this.m_iCurReadingPage);
  619.                VPage var4 = (VPage)((Hashtable)this).get("P" + var3);
  620.                if (var4 != null) {
  621.                   for(int var5 = 0; var5 < var4.GetNumOfObjs(); ++var5) {
  622.                      String var6 = var4.GetObjName(var5);
  623.                      if (((Hashtable)this).containsKey(var6)) {
  624.                         ((Hashtable)this).remove(var6);
  625.                      }
  626.                   }
  627.  
  628.                   var3 = Integer.toString(this.m_iCurReadingPage);
  629.                   ((Hashtable)this).remove("P" + var3);
  630.                }
  631.             }
  632.          }
  633.  
  634.          this.m_iPageToLoad = var1;
  635.          this.m_bCachePages = var2;
  636.          this.m_PgLoader = new Thread(this);
  637.          this.m_PgLoader.start();
  638.       }
  639.  
  640.    }
  641.  
  642.    public void start() {
  643.       (new Thread(this)).start();
  644.    }
  645.  
  646.    public static Object LoadNewInstance(String var0) {
  647.       Class var1 = null;
  648.       Object var2 = null;
  649.  
  650.       try {
  651.          var1 = Class.forName(var0);
  652.       } catch (ClassNotFoundException var5) {
  653.          System.out.println(var0 + " not found");
  654.       }
  655.  
  656.       try {
  657.          var2 = var1.newInstance();
  658.       } catch (InstantiationException var3) {
  659.       } catch (IllegalAccessException var4) {
  660.       }
  661.  
  662.       return var2;
  663.    }
  664.  
  665.    public final VDoc GetDocument() {
  666.       return this.m_Document;
  667.    }
  668.  
  669.    private final void OutputLoadProgress(VPage var1) {
  670.       Integer var4 = new Integer(var1.GetPageNumber());
  671.       if (this.m_StringLoadStatus == null) {
  672.          this.m_StringLoadStatus = this.m_Applet.m_BaristaLoc.m_StringLoadingObjects;
  673.       }
  674.  
  675.       String var3 = BaristaLoc.ReplaceWithString(this.m_StringLoadStatus, var4.toString()) + this.m_Applet.m_BaristaLoc.m_StringSpaceEllipsesSpace;
  676.       String var2;
  677.       if (var1.m_nLastReadObj > 0) {
  678.          Integer var5 = new Integer(var1.m_nLastReadObj * 100 / var1.m_nNumObj);
  679.          var2 = var3.concat(var5.toString() + "%");
  680.       } else {
  681.          var2 = var3.concat("0%");
  682.       }
  683.  
  684.       this.m_Document.m_Applet.showStatus(var2);
  685.    }
  686. }
  687.