home *** CD-ROM | disk | FTP | other *** search
- import animationlib.BMPImageMaker;
- import corel.af.advgraphics.AdvGraphics;
- import corel.af.graphobjslib.GraphObj;
- import corel.af.graphobjslib.GraphObjsGroup;
- import corel.af.graphobjslib.SoundObj;
- import corel.af.graphobjslib.TableObj;
- import corel.af.graphobjslib.TextObj;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.io.DataInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.StringTokenizer;
-
- public class ZStorage extends Hashtable implements Runnable {
- private VDoc m_Document;
- private int m_iPageToLoad = 1;
- private int m_iCurReadingPage = 1;
- private boolean m_bCachePages = true;
- private boolean m_bOutOfMem = false;
- private InputStream m_HtmlInpStream;
- private BMPImageMaker m_BMPImageMaker;
- Barista m_Applet;
- Thread m_PgLoader;
- AdvGraphics m_oAdvGraphics;
- private String m_StringLoadStatus;
-
- public ZStorage(VDoc var1) {
- this.m_Document = var1;
- this.m_Applet = this.m_Document.m_Applet;
- this.m_PgLoader = null;
- this.ReadHeader();
- this.m_oAdvGraphics = new AdvGraphics();
- if (this.m_Document.m_LogExtent.height == 1 && this.m_Document.m_LogExtent.width == 1) {
- this.m_oAdvGraphics.setMapMode(500);
- } else {
- this.m_oAdvGraphics.setMapMode(506);
- this.m_oAdvGraphics.setDeviceOrg((double)0.0F, (double)0.0F);
- this.m_oAdvGraphics.setLogicalOrg((double)0.0F, (double)0.0F);
- 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);
- }
- }
-
- private final void ReadHeader() {
- String var1 = this.m_Applet.getParameter("Version");
- if (var1 != null) {
- this.m_Document.m_sVersion = (short)Integer.valueOf(var1);
- }
-
- var1 = this.m_Applet.getParameter("PageDir");
- if (var1 != null) {
- this.m_Document.m_PageDirName = var1;
- }
-
- var1 = this.m_Applet.getParameter("BackgroundColor");
- if (var1 != null) {
- int var2 = Integer.valueOf(var1, 16);
- if (var2 < 16777216) {
- this.m_Document.m_cBkColor = var2;
- }
- }
-
- if (this.m_Document.m_cBkColor == 1) {
- this.m_Document.m_cBkColor = 0;
- }
-
- var1 = this.m_Applet.getParameter("XYDPI");
- if (var1 != null) {
- this.m_Document.m_xyDpi = Integer.valueOf(var1);
- this.m_Document.m_LogExtent.height = this.m_Document.m_LogExtent.width = this.m_Document.m_xyDpi / this.m_Document.m_defaultDpi;
- if (this.m_Document.m_LogExtent.width == 0) {
- this.m_Document.m_LogExtent.height = this.m_Document.m_LogExtent.width = 1;
- }
-
- this.m_Document.m_DevExtent.width = this.m_Document.m_DevExtent.height = 1;
- }
-
- var1 = this.m_Applet.getParameter("NumOfPages");
- if (var1 != null) {
- int var18 = Integer.valueOf(var1);
- this.m_Document.m_nNumOfPages = var18;
- if (var18 == 1) {
- this.m_Document.m_bIsMultiPage = false;
- }
- }
-
- var1 = this.m_Applet.getParameter("DisplayToolbar");
- if (var1 != null && (!this.m_Document.m_bIsMultiPage || Integer.valueOf(var1) == 0)) {
- this.m_Document.m_bDisplayToolBar = false;
- }
-
- if ((var1 = this.m_Applet.getParameter("DisableDoubleBuffering")) != null && Integer.valueOf(var1) == 1) {
- this.m_Document.m_bDoubleBufferingDisabled = true;
- }
-
- if (!this.m_Document.m_bDoubleBufferingDisabled) {
- var1 = this.m_Applet.getParameter("AutoScroll");
- if (var1 != null) {
- this.m_Document.CreateAutoScroll(var1);
- } else {
- this.m_Document.CreateTransition();
- }
- }
-
- var1 = this.m_Applet.getParameter("ZoomFactor");
- if (var1 != null) {
- this.m_Document.m_fZoomFactor = (short)Integer.valueOf(var1);
- }
-
- this.m_Applet.showStatus(this.m_Applet.m_BaristaLoc.m_StringInitializingFonts);
- this.ReadFontnameList();
- this.CreateFontRefTable();
- var1 = this.m_Applet.getParameter("BookmarkList");
- if (var1 != null) {
- StringTokenizer var19 = new StringTokenizer(var1, ",");
-
- while(var19.hasMoreTokens()) {
- String var3 = var19.nextToken().trim();
-
- for(int var5 = 0; var5 < this.m_Document.m_skBookmarkList.size(); ++var5) {
- Bookmark var4 = (Bookmark)this.m_Document.m_skBookmarkList.elementAt(var5);
- if (var4.m_BookmarkName.equalsIgnoreCase(var3)) {
- System.out.println("Bookmark named " + var3 + " already exists -- ignored");
- }
- }
-
- int var6 = Integer.valueOf(var19.nextToken().trim().substring(1));
- int var7 = Integer.valueOf(var19.nextToken().trim());
- int var8 = Integer.valueOf(var19.nextToken().trim());
- this.m_Document.m_skBookmarkList.addElement(new Bookmark(var3, var6, var7, var8));
- }
- }
-
- }
-
- private final synchronized void WaitForVPanelCreation() {
- if (this.m_Document.m_MainPanel == null) {
- try {
- this.wait();
- } catch (IllegalMonitorStateException var1) {
- } catch (InterruptedException var2) {
- }
- }
- }
-
- public final synchronized void NotifyVPanelCreated() {
- try {
- this.notify();
- } catch (IllegalMonitorStateException var1) {
- }
- }
-
- public void run() {
- this.WaitForVPanelCreation();
- this.LoadFile();
- if (this.m_PgLoader != null && this.m_PgLoader.isAlive()) {
- this.m_PgLoader.stop();
- }
-
- }
-
- private final void LoadFile() {
- if (this.m_Document.m_PageDirName != null) {
- this.LoadAndReadPage(this.m_iPageToLoad);
- if (this.m_bCachePages) {
- this.LoadAndReadPage(this.m_iPageToLoad + 1);
- this.LoadAndReadPage(this.m_iPageToLoad - 1);
- this.LoadAndReadPage(this.m_iPageToLoad + 2);
- this.LoadAndReadPage(this.m_iPageToLoad - 2);
- return;
- }
- } else {
- for(int var1 = 1; var1 <= this.m_Document.m_nNumOfPages; ++var1) {
- this.m_iPageToLoad = var1;
- String var2 = "P" + var1;
- if (this.ReadPage(var2, this.m_iPageToLoad) == -1) {
- return;
- }
- }
- }
-
- }
-
- boolean DelPgFromMem() {
- if (this.NoOfPgsInTbl() <= 1) {
- return false;
- } else {
- Enumeration var3 = ((Hashtable)this).keys();
-
- String var1;
- while(true) {
- if (!var3.hasMoreElements()) {
- return false;
- }
-
- var1 = (String)var3.nextElement();
- if (this.IsPage(var1) && var1 != null) {
- if (!this.IsPgIsCurrPg(var1)) {
- break;
- }
-
- var1 = (String)var3.nextElement();
- if (this.IsPage(var1)) {
- break;
- }
- }
- }
-
- VPage var4 = (VPage)((Hashtable)this).get(var1);
-
- for(int var5 = 0; var5 < var4.GetNumOfObjs(); ++var5) {
- String var2 = var4.GetObjName(var5);
- if (((Hashtable)this).containsKey(var2)) {
- ((Hashtable)this).remove(var2);
- }
- }
-
- var4.m_nLastReadObj = 0;
- ((Hashtable)this).remove(var1);
- return true;
- }
- }
-
- private final boolean IsPage(String var1) {
- char var2 = var1.charAt(0);
- Character var3 = new Character(var2);
- Character var4 = new Character('P');
- return var3 == var4;
- }
-
- private final int NoOfPgsInTbl() {
- int var2 = 0;
- Enumeration var3 = ((Hashtable)this).keys();
-
- while(var3.hasMoreElements()) {
- String var1 = (String)var3.nextElement();
- if (this.IsPage(var1)) {
- ++var2;
- }
- }
-
- return var2;
- }
-
- private final boolean IsPgIsCurrPg(String var1) {
- String var2 = var1.substring(1);
- Integer var3 = Integer.valueOf(var2);
- int var4 = var3;
- return var4 == this.m_Document.m_iCurrPage;
- }
-
- private final boolean FreeMemAndReLoad(String var1, VPage var2) {
- String var3 = this.m_Document.GetCurrPage().GetName();
- String var4 = var3.substring(1);
- Integer.valueOf(var4);
- if (this.m_Document.m_PageDirName != null) {
- if (!this.DelPgFromMem()) {
- System.out.println("System is out of memory, cannot display page");
- return false;
- }
-
- this.m_bOutOfMem = false;
- this.ReadObj(var1, var2);
- if (this.m_bOutOfMem) {
- System.out.println("System is out of memory, cannot display page");
- return false;
- }
- }
-
- this.m_bOutOfMem = false;
- return true;
- }
-
- private final void LoadAndReadPage(int var1) {
- if (var1 >= 1 && var1 <= this.m_Document.m_nNumOfPages) {
- this.m_iCurReadingPage = var1;
- String var2 = "P" + var1;
- VPage var3 = (VPage)((Hashtable)this).get(var2);
- if (var3 == null) {
- this.m_HtmlInpStream = this.OpenFile(var2);
- if (this.m_HtmlInpStream == null) {
- return;
- }
-
- try {
- this.m_Document.m_HtmlDataInpStream = new DataInputStream(this.m_HtmlInpStream);
- } catch (Exception var4) {
- return;
- }
-
- this.m_Document.ParsePageHTML();
- this.ReadPage(var2, var1);
- this.m_Document.ClearContents();
- return;
- }
- }
-
- }
-
- private final InputStream OpenFile(String var1) {
- Object var2 = null;
- Object var3 = null;
- Object var4 = null;
- String var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".htm");
-
- try {
- URL var11 = new URL(this.m_Applet.getDocumentBase(), var13);
- var12 = var11.openStream();
- } catch (IOException var7) {
- try {
- var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".HTM");
- URL var10 = new URL(this.m_Applet.getDocumentBase(), var13);
- var12 = var10.openStream();
- } catch (IOException var6) {
- try {
- var13 = new String(this.m_Document.m_PageDirName + "/" + var1 + ".html");
- URL var9 = new URL(this.m_Applet.getDocumentBase(), var13);
- var12 = var9.openStream();
- } catch (IOException var5) {
- var12 = null;
- }
- }
- } catch (Exception var8) {
- var12 = null;
- }
-
- return var12;
- }
-
- private final int ReadPage(String var1, int var2) {
- VPage var3 = (VPage)((Hashtable)this).get(var1);
- if (var3 != null) {
- return 0;
- } else {
- VPage var4 = new VPage(this, var2);
- var4.Read(this, var1);
- this.OutputLoadProgress(var4);
- ((Hashtable)this).put(var1, var4);
- String var5 = var4.GetObjName(0);
- if (var5 != null && !((Hashtable)this).containsKey(var5)) {
- this.ReadObj(var5, var4);
- if (this.m_bOutOfMem && !this.FreeMemAndReLoad(var5, var4)) {
- return -1;
- }
- }
-
- if (var4 == this.m_Document.GetCurrPage()) {
- this.m_Document.m_MainPanel.SetPage(var1);
- }
-
- if (var4 == this.m_Document.GetCurrPage()) {
- this.m_Document.m_MainPanel.m_bReadingPage = true;
- }
-
- for(int var6 = 0; var6 < var4.GetNumOfObjs(); ++var6) {
- var5 = var4.GetObjName(var6);
- var4.m_nLastReadObj = var6 + 1;
- if (var4.m_nLastReadObj % 20 == 0 || var4.m_nLastReadObj == var4.m_nNumObj) {
- this.OutputLoadProgress(var4);
- }
-
- if (!((Hashtable)this).containsKey(var5)) {
- this.ReadObj(var5, var4);
- if (this.m_bOutOfMem && !this.FreeMemAndReLoad(var5, var4)) {
- return -1;
- }
- }
-
- if (var4 == this.m_Document.GetCurrPage()) {
- if (this.m_Document.m_MainPanel.m_nCurrObjRead == -1) {
- this.m_Document.m_MainPanel.m_nPrevObjRead = 0;
- }
-
- this.m_Document.m_MainPanel.m_nCurrObjRead = var6;
- } else if (this.m_Document.m_MainPanel.m_nCurrObjRead == -1) {
- this.m_Document.m_MainPanel.m_bReadingPage = false;
- }
- }
-
- if (this.m_Document.m_MainPanel != null) {
- this.m_Document.m_MainPanel.repaint();
- }
-
- return var4.GetNumOfObjs();
- }
- }
-
- private final int ReadObj(String var1, VPage var2) {
- char var3 = var1.charAt(0);
- var2.GetName();
- switch (var3) {
- case 'A':
- this.addAutoScrollObj(var1);
- break;
- case 'B':
- this.addTableObj(var1, var2);
- break;
- case 'G':
- this.addGraphObj(var1, var2);
- break;
- case 'K':
- this.addGraphGroupObj(var1);
- break;
- case 'S':
- this.addSoundObj(var1, var2);
- break;
- case 'T':
- this.addTextObj(var1);
- }
-
- return 1;
- }
-
- public void addAutoScrollObj(String var1) {
- try {
- AutoScrollObj var2 = new AutoScrollObj();
- var2.Read(this.m_Applet, var1);
- var2.Store(this, var1);
- } catch (RuntimeException var3) {
- System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
- } catch (OutOfMemoryError var4) {
- System.out.println("OUT OF MEMORY ERROR");
- this.m_bOutOfMem = true;
- }
- }
-
- public void addTextObj(String var1) {
- try {
- TextObj var2 = new TextObj();
- var2.Read(this.m_Applet, var1);
- var2.Store(this, var1);
- } catch (RuntimeException var3) {
- System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
- } catch (OutOfMemoryError var4) {
- System.out.println("OUT OF MEMORY ERROR");
- this.m_bOutOfMem = true;
- }
- }
-
- public void addTableObj(String var1, VPage var2) {
- try {
- TableObj var3 = new TableObj();
- var3.Read(this.m_Applet, var1);
- var3.Store(this, var1);
- } catch (RuntimeException var4) {
- System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
- } catch (OutOfMemoryError var5) {
- System.out.println("OUT OF MEMORY ERROR");
- this.m_bOutOfMem = true;
- }
- }
-
- public void addGraphObj(String var1, VPage var2) {
- try {
- GraphObj var3 = new GraphObj();
- var3.Read(this.m_Applet, var1);
- var3.SetView(var2.GetView());
- boolean var4 = false;
- String var5 = this.m_Applet.getParameter(var1 + "I");
- if (var5 == null && (var5 = this.m_Applet.getParameter(var1 + "B")) != null) {
- var4 = true;
- }
-
- if (var5 != null) {
- StringTokenizer var6 = new StringTokenizer(var5);
- var3.m_stImage = new String(var6.nextToken());
- if (var6.hasMoreTokens()) {
- var3.m_ImgOption = Integer.valueOf(var6.nextToken());
- } else {
- var3.m_ImgOption = 0;
- }
- }
-
- if (var3.m_stImage != null) {
- if (!var4) {
- if (this.m_Document.m_PageDirName != null) {
- var3.m_imgObj = this.m_Applet.getImage(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_stImage);
- } else {
- var3.m_imgObj = this.m_Applet.getImage(this.m_Applet.getDocumentBase(), var3.m_stImage);
- }
- } else {
- var3.m_imgObj = this.GetBMPImage(var3.m_stImage);
- }
-
- if (var3.m_ImgOption == 1 || var3.m_ImgOption == 2) {
- if (var3.m_View == null) {
- var3.m_View = this.m_Applet;
- }
-
- MediaTracker var7 = new MediaTracker(var3.m_View);
- var7.addImage(var3.m_imgObj, 0);
-
- try {
- var7.waitForID(0);
- } catch (Exception var8) {
- }
- }
-
- var2.AddImage(var3.m_imgObj, var1, var4);
- }
-
- var5 = this.m_Applet.getParameter(var1 + "A");
- if (var5 != null) {
- StringTokenizer var12 = new StringTokenizer(var5);
- int var13 = Integer.valueOf(var12.nextToken());
- if (var13 == 10) {
- var12.nextToken();
- var12.nextToken();
- var3.m_stImage = new String(var12.nextToken("?"));
- if (var3.m_stImage != null) {
- if (this.m_Document.m_PageDirName != null) {
- var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_stImage);
- } else {
- var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), var3.m_stImage);
- }
-
- var2.AddAudio(var3.m_sndObj, var1);
- }
- }
- }
-
- var3.Store(this, var1);
- } catch (RuntimeException var9) {
- System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
- } catch (OutOfMemoryError var10) {
- System.out.println("OUT OF MEMORY ERROR");
- this.m_bOutOfMem = true;
- }
- }
-
- public void addGraphGroupObj(String var1) {
- GraphObjsGroup var2 = new GraphObjsGroup();
- var2.Read(this.m_Applet, var1);
- var2.Store(this, var1);
- }
-
- public void addSoundObj(String var1, VPage var2) {
- try {
- SoundObj var3 = new SoundObj();
- var3.Read(this.m_Applet, var1);
- if (var3.m_nSoundType == 0 && var3.m_strSound != null) {
- if (this.m_Document.m_PageDirName != null) {
- var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), this.m_Document.m_PageDirName + "/" + var3.m_strSound);
- } else {
- var3.m_sndObj = this.m_Applet.getAudioClip(this.m_Applet.getDocumentBase(), var3.m_strSound);
- }
-
- var2.AddAudio(var3.m_sndObj, var1);
- }
-
- var3.Store(this, var1);
- } catch (RuntimeException var4) {
- System.out.println("INVALID PARAMETER FORMAT FOR " + var1);
- } catch (OutOfMemoryError var5) {
- System.out.println("OUT OF MEMORY ERROR");
- this.m_bOutOfMem = true;
- }
- }
-
- public Image GetBMPImage(String var1) {
- if (this.m_BMPImageMaker == null) {
- this.m_BMPImageMaker = new BMPImageMaker(this.m_Applet);
- }
-
- if (this.m_BMPImageMaker == null) {
- return null;
- } else {
- 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);
- }
- }
-
- public void ReadFontnameList() {
- StringTokenizer var1 = null;
- StringTokenizer var2 = null;
- String var3 = this.m_Applet.getParameter("J3FontnameList");
- if (var3 != null) {
- var1 = new StringTokenizer(var3, ",");
- }
-
- var3 = this.m_Applet.getParameter("FontnameList");
- if (var3 != null) {
- var2 = new StringTokenizer(var3, ",");
- }
-
- if (var1 != null || var2 != null) {
- TextObj.TokenizeFontNames(var1, var2);
- TextObj.m_fZoomFactor = this.m_Document.m_fZoomFactor;
- }
-
- }
-
- public void CreateFontRefTable() {
- String var1 = this.m_Applet.getParameter("FontRefList");
- if (var1 != null) {
- TextObj.CreateFontRefTable(var1);
- TextObj.Reset2TrueDoc(this.m_Applet);
- }
-
- }
-
- public void start(int var1, boolean var2) {
- if (this.m_Document.m_PageDirName != null) {
- if (this.m_PgLoader != null && this.m_PgLoader.isAlive()) {
- this.m_PgLoader.stop();
- if (this.m_Document.m_HtmlDataInpStream != null) {
- try {
- this.m_Document.m_HtmlDataInpStream.close();
- } catch (IOException var7) {
- }
-
- this.m_Document.m_HtmlDataInpStream = null;
- }
-
- if (this.m_Document.m_PageDirName != null) {
- String var3 = Integer.toString(this.m_iCurReadingPage);
- VPage var4 = (VPage)((Hashtable)this).get("P" + var3);
- if (var4 != null) {
- for(int var5 = 0; var5 < var4.GetNumOfObjs(); ++var5) {
- String var6 = var4.GetObjName(var5);
- if (((Hashtable)this).containsKey(var6)) {
- ((Hashtable)this).remove(var6);
- }
- }
-
- var3 = Integer.toString(this.m_iCurReadingPage);
- ((Hashtable)this).remove("P" + var3);
- }
- }
- }
-
- this.m_iPageToLoad = var1;
- this.m_bCachePages = var2;
- this.m_PgLoader = new Thread(this);
- this.m_PgLoader.start();
- }
-
- }
-
- public void start() {
- (new Thread(this)).start();
- }
-
- public static Object LoadNewInstance(String var0) {
- Class var1 = null;
- Object var2 = null;
-
- try {
- var1 = Class.forName(var0);
- } catch (ClassNotFoundException var5) {
- System.out.println(var0 + " not found");
- }
-
- try {
- var2 = var1.newInstance();
- } catch (InstantiationException var3) {
- } catch (IllegalAccessException var4) {
- }
-
- return var2;
- }
-
- public final VDoc GetDocument() {
- return this.m_Document;
- }
-
- private final void OutputLoadProgress(VPage var1) {
- Integer var4 = new Integer(var1.GetPageNumber());
- if (this.m_StringLoadStatus == null) {
- this.m_StringLoadStatus = this.m_Applet.m_BaristaLoc.m_StringLoadingObjects;
- }
-
- String var3 = BaristaLoc.ReplaceWithString(this.m_StringLoadStatus, var4.toString()) + this.m_Applet.m_BaristaLoc.m_StringSpaceEllipsesSpace;
- String var2;
- if (var1.m_nLastReadObj > 0) {
- Integer var5 = new Integer(var1.m_nLastReadObj * 100 / var1.m_nNumObj);
- var2 = var3.concat(var5.toString() + "%");
- } else {
- var2 = var3.concat("0%");
- }
-
- this.m_Document.m_Applet.showStatus(var2);
- }
- }
-