home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPCalendarPicker.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  7.8 KB  |  415 lines

  1. import java.awt.BorderLayout;
  2. import java.awt.Button;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Event;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Graphics;
  11. import java.awt.Image;
  12. import java.awt.Panel;
  13. import java.awt.Rectangle;
  14. import java.awt.image.ImageObserver;
  15. import java.util.Date;
  16.  
  17. public class JDPCalendarPicker extends Panel {
  18.    Image offscreen;
  19.    Rectangle offscreensize;
  20.    // $FF: renamed from: gr java.awt.Graphics
  21.    Graphics field_0;
  22.    Container target;
  23.    JDPButton leftButton;
  24.    JDPButton rightButton;
  25.    Date thisDate;
  26.    Date showingDate;
  27.    boolean borderOn;
  28.    Rectangle Bounds;
  29.    // $FF: renamed from: fm java.awt.FontMetrics
  30.    protected FontMetrics field_1;
  31.    int[] boldWidths;
  32.    Font thisFont;
  33.    Font lastFont;
  34.    int prevFontHeight;
  35.    Rectangle[] dateRectangles;
  36.    Date[] dates;
  37.    public static String[] months = new String[]{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
  38.    public static String[] day = new String[]{"S", "M", "T", "W", "T", "F", "S"};
  39.  
  40.    public static void setDays(String[] var0) {
  41.       if (var0 != null && var0.length == 7) {
  42.          day = new String[7];
  43.  
  44.          for(int var1 = 0; var1 < var0.length; ++var1) {
  45.             day[var1] = var0[var1];
  46.          }
  47.  
  48.       }
  49.    }
  50.  
  51.    void datePanelMain() {
  52.       ((Container)this).setLayout(new BorderLayout());
  53.       this.thisDate = new Date();
  54.       this.thisDate.setHours(0);
  55.       this.thisDate.setMinutes(0);
  56.       this.thisDate.setSeconds(0);
  57.       this.showingDate = new Date();
  58.       this.leftButton = new JDPButton(1);
  59.       this.rightButton = new JDPButton(2);
  60.       ((Container)this).add("East", this.leftButton);
  61.       ((Container)this).add("West", this.rightButton);
  62.    }
  63.  
  64.    public void setDate(Date var1) {
  65.       this.thisDate = new Date(var1.getTime());
  66.       this.thisDate.setHours(0);
  67.       this.thisDate.setMinutes(0);
  68.       this.thisDate.setSeconds(0);
  69.       this.showingDate = new Date(var1.getTime());
  70.       ((Component)this).repaint();
  71.    }
  72.  
  73.    public void setDate(String var1) {
  74.       if (var1 != null && !var1.equals("")) {
  75.          this.setDate(JDPDate.unformat(var1, JDesignerPro.dateFormat));
  76.       } else {
  77.          this.setDate(new Date());
  78.       }
  79.    }
  80.  
  81.    public Date getDate() {
  82.       this.thisDate.setHours(0);
  83.       this.thisDate.setMinutes(0);
  84.       this.thisDate.setSeconds(0);
  85.       return new Date(this.thisDate.getTime());
  86.    }
  87.  
  88.    public void paint(Graphics var1) {
  89.       this.update(var1);
  90.    }
  91.  
  92.    public void setBorder(boolean var1) {
  93.       this.borderOn = var1;
  94.       ((Component)this).repaint();
  95.    }
  96.  
  97.    public boolean getBorder() {
  98.       return this.borderOn;
  99.    }
  100.  
  101.    public Dimension minimumSize() {
  102.       Dimension var1 = new Dimension(100, 100);
  103.       this.StringWidth(" ");
  104.  
  105.       try {
  106.          if (this.field_1 == null && ((Component)this).getParent() != null) {
  107.             this.field_1 = ((Component)this).getParent().getGraphics().getFontMetrics();
  108.             this.lastFont = ((Component)this).getParent().getGraphics().getFont();
  109.             if (this.field_1 != null) {
  110.                this.boldWidths = this.field_1.getWidths();
  111.             }
  112.          }
  113.  
  114.          if (this.field_1 != null) {
  115.             this.field_1 = ((Component)this).getParent().getGraphics().getFontMetrics();
  116.             if (this.field_1 != null) {
  117.                int var2 = this.field_1.getHeight();
  118.                int var3 = this.StringWidth("2");
  119.                var1 = new Dimension(var3 * 20, (int)((double)var2 * (double)8.5F));
  120.             }
  121.          }
  122.       } catch (Exception var4) {
  123.       }
  124.  
  125.       return var1;
  126.    }
  127.  
  128.    public void update(Graphics var1) {
  129.       Rectangle var2 = ((Component)this).bounds();
  130.       if (var2.width != 0 && var2.height != 0) {
  131.          if (this.offscreen == null || var2.width != this.offscreensize.width || var2.height != this.offscreensize.height) {
  132.             if (var2.width < 6) {
  133.                var2.width = 6;
  134.             }
  135.  
  136.             if (var2.height < 6) {
  137.                var2.height = 6;
  138.             }
  139.  
  140.             this.offscreen = ((Component)this).createImage(var2.width, var2.height);
  141.             this.offscreensize = var2;
  142.             this.field_0 = this.offscreen.getGraphics();
  143.             this.field_0.setFont(((Component)this).getFont());
  144.          }
  145.  
  146.          Color var3 = ((Component)this).getBackground();
  147.          this.field_0.setColor(var3);
  148.          this.field_0.fillRect(0, 0, var2.width, var2.height);
  149.          this.field_0.setColor(((Component)this).getForeground());
  150.          this.field_0.setFont(((Component)this).getFont());
  151.          this.StringWidth("");
  152.          int var4 = 0;
  153.          if (this.field_1 != null) {
  154.             var4 = this.field_1.getHeight();
  155.             if (var4 != this.prevFontHeight && this.prevFontHeight != 0 || var4 != ((Component)this).bounds().height) {
  156.                this.prevFontHeight = var4;
  157.                if (this.target == null) {
  158.                   this.target = ((Component)this).getParent();
  159.                }
  160.  
  161.                if (this.target != null && this.target instanceof JDPPopupComponent) {
  162.                   this.target.layout();
  163.                   this.target.paintAll(this.target.getGraphics());
  164.                }
  165.             }
  166.  
  167.             this.prevFontHeight = var4;
  168.          }
  169.  
  170.          this.Bounds = ((Component)this).bounds();
  171.          int var5 = (int)((double)this.Bounds.width / (double)7.5F);
  172.          String var6 = months[this.showingDate.getMonth()] + " " + Integer.toString(this.showingDate.getYear() + 1900);
  173.          int var7 = this.StringWidth(var6);
  174.          this.field_0.drawString(var6, (this.Bounds.width - var7) / 2, var4);
  175.          int var8 = 1;
  176.          this.field_0.drawString(day[0], var8++ * var5 + 2 - this.StringWidth(day[0]), var4 * 2);
  177.          this.field_0.drawString(day[1], var8++ * var5 + 2 - this.StringWidth(day[1]), var4 * 2);
  178.          this.field_0.drawString(day[2], var8++ * var5 + 2 - this.StringWidth(day[2]), var4 * 2);
  179.          this.field_0.drawString(day[3], var8++ * var5 + 2 - this.StringWidth(day[3]), var4 * 2);
  180.          this.field_0.drawString(day[4], var8++ * var5 + 2 - this.StringWidth(day[4]), var4 * 2);
  181.          this.field_0.drawString(day[5], var8++ * var5 + 2 - this.StringWidth(day[5]), var4 * 2);
  182.          this.field_0.drawString(day[6], var8++ * var5 + 2 - this.StringWidth(day[6]), var4 * 2);
  183.          Date var9 = new Date(this.showingDate.getTime());
  184.          var9.setDate(1);
  185.          int var10 = var9.getDay();
  186.          var9.setTime(var9.getTime() - (long)(var10 * 24 * 60 * 60 * 1000));
  187.          var9.setHours(0);
  188.          this.field_0.setColor(JDPUtils.darker(var3));
  189.          int var13 = 0;
  190.          this.dateRectangles = new Rectangle[50];
  191.          this.dates = new Date[50];
  192.          int var14 = 3;
  193.  
  194.          do {
  195.             int var15 = 1;
  196.  
  197.             do {
  198.                String var11 = Integer.toString(var9.getDate());
  199.                if (var11.equals("1")) {
  200.                   if (this.field_0.getColor().equals(((Component)this).getForeground())) {
  201.                      this.field_0.setColor(JDPUtils.darker(var3));
  202.                   } else {
  203.                      this.field_0.setColor(((Component)this).getForeground());
  204.                   }
  205.                }
  206.  
  207.                this.dates[var13] = new Date(var9.getTime());
  208.                this.dateRectangles[var13++] = new Rectangle((var15 - 1) * var5 + 5, (int)((double)var4 * ((double)var14 - 0.7)), var5 - 2, (int)((double)var4 * 0.9));
  209.                Color var12 = this.field_0.getColor();
  210.                if (this.thisDate.equals(var9)) {
  211.                   this.field_0.fillRect((var15 - 1) * var5 + 5, (int)((double)var4 * ((double)var14 - 0.7)), var5 - 2, (int)((double)var4 * 0.9));
  212.                   this.field_0.setColor(var3);
  213.                }
  214.  
  215.                this.field_0.drawString(var11, var15 * var5 + 2 - this.StringWidth(var11), var4 * var14);
  216.                this.field_0.setColor(var12);
  217.                var9.setTime(var9.getTime() + 108000000L);
  218.                var9.setHours(0);
  219.                ++var15;
  220.             } while(var15 < 8);
  221.  
  222.             ++var14;
  223.          } while(var14 < 9);
  224.  
  225.          this.field_0.setColor(JDPUtils.darker(var3));
  226.          this.field_0.drawLine(3, var4 * 2 + 1, this.Bounds.width - 4, var4 * 2 + 1);
  227.          this.field_0.setColor(JDPUtils.brighter(var3));
  228.          this.field_0.drawLine(3, var4 * 2 + 2, this.Bounds.width - 4, var4 * 2 + 2);
  229.          if (this.borderOn) {
  230.             this.field_0.setColor(JDPUtils.brighter(var3));
  231.             this.field_0.drawLine(0, 0, this.Bounds.width - 1, 0);
  232.             this.field_0.drawLine(0, 0, 0, this.Bounds.height - 1);
  233.             this.field_0.setColor(JDPUtils.darker(var3));
  234.             this.field_0.drawLine(0, this.Bounds.height - 1, 0, this.Bounds.height - 1);
  235.             this.field_0.drawLine(this.Bounds.width - 1, 0, this.Bounds.width - 1, 0);
  236.             this.field_0.drawLine(1, this.Bounds.height - 2, this.Bounds.width - 2, this.Bounds.height - 2);
  237.             this.field_0.drawLine(this.Bounds.width - 2, 1, this.Bounds.width - 2, this.Bounds.height - 2);
  238.             this.field_0.setColor(Color.black);
  239.             this.field_0.drawLine(1, this.Bounds.height - 1, this.Bounds.width - 1, this.Bounds.height - 1);
  240.             this.field_0.drawLine(this.Bounds.width - 1, 1, this.Bounds.width - 1, this.Bounds.height - 1);
  241.          }
  242.  
  243.          var1.drawImage(this.offscreen, 0, 0, (ImageObserver)null);
  244.          Dimension var23 = this.leftButton.minimumSize();
  245.          this.leftButton.reshape(4, 4, var23.width, var23.height);
  246.          this.rightButton.reshape(this.Bounds.width - 4 - var23.width, 4, var23.width, var23.height);
  247.       }
  248.    }
  249.  
  250.    public String getDateString() {
  251.       this.thisDate.setHours(0);
  252.       this.thisDate.setMinutes(0);
  253.       this.thisDate.setSeconds(0);
  254.       return JDPDate.format(this.thisDate, JDesignerPro.dateFormat);
  255.    }
  256.  
  257.    public JDPCalendarPicker() {
  258.       if (!JDPButton.activated) {
  259.          System.out.println("Software Violation - this class may only be used in conjunction with JDesignerPro.");
  260.       } else {
  261.          this.datePanelMain();
  262.       }
  263.    }
  264.  
  265.    public Dimension preferredSize() {
  266.       return this.minimumSize();
  267.    }
  268.  
  269.    public void layout() {
  270.       ((Component)this).repaint();
  271.    }
  272.  
  273.    public boolean handleEvent(Event var1) {
  274.       switch (var1.id) {
  275.          case 202:
  276.             ((Component)this).repaint();
  277.             return false;
  278.          case 401:
  279.             if (var1.key == 10) {
  280.                Event var8 = new Event(this, var1.when, 1001, var1.x, var1.y, var1.key, var1.modifiers, this.getDateString());
  281.                super.postEvent(var8);
  282.                return true;
  283.             }
  284.  
  285.             return false;
  286.          case 403:
  287.             switch (var1.key) {
  288.                case 1002:
  289.                case 1004:
  290.                   int var7 = this.showingDate.getMonth() - 1;
  291.                   if (var7 < 0) {
  292.                      this.showingDate.setMonth(11);
  293.                      this.showingDate.setYear(this.showingDate.getYear() - 1);
  294.                   } else {
  295.                      this.showingDate.setMonth(var7);
  296.                   }
  297.  
  298.                   this.showingDate.setHours(0);
  299.                   this.showingDate.setMinutes(0);
  300.                   this.showingDate.setSeconds(0);
  301.                   this.thisDate = new Date(this.showingDate.getTime());
  302.                   ((Component)this).repaint();
  303.                   return true;
  304.                case 1003:
  305.                case 1005:
  306.                   int var6 = this.showingDate.getMonth() + 1;
  307.                   if (var6 > 11) {
  308.                      this.showingDate.setMonth(0);
  309.                      this.showingDate.setYear(this.showingDate.getYear() + 1);
  310.                   } else {
  311.                      this.showingDate.setMonth(var6);
  312.                   }
  313.  
  314.                   this.showingDate.setHours(0);
  315.                   this.showingDate.setMinutes(0);
  316.                   this.showingDate.setSeconds(0);
  317.                   this.thisDate = new Date(this.showingDate.getTime());
  318.                   ((Component)this).repaint();
  319.                   return true;
  320.                case 1006:
  321.                   this.showingDate.setTime(this.showingDate.getTime() - 75600000L);
  322.                   this.showingDate.setHours(0);
  323.                   this.showingDate.setMinutes(0);
  324.                   this.showingDate.setSeconds(0);
  325.                   this.thisDate = new Date(this.showingDate.getTime());
  326.                   ((Component)this).repaint();
  327.                   return true;
  328.                case 1007:
  329.                   this.showingDate.setTime(this.showingDate.getTime() + 97200000L);
  330.                   this.showingDate.setHours(0);
  331.                   this.showingDate.setMinutes(0);
  332.                   this.showingDate.setSeconds(0);
  333.                   this.thisDate = new Date(this.showingDate.getTime());
  334.                   ((Component)this).repaint();
  335.                   return true;
  336.                default:
  337.                   return true;
  338.             }
  339.          case 502:
  340.             int var5 = 0;
  341.  
  342.             while(this.dateRectangles[var5] == null || !this.dateRectangles[var5].inside(var1.x, var1.y)) {
  343.                ++var5;
  344.                if (var5 >= 50) {
  345.                   return true;
  346.                }
  347.             }
  348.  
  349.             this.thisDate = new Date(this.dates[var5].getTime());
  350.             this.showingDate = new Date(this.dates[var5].getTime());
  351.             ((Component)this).repaint();
  352.             Event var3 = new Event(this, var1.when, 1001, var1.x, var1.y, var1.key, var1.modifiers, this.getDateString());
  353.             super.postEvent(var3);
  354.             return true;
  355.          case 1001:
  356.             if (var1.target.equals(this.leftButton)) {
  357.                ((Component)this).requestFocus();
  358.                int var4 = this.showingDate.getMonth() - 1;
  359.                if (var4 < 0) {
  360.                   this.showingDate.setMonth(11);
  361.                   this.showingDate.setYear(this.showingDate.getYear() - 1);
  362.                } else {
  363.                   this.showingDate.setMonth(var4);
  364.                }
  365.  
  366.                ((Component)this).repaint();
  367.                return true;
  368.             } else if (var1.target.equals(this.rightButton)) {
  369.                ((Component)this).requestFocus();
  370.                int var2 = this.showingDate.getMonth() + 1;
  371.                if (var2 > 11) {
  372.                   this.showingDate.setMonth(0);
  373.                   this.showingDate.setYear(this.showingDate.getYear() + 1);
  374.                } else {
  375.                   this.showingDate.setMonth(var2);
  376.                }
  377.  
  378.                ((Component)this).repaint();
  379.                return true;
  380.             } else {
  381.                if (var1.target instanceof Button) {
  382.                   return true;
  383.                }
  384.  
  385.                return false;
  386.             }
  387.          case 1005:
  388.             return false;
  389.          default:
  390.             return false;
  391.       }
  392.    }
  393.  
  394.    int StringWidth(String var1) {
  395.       if (this.field_0 != null && (this.field_1 == null || this.lastFont == null || this.field_0 != null && !this.field_0.getFont().equals(this.lastFont))) {
  396.          this.field_1 = this.field_0.getFontMetrics();
  397.          this.lastFont = this.field_0.getFont();
  398.          this.boldWidths = this.field_1.getWidths();
  399.       }
  400.  
  401.       return this.field_1 != null ? this.field_1.stringWidth(var1) : 0;
  402.    }
  403.  
  404.    public static void setMonths(String[] var0) {
  405.       if (var0 != null && var0.length == 12) {
  406.          months = new String[12];
  407.  
  408.          for(int var1 = 0; var1 < var0.length; ++var1) {
  409.             months[var1] = var0[var1];
  410.          }
  411.  
  412.       }
  413.    }
  414. }
  415.