import java.awt.*; import java.awt.image.*; import java.applet.*; import java.net.*; import java.io.*; public class MainMenu extends Applet { public Image image; MediaTracker img_tracker; int painted = 1; int mpage = 0, chaos = 0, frac = 0, append = 0, gloss = 0; int check = 0; int page; public boolean handleEvent(Event evt) { Graphics g = this.getGraphics(); if(evt.id == Event.MOUSE_EXIT) { mpage = 0; chaos = 0; frac = 0; append = 0; gloss = 0; check = 0; paint(g); } return super.handleEvent(evt); } public void start() { init(); } public void init() { img_tracker = new MediaTracker(this); image = getImage(getCodeBase(), "menu.gif"); img_tracker.addImage(image,0); try { img_tracker.waitForAll(); } catch(InterruptedException e) { showStatus("Error " + e); } } private boolean inBox(int x, int y, int x1, int y1, int x2, int y2) { if(x >= x1) if(y >= y1) if(x <= x2) if(y <= y2) return true; return false; } private void loadPage(String page) { URL u; try { u = new URL(getCodeBase(), page); getAppletContext().showDocument(u, "main"); } catch(Exception e) { showStatus("Error " + e); } } public boolean mouseDown(Event evt, int x, int y) { if(mpage == 1) { if(inBox(x, y, 45, 6, 165, 25)) loadPage("../frames/main.html"); else if(inBox(x,y, 45, 26, 166, 43)) loadPage("../frames/main.html#chaos"); else if(inBox(x ,y, 45, 44, 166, 61)) loadPage("../frames/main.html#fractals"); } else if(chaos == 1) { if(inBox(x, y, 45, 77, 166, 96)) loadPage("../frames/chaos.html"); else if(inBox(x, y, 45, 97, 166, 114)) loadPage("../frames/chaos.html#intro"); else if(inBox(x, y, 45, 115, 166, 147)) loadPage("../frames/chaos.html#sensitive"); else if(inBox(x, y, 45, 148, 166, 164)) loadPage("../frames/chaos.html#critical"); else if(inBox(x, y, 45, 165, 166, 196)) loadPage("../frames/chaos.html#strange"); else if(inBox(x, y, 45, 197, 166, 214)) loadPage("../frames/chaos.html#application"); } else if(frac == 1) { if(inBox(x, y, 45, 153, 166, 172)) loadPage("../frames/fractal.html"); else if(inBox(x, y, 45, 173, 166, 190)) loadPage("../frames/fractal.html#what"); else if(inBox(x, y, 45, 191, 166, 222)) loadPage("../frames/fractal.html#what-complete"); else if(inBox(x, y, 45, 223, 166, 268)) loadPage("../frames/fractal.html#fractal-dims"); else if(inBox(x, y, 45, 269, 166, 286)) loadPage("../frames/fractal.html#what-fractal"); else if(inBox(x, y, 45, 287, 166, 318)) loadPage("../frames/fractal.html#graphical"); else if(inBox(x, y, 45, 319, 166, 336)) loadPage("../frames/fractal.html#specific"); else if(inBox(x, y, 45, 337, 166, 368)) loadPage("../frames/fractal.html#life"); } else if(gloss == 1) { if(inBox(x, y, 45, 223, 166, 242)) loadPage("../frames/glossary.html"); else if(inBox(x, y, 45, 243, 166, 274)) loadPage("../frames/glossary.html#words"); else if(inBox(x, y, 45, 275, 166, 292)) loadPage("../frames/addwords.html"); } else if(append == 1) { if(inBox(x, y, 45, 238+18, 166, 257+18)) loadPage("../frames/appendix.html"); else if(inBox(x, y, 45, 258+18, 166, 275+18)) loadPage("../frames/appendix-doc.html"); else if(inBox(x, y, 45, 276+18, 166, 293+18)) loadPage("../frames/appendix-src.html"); } else if(inBox(x, y, 43, 6, 140, 43)) loadPage("../frames/main.html"); else if(inBox(x, y, 43, 79, 139, 115)) loadPage("../frames/chaos.html"); else if(inBox(x, y, 43, 140, 140, 195)) loadPage("../frames/fractal.html"); else if(inBox(x, y, 43, 220, 139, 270)) loadPage("../frames/glossary.html"); else if(inBox(x, y, 43, 300, 140, 339)) loadPage("../frames/appendix.html"); return true; } public void drawButton(int x1, int y1, int x2, int y2, Graphics g) { g.setColor(Color.white); g.drawRect(x1, y1, x2 - x1, y2 - y1); g.drawRect(x1 + 1, y1 + 1, x2 - x1 - 1, y2 - y1 - 1); g.setColor(Color.black); g.drawLine(x1 + 1, y2 - 1, x2 - 1, y2 - 1); g.drawLine(x1, y2, x2, y2); g.drawLine(x2 - 1, y1 + 1, x2 - 1, y2 - 1); g.drawLine(x2, y1, x2, y2); } public void hideButton(int x1, int y1, int x2, int y2, Graphics g) { g.setColor(Color.lightGray); g.drawRect(x1, y1, x2 - x1 - 1, y2 - y1 - 1); g.drawRect(x1, y1, x2 - x1, y2 - y1); g.drawRect(x1 + 1, y1 + 1, x2 - x1 - 1, y2 - y1 - 1); g.drawRect(x1, y1, x2 - x1 - 2, y2 - y1 - 2); } public boolean mouseMove(Event evt, int x, int y) { Graphics g = this.getGraphics(); Font header = new Font("Times", Font.BOLD, 14); Font item = new Font("Times", Font.PLAIN, 14); check = 0; if(mpage == 1 || chaos == 1 || frac == 1 || gloss == 1 || append == 1) { g.setFont(header); if(mpage == 1) { if(inBox(x, y, 42, 3, 172, 65)) check = 1; g.setColor(Color.black); g.setFont(item); g.drawString("Chaos Theory", 50, 40); g.drawString("Fractal Geometry", 50, 58); g.setFont(header); g.drawString("Main Page", 50, 20); if(inBox(x, y, 45, 6, 165, 25)) { if(page != 1) { if(page == 2) hideButton(45, 26, 166, 43, g); else if(page == 3) hideButton(45, 49, 166, 66, g); } drawButton(45, 6, 166, 25, g); showStatus("Main Page"); page = 1; } else if(inBox(x, y, 45, 26, 166, 43)) { if(page != 2) { if(page == 1) hideButton(45, 6, 166, 25, g); else if(page == 3) hideButton(45, 44, 166, 61, g); } drawButton(45, 26, 166, 43, g); showStatus("Chaos Theory"); page = 2; } else if(inBox(x, y, 45, 44, 166, 61)) { if(page != 3) { if(page == 1) hideButton(45, 6, 166, 25, g); else if(page == 2) hideButton(45, 26, 166, 43, g); } drawButton(45, 44, 166, 61, g); showStatus("Fractal Geometry"); page = 3; } else { if(page == 1) hideButton(45, 6, 166, 25, g); else if(page == 2) hideButton(45, 26, 166, 43, g); else if(page == 3) hideButton(45, 44, 166, 61, g); } } else if(chaos == 1) { if(inBox(x, y, 42, 73, 172, 218)) check = 1; g.setColor(Color.black); g.setFont(header); g.drawString("Chaos Theory", 50, 91); g.setFont(item); g.drawString("Introduction", 50, 111); g.drawString("Sensitive", 50, 129); g.drawString("Dependance", 50, 143); g.drawString("Critical Points", 50, 161); g.drawString("Strange", 50, 179); g.drawString("Attractaors", 50, 193); g.drawString("Applications", 50, 211); if(inBox(x, y, 45, 77, 165, 96)) { if(page != 1) { if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 5) hideButton(45, 165, 165, 196, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } drawButton(45, 77, 165, 96, g); showStatus("Chaos Theory"); page = 1; } else if(inBox(x, y, 45, 97, 165, 114)) { if(page != 2) { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 5) hideButton(45, 165, 165, 196, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } drawButton(45, 97, 165, 114, g); showStatus("Introduction To Chaos"); page = 2; } else if(inBox(x, y, 45, 115, 165, 147)) { if(page != 3) { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 5) hideButton(45, 165, 165, 196, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } drawButton(45, 115, 165, 147, g); showStatus("Sensitive Dependance"); page = 3; } else if(inBox(x, y, 45, 148, 165, 164)) { if(page != 4) { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 5) hideButton(45, 165, 165, 196, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } drawButton(45, 148, 165, 164, g); showStatus("Critical Points"); page = 4; } else if(inBox(x, y, 45, 165, 165, 196)) { if(page != 5) { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } drawButton(45, 165, 165, 196, g); showStatus("Strange Attractors"); page = 5; } else if(inBox(x, y, 45, 197, 165, 214)) { if(page != 6) { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 5) hideButton(45, 165, 165, 196, g); } drawButton(45, 197, 165, 214, g); showStatus("Applications"); page = 6; } else { if(page == 1) hideButton(45, 77, 165, 96, g); else if(page == 2) hideButton(45, 97, 165, 114, g); else if(page == 3) hideButton(45, 115, 165, 147, g); else if(page == 4) hideButton(45, 148, 165, 164, g); else if(page == 5) hideButton(45, 165, 165, 196, g); else if(page == 6) hideButton(45, 197, 165, 214, g); } } else if(frac == 1) { if(inBox(x, y, 42, 150, 172, 372)) check = 1; g.setColor(Color.black); g.setFont(header); g.drawString("Fractals", 50, 167); g.setFont(item); g.drawString("Fractal Geometry ", 50, 187); g.drawString("Fractal", 50, 205); g.drawString("Dimensions", 50, 219); g.drawString("Calculating", 50, 237); g.drawString("Fractal", 50, 251); g.drawString("Dimensions", 50, 265); g.drawString("Fractals", 50, 283); g.drawString("Graphical", 50, 301); g.drawString("Representation", 50, 315); g.drawString("Specific Fractals", 50, 333); g.drawString("Real-Life", 50, 351); g.drawString("Relevance", 50, 365); if(inBox(x, y, 45, 153, 166, 172)) { if(page != 1) { if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 153, 166, 172, g); showStatus("Fractals & Fractal Geometry"); page = 1; } else if(inBox(x, y, 45, 173, 166, 190)) { if(page != 2) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 173, 166, 190, g); showStatus("Fractal Geometry"); page = 2; } else if(inBox(x, y, 45, 191, 166, 222)) { if(page != 3) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 191, 166, 222, g); showStatus("Fractal Dimensions"); page = 3; } else if(inBox(x, y, 45, 223, 166, 268)) { if(page != 4) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 223, 166, 268, g); showStatus("Calculation Fractal Dimensions"); page = 4; } else if(inBox(x, y, 45, 269, 166, 286)) { if(page != 5) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 269, 166, 286, g); showStatus("Fractals"); page = 5; } else if(inBox(x, y, 45, 287, 166, 318)) { if(page != 6) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 287, 166, 318, g); showStatus("Graphical Representation Of Fractals"); page = 6; } else if(inBox(x, y, 45, 319, 166, 336)) { if(page != 7) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } drawButton(45, 319, 166, 336, g); showStatus("Specific Fractals"); page = 7; } else if(inBox(x, y, 45, 337, 166, 368)) { if(page != 8) { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); } drawButton(45, 337, 166, 368, g); showStatus("Real-Life Relevance Of Fractals And Fractal Geometry"); page = 8; } else { if(page == 1) hideButton(45, 153, 166, 172, g); else if(page == 2) hideButton(45, 173, 166, 190, g); else if(page == 3) hideButton(45, 191, 166, 222, g); else if(page == 4) hideButton(45, 223, 166, 268, g); else if(page == 5) hideButton(45, 269, 166, 286, g); else if(page == 6) hideButton(45, 287, 166, 318, g); else if(page == 7) hideButton(45, 319, 166, 336, g); else if(page == 8) hideButton(45, 337, 166, 368, g); } } else if(gloss == 1) { if(inBox(x, y, 42, 220, 172, 296)) check = 1; g.setColor(Color.black); g.setFont(header); g.drawString("Glossary", 50, 237); g.setFont(item); g.drawString("Words &", 50, 257); g.drawString("Phrases", 50, 271); g.drawString("Add A Word", 50, 289); if(inBox(x, y, 45, 223, 166, 242)) { if(page != 1) { if(page == 2) hideButton(45, 243, 166, 274, g); else if(page == 3) hideButton(45, 275, 166, 292, g); } drawButton(45, 223, 166, 242, g); showStatus("Glossary Of Words & Phrases"); page = 1; } else if(inBox(x, y, 45, 243, 166, 274)) { if(page != 2) { if(page == 1) hideButton(45, 223, 166, 242, g); else if(page == 3) hideButton(45, 275, 166, 292, g); } drawButton(45, 243, 166, 274, g); showStatus("Words & Phrases"); page = 2; } else if(inBox(x, y, 45, 275, 166, 292)) { if(page != 3) { if(page == 1) hideButton(45, 223, 166, 242, g); else if(page == 2) hideButton(45, 243, 166, 274, g); } drawButton(45, 275, 166, 292, g); showStatus("Add A Word To The Glossary"); page = 3; } else { if(page == 1) hideButton(45, 223, 166, 242, g); else if(page == 2) hideButton(45, 243, 166, 274, g); else if(page == 3) hideButton(45, 275, 166, 292, g); } } else if(append == 1) { if(inBox(x, y, 42, 235+18, 166, 355)) check = 1; g.setColor(Color.black); g.setFont(header); g.drawString("Appendices", 50, 252+18); g.setFont(item); g.drawString("Documentation", 50, 272+18); g.drawString("Source Code", 50, 290+18); if(inBox(x, y, 45, 238+18, 166, 257+18)) { if(page != 1) { if(page == 2) hideButton(45, 258+18, 166, 275+18, g); else if(page == 3) hideButton(45, 275+18, 166, 293+18, g); } drawButton(45, 238+18, 166, 257+18, g); showStatus("Appendices"); page = 1; } else if(inBox(x, y, 45, 258+18, 166, 275+18)) { if(page != 2) { if(page == 1) hideButton(45, 238+18, 166, 257+18, g); else if(page == 3) hideButton(45, 275+18, 166, 293+18, g); } drawButton(45, 258+18, 166, 275+18, g); showStatus("Documentation"); page = 2; } else if(inBox(x, y, 45, 276+18, 166, 293+18)) { if(page != 3) { if(page == 1) hideButton(45, 238+18, 166, 257+18, g); else if(page == 2) hideButton(45, 258+18, 166, 275+18, g); } drawButton(45, 275+18, 166, 293+18, g); showStatus("Source Code"); page = 3; } else { if(page == 1) hideButton(45, 238+18, 166, 257+18, g); else if(page == 2) hideButton(45, 258+18, 166, 275+18, g); else if(page == 3) hideButton(45, 275+18, 166, 293+18, g); } } } if(check == 0) { page = 0; if(inBox(x, y, 3, 4, 42, 50)) { showStatus("Return To The Main Page"); if(chaos == 1 || frac == 1 || gloss == 1 || append == 1) paint(g); if(mpage == 0) { g.setColor(Color.lightGray); g.fillRect(42, 3, 171 - 42, 65 - 4); drawButton(41, 2, 172, 65, g); } mpage = 1; chaos = 0; frac = 0; gloss = 0; append = 0; } else if(inBox(x, y, 3, 78, 41, 120)) { showStatus("The Chaos Theory"); if(mpage == 1 || frac == 1 || gloss == 1 || append == 1) paint(g); if(chaos == 0) { g.setColor(Color.lightGray); g.fillRect(42, 74, 171 - 42, 217 - 74); drawButton(41, 73, 172, 218, g); } mpage = 0; chaos = 1; frac = 0; gloss = 0; append = 0; } else if(inBox(x, y, 3, 148, 43, 193)) { showStatus("Fractal Geometry"); if(mpage == 1 || chaos == 1 || gloss == 1 || append == 1) paint(g); if(frac == 0) { g.setColor(Color.lightGray); g.fillRect(42, 151, 171 - 41, 371 - 151); drawButton(41, 150, 172, 372, g); } mpage = 0; chaos = 0; frac = 1; gloss = 0; append = 0; } else if(inBox(x, y, 1, 222, 42, 269)) { showStatus("The Glossary Of Terms And Phrases"); if(mpage == 1 || chaos == 1 || frac == 1 || append == 1) paint(g); if(gloss == 0) { g.setColor(Color.lightGray); g.fillRect(43, 221, 171 - 43, 295 - 220); drawButton(42, 220, 172, 296, g); } mpage = 0; chaos = 0; frac = 0; gloss = 1; append = 0; } else if(inBox(x, y, 3, 296, 42, 340)) { showStatus("The Appendices"); if(mpage == 1 || chaos == 1 || frac == 1 || gloss == 1) paint(g); if(append == 0) { g.setColor(Color.lightGray); g.fillRect(42, 235+18, 171 - 42, 314 - 235); drawButton(42, 235+18, 172, 315+18, g); } mpage = 0; chaos = 0; frac = 0; gloss = 0; append =1; } else if(mpage == 1 || chaos == 1 || frac == 1 || gloss == 1 || append == 1) { paint(g); mpage = 0; chaos = 0; frac = 0; gloss = 0; append =0; } } return true; } public void paint(Graphics g) { g.setColor(new Color(0, 0, 0)); g.fillRect(0, 0, +180, +420); g.drawImage(image, 0, 0, this); } }