home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / CoolMap / IMGAREA.CLA (.txt) < prev    next >
Encoding:
Java Class File  |  1996-09-17  |  9.1 KB  |  466 lines

  1. import java.awt.Canvas;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Event;
  5. import java.awt.Font;
  6. import java.awt.FontMetrics;
  7. import java.awt.Graphics;
  8. import java.awt.Rectangle;
  9. import java.util.StringTokenizer;
  10.  
  11. class imgarea extends Canvas {
  12.    // $FF: renamed from: c1 java.awt.Color
  13.    Color field_0;
  14.    // $FF: renamed from: c2 java.awt.Color
  15.    Color field_1;
  16.    long entered;
  17.    long inComponent;
  18.    Font font;
  19.    // $FF: renamed from: fm java.awt.FontMetrics
  20.    FontMetrics field_2;
  21.    coolmap m_parent;
  22.    int maxNumArea;
  23.    int[] hotPointX;
  24.    int[] hotPointY;
  25.    int hintX;
  26.    int hintY;
  27.    hintpot[] HotAreas;
  28.    int iMaxHotArea;
  29.    String szLastStatus;
  30.    boolean bStatusChanged;
  31.    String szHintText;
  32.    boolean bHintVisible;
  33.    boolean bHintChanged;
  34.    int hintWidth;
  35.    int hintTextHeigth;
  36.    String[] hintLines;
  37.    int lastHintLine;
  38.    int makeStatic;
  39.    int selHotAreaIndex;
  40.    int preHotAreaIndex;
  41.    String mmm;
  42.    // $FF: renamed from: lx int
  43.    int field_3;
  44.    // $FF: renamed from: ly int
  45.    int field_4;
  46.    // $FF: renamed from: lw int
  47.    int field_5;
  48.    // $FF: renamed from: lh int
  49.    int field_6;
  50.    // $FF: renamed from: x0 int
  51.    int field_7;
  52.    // $FF: renamed from: y0 int
  53.    int field_8;
  54.    // $FF: renamed from: x1 int
  55.    int field_9;
  56.    // $FF: renamed from: y1 int
  57.    int field_10;
  58.    // $FF: renamed from: gg java.awt.Graphics
  59.    Graphics field_11;
  60.    // $FF: renamed from: ff java.awt.FontMetrics
  61.    FontMetrics field_12;
  62.    int fontHeight;
  63.  
  64.    public imgarea(coolmap var1, Rectangle var2) {
  65.       this.field_0 = Color.pink;
  66.       this.field_1 = Color.lightGray;
  67.       this.font = new Font("Courier", 1, 12);
  68.       this.maxNumArea = 50;
  69.       this.iMaxHotArea = -1;
  70.       this.szLastStatus = "";
  71.       this.bStatusChanged = false;
  72.       this.szHintText = "";
  73.       this.bHintVisible = false;
  74.       this.bHintChanged = false;
  75.       this.hintWidth = 90;
  76.       this.hintTextHeigth = 5;
  77.       this.hintLines = new String[50];
  78.       this.lastHintLine = -1;
  79.       this.selHotAreaIndex = -1;
  80.       this.preHotAreaIndex = -1;
  81.       this.mmm = "nnn";
  82.       this.fontHeight = 10;
  83.       ((Component)this).reshape(var2.x, var2.y, var2.width, var2.height);
  84.       this.m_parent = var1;
  85.       this.HotAreas = new hintpot[this.maxNumArea];
  86.       this.hotPointX = new int[100];
  87.       this.hotPointY = new int[100];
  88.       boolean var3 = false;
  89.  
  90.       int var4;
  91.       for(var4 = -1; !var3; var3 = (this.HotAreas[var4] = this.HotAreaFromParam(var4 + 1)) == null) {
  92.          ++var4;
  93.       }
  94.  
  95.       this.iMaxHotArea = var4 - 1;
  96.    }
  97.  
  98.    public int inWhichArea(int var1, int var2) {
  99.       for(int var3 = 0; var3 <= this.iMaxHotArea; ++var3) {
  100.          if (this.HotAreas[var3].polyMyArea.inside(var1, var2)) {
  101.             return var3;
  102.          }
  103.       }
  104.  
  105.       return -1;
  106.    }
  107.  
  108.    public void loadAudioFiles() {
  109.       for(int var1 = 0; var1 <= this.iMaxHotArea; ++var1) {
  110.          if (this.HotAreas[var1].auSourceName != null) {
  111.             if (this.m_parent.m_common.whichBase == 0) {
  112.                this.HotAreas[var1].auSource = this.m_parent.getAudioClip(this.m_parent.getDocumentBase(), this.HotAreas[var1].auSourceName);
  113.             } else {
  114.                this.HotAreas[var1].auSource = this.m_parent.getAudioClip(this.m_parent.getCodeBase(), this.HotAreas[var1].auSourceName);
  115.             }
  116.          }
  117.       }
  118.  
  119.    }
  120.  
  121.    public void updateHotList() {
  122.       for(int var1 = 0; var1 <= this.iMaxHotArea; ++var1) {
  123.          if (!this.HotAreas[var1].bUsed && var1 + 1 <= this.iMaxHotArea) {
  124.             for(int var2 = var1; var2 < this.iMaxHotArea; ++var2) {
  125.                this.HotAreas[var1].copy(this.HotAreas[var1 + 1]);
  126.                this.HotAreas[var1].bUsed = true;
  127.                this.HotAreas[var1 + 1].bUsed = false;
  128.             }
  129.             break;
  130.          }
  131.       }
  132.  
  133.       --this.iMaxHotArea;
  134.    }
  135.  
  136.    public boolean mouseDown(Event var1, int var2, int var3) {
  137.       if (this.m_parent.mapMode == 0 && this.m_parent.editState == 1) {
  138.          this.field_11 = ((Component)this).getGraphics();
  139.          this.field_11.setColor(Color.black);
  140.          this.field_11.setXORMode(Color.yellow);
  141.          if (this.m_parent.currentPoint == 0 && this.m_parent.editState == 1) {
  142.             this.field_7 = var2;
  143.             this.field_8 = var3;
  144.             this.field_9 = var2;
  145.             this.field_10 = var3;
  146.             this.hotPointX[this.m_parent.currentPoint] = var2;
  147.             this.hotPointY[this.m_parent.currentPoint] = var3;
  148.             ++this.m_parent.currentPoint;
  149.             this.selHotAreaIndex = -100;
  150.          }
  151.       } else {
  152.          this.preHotAreaIndex = this.selHotAreaIndex;
  153.          this.selHotAreaIndex = this.inWhichArea(var2, var3);
  154.          this.paint(((Component)this).getGraphics());
  155.          this.m_parent.update_applet();
  156.       }
  157.  
  158.       return true;
  159.    }
  160.  
  161.    public boolean mouseMove(Event var1, int var2, int var3) {
  162.       if (this.m_parent.mapMode == 1) {
  163.          this.DoMouseMove(this.m_parent.gcOn, var1, var2, var3);
  164.       }
  165.  
  166.       return true;
  167.    }
  168.  
  169.    public boolean mouseDrag(Event var1, int var2, int var3) {
  170.       if (this.m_parent.mapMode == 0 && this.m_parent.editState == 1) {
  171.          this.field_11.drawLine(this.field_7, this.field_8, this.field_9, this.field_10);
  172.          this.field_9 = var2;
  173.          this.field_10 = var3;
  174.          this.field_11.drawLine(this.field_7, this.field_8, this.field_9, this.field_10);
  175.       }
  176.  
  177.       return true;
  178.    }
  179.  
  180.    public boolean mouseUp(Event var1, int var2, int var3) {
  181.       this.m_parent.mapImageArea.makeStatic = 0;
  182.       if (this.m_parent.mapMode == 0 && this.m_parent.editState == 1) {
  183.          this.field_11.drawLine(this.field_7, this.field_8, this.field_9, this.field_10);
  184.          this.field_9 = var2;
  185.          this.field_10 = var3;
  186.          this.field_11.setPaintMode();
  187.          this.field_11.drawLine(this.field_7, this.field_8, this.field_9, this.field_10);
  188.          this.field_7 = var2;
  189.          this.field_8 = var3;
  190.          this.hotPointX[this.m_parent.currentPoint] = var2;
  191.          this.hotPointY[this.m_parent.currentPoint] = var3;
  192.          ++this.m_parent.currentPoint;
  193.          this.m_parent.update_applet();
  194.       } else if (this.m_parent.mapMode == 1) {
  195.          this.DoMouseUp(var1, var2, var3);
  196.          this.m_parent.update_applet();
  197.       }
  198.  
  199.       return true;
  200.    }
  201.  
  202.    public boolean mouseExit(Event var1, int var2, int var3) {
  203.       if (this.m_parent.mapMode == 1) {
  204.          this.DoMouseExit(var1, var2, var3);
  205.       }
  206.  
  207.       this.m_parent.m_common.setTheCursor(0);
  208.       return true;
  209.    }
  210.  
  211.    public boolean mouseEnter(Event var1, int var2, int var3) {
  212.       return true;
  213.    }
  214.  
  215.    public void paint(Graphics var1) {
  216.       boolean var2 = this.m_parent.gcOn == null;
  217.       this.m_parent.gcOn = ((Component)this).getGraphics();
  218.       this.m_parent.gcOn.setFont(new Font("TimesRoman", 1, this.fontHeight));
  219.       this.field_12 = this.m_parent.gcOn.getFontMetrics();
  220.       this.hintTextHeigth = this.field_12.getHeight();
  221.       if (var2) {
  222.          Event var3 = new Event(this.m_parent.modeBox[1], 1001, (Object)null);
  223.          ((Component)this).postEvent(var3);
  224.       }
  225.  
  226.       this.m_parent.maintainStaticImages();
  227.       this.m_parent.copyOfftoOn();
  228.       this.m_parent.update_applet();
  229.       if (this.makeStatic > 0) {
  230.          this.paintTips(var1, false);
  231.       }
  232.  
  233.    }
  234.  
  235.    public void update(Graphics var1) {
  236.       this.paint(var1);
  237.    }
  238.  
  239.    public void setStatusText(String var1, boolean var2) {
  240.       if (var2) {
  241.          this.m_parent.showStatus(var1);
  242.          this.szLastStatus = var1;
  243.       } else {
  244.          if (this.szLastStatus.equals(var1)) {
  245.             this.szLastStatus = "";
  246.             this.m_parent.showStatus("");
  247.          }
  248.  
  249.       }
  250.    }
  251.  
  252.    public void setNewHintText(String var1) {
  253.       this.bHintVisible |= true;
  254.       if (var1 == null) {
  255.          if (this.szHintText != null) {
  256.             this.bHintChanged = true;
  257.          }
  258.  
  259.          this.szHintText = null;
  260.       } else {
  261.          if (!var1.equals(this.szHintText)) {
  262.             this.bHintChanged = true;
  263.             this.szHintText = var1;
  264.          }
  265.  
  266.       }
  267.    }
  268.  
  269.    private hintpot HotAreaFromParam(int var1) {
  270.       Object var2 = null;
  271.       String var3 = this.m_parent.getParameter("hot_area" + var1);
  272.       if (var3 == null) {
  273.          return null;
  274.       } else {
  275.          hintpot var4 = new hintpot(var3, this);
  276.          return !var4.bInitialised ? null : var4;
  277.       }
  278.    }
  279.  
  280.    public boolean DoMouseUp(Event var1, int var2, int var3) {
  281.       boolean var4 = false;
  282.  
  283.       for(int var5 = 0; var5 <= this.iMaxHotArea; ++var5) {
  284.          this.HotAreas[var5].MouseUp(var2, var3);
  285.       }
  286.  
  287.       return true;
  288.    }
  289.  
  290.    public boolean DoMouseMove(Graphics var1, Event var2, int var3, int var4) {
  291.       this.bHintVisible = false;
  292.       this.bHintChanged = false;
  293.       int var5 = 0;
  294.       if (this.m_parent.mapMode == 1) {
  295.          this.m_parent.mapImageArea.selHotAreaIndex = -1;
  296.       }
  297.  
  298.       for(var5 = 0; var5 <= this.iMaxHotArea && !this.HotAreas[var5].MouseMove(var3, var4, var5); ++var5) {
  299.       }
  300.  
  301.       if (var5 > this.iMaxHotArea && this.m_parent.mapImageArea.selHotAreaIndex == -1) {
  302.          this.m_parent.mapImageArea.selHotAreaIndex = -400;
  303.          this.m_parent.gcOff.drawImage(this.m_parent.m_common.bufBK, 0, 0, this);
  304.          this.m_parent.gcOff.drawImage(this.m_parent.mapImage, this.m_parent.mapArea.x, this.m_parent.mapArea.y, this);
  305.          this.m_parent.copyOfftoOn();
  306.       }
  307.  
  308.       this.hintX = var3;
  309.       this.hintY = var4;
  310.       this.paintTips(var1, false);
  311.       return true;
  312.    }
  313.  
  314.    public void parseHint() {
  315.       if (this.field_12 != null) {
  316.          StringTokenizer var3 = new StringTokenizer(this.insertSpace(this.szHintText), " ", false);
  317.          this.hintLines[0] = this.szHintText;
  318.          String var2 = "";
  319.          this.lastHintLine = -1;
  320.  
  321.          while(var3.hasMoreTokens()) {
  322.             String var1;
  323.             try {
  324.                var1 = var3.nextToken();
  325.             } catch (Exception var4) {
  326.                break;
  327.             }
  328.  
  329.             if (this.field_12.stringWidth(var2 + var1) > this.hintWidth - 50) {
  330.                this.hintLines[++this.lastHintLine] = var2;
  331.                var2 = this.lTrim(var1);
  332.             } else {
  333.                var2 = var2 + " " + var1;
  334.             }
  335.          }
  336.  
  337.          this.hintLines[++this.lastHintLine] = var2;
  338.       }
  339.    }
  340.  
  341.    public String insertSpace(String var1) {
  342.       String var3 = "";
  343.       String var4 = "";
  344.       String var5 = "";
  345.  
  346.       for(int var2 = 0; var2 < var1.length() - 1; ++var2) {
  347.          var4 = var1.substring(var2, var2 + 1);
  348.          var5 = var1.substring(var2 + 1, var2 + 2);
  349.          var3 = var3 + var4;
  350.          if (this.IsPong(var4) && !this.IsPong(var5) && !var1.substring(var2, var2 + 1).equals(" ")) {
  351.             var3 = var3 + " ";
  352.          }
  353.       }
  354.  
  355.       var3 = var3 + var5;
  356.       return var3;
  357.    }
  358.  
  359.    public String lTrim(String var1) {
  360.       String var3 = "";
  361.  
  362.       for(int var2 = 0; var2 < var1.length(); ++var2) {
  363.          var3 = var1.substring(var2, var2 + 1);
  364.          if (!var3.equals(" ")) {
  365.             return var1.substring(var2, var1.length());
  366.          }
  367.       }
  368.  
  369.       return "";
  370.    }
  371.  
  372.    public boolean IsPong(String var1) {
  373.       return var1.equals(",") || var1.equals(".") || var1.equals("?") || var1.equals("!") || var1.equals(";") || var1.equals(":");
  374.    }
  375.  
  376.    public boolean DoMouseExit(Event var1, int var2, int var3) {
  377.       this.setStatusText("", true);
  378.       this.setNewHintText((String)null);
  379.       this.m_parent.m_common.setTheCursor(0);
  380.       this.m_parent.copyOfftoOn();
  381.       return true;
  382.    }
  383.  
  384.    public void paintHotArea(Graphics var1, boolean var2, Color var3) {
  385.       if (this.m_parent.mapMode == 0) {
  386.          if (var2) {
  387.             var1.setXORMode(Color.blue);
  388.  
  389.             for(int var4 = 0; var4 <= this.iMaxHotArea; ++var4) {
  390.                var1.fillPolygon(this.HotAreas[var4].polyMyArea);
  391.             }
  392.  
  393.             var1.setPaintMode();
  394.          }
  395.  
  396.          if (this.selHotAreaIndex >= 0 && this.selHotAreaIndex <= this.iMaxHotArea) {
  397.             var1.setColor(var3);
  398.             var1.drawPolygon(this.HotAreas[this.selHotAreaIndex].polyMyArea);
  399.             return;
  400.          }
  401.       } else if (this.selHotAreaIndex >= 0 && this.selHotAreaIndex <= this.iMaxHotArea) {
  402.          var1.setColor(var3);
  403.          var1.drawPolygon(this.HotAreas[this.selHotAreaIndex].polyMyArea);
  404.       }
  405.  
  406.    }
  407.  
  408.    public void paintTips(Graphics var1, boolean var2) {
  409.       if (!this.bHintVisible && this.makeStatic == 0 && !var2) {
  410.          this.setNewHintText((String)null);
  411.          this.m_parent.m_common.setTheCursor(0);
  412.       }
  413.  
  414.       if (this.m_parent.tipsOn != 0) {
  415.          if (this.bHintChanged || this.makeStatic > 0 || var2) {
  416.             this.bHintVisible = false;
  417.             if (!var2) {
  418.                this.m_parent.copyOfftoOn();
  419.             }
  420.  
  421.             this.bHintVisible = true;
  422.             if (this.szHintText != null || var2) {
  423.                if (((Component)this).size().width - this.hintX < this.hintWidth) {
  424.                   this.hintX = ((Component)this).size().width - this.hintWidth - 10;
  425.                }
  426.  
  427.                if (((Component)this).size().height - this.hintY < this.hintTextHeigth * (this.lastHintLine + 1)) {
  428.                   int var10002 = this.hintTextHeigth * (this.lastHintLine + 1);
  429.                   this.hintY = ((Component)this).size().height - var10002 - 10;
  430.                }
  431.  
  432.                if (this.hintX < 0) {
  433.                   this.hintX = 0;
  434.                }
  435.  
  436.                if (this.hintY < 0) {
  437.                   this.hintY = 0;
  438.                }
  439.  
  440.                if (this.makeStatic > 0) {
  441.                   var1.setColor(Color.red);
  442.                   this.hintX = (((Component)this).size().width - this.hintWidth) / 2;
  443.                   this.hintY = (((Component)this).size().height - this.hintTextHeigth) / 2;
  444.                } else {
  445.                   var1.setColor(Color.yellow);
  446.                }
  447.  
  448.                var1.fillRect(this.hintX + 3, this.hintY + 3, this.hintWidth, this.hintTextHeigth * (this.lastHintLine + 1) + 10);
  449.                if (this.makeStatic > 0) {
  450.                   var1.setColor(Color.yellow);
  451.                } else {
  452.                   var1.setColor(Color.black);
  453.                }
  454.  
  455.                var1.drawRect(this.hintX + 3, this.hintY + 3, this.hintWidth, this.hintTextHeigth * (this.lastHintLine + 1) + 10);
  456.  
  457.                for(int var3 = 0; var3 <= this.lastHintLine; ++var3) {
  458.                   var1.drawString(this.hintLines[var3], this.hintX + 8, this.hintY + this.hintTextHeigth * (var3 + 1) + 3);
  459.                }
  460.             }
  461.          }
  462.  
  463.       }
  464.    }
  465. }
  466.