Util.java
上传用户:luxiaowei
上传日期:2022-06-06
资源大小:58k
文件大小:18k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.framework;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.Random;
  9. import java.util.Vector;
  10. import javax.microedition.lcdui.Alert;
  11. import javax.microedition.lcdui.AlertType;
  12. import javax.microedition.lcdui.Graphics;
  13. import javax.microedition.lcdui.Image;
  14. import javax.microedition.rms.RecordStore;
  15. import javax.microedition.rms.RecordStoreException;
  16. import javax.microedition.rms.RecordStoreFullException;
  17. import javax.microedition.rms.RecordStoreNotOpenException;
  18. /**
  19.  *
  20.  * @author swaroop_kumar
  21.  */
  22. public class Util {
  23.    
  24.     public static final int CURSOR_COLOR = 0;
  25.     public static final int CURSOR_LENGTH = 10;
  26.     private static Image arrowImage;
  27.     private static Image arrowSelImage;
  28.     private static Random random = new Random(System.currentTimeMillis());
  29.     public static void drawCursor(Graphics g,int x,int y){
  30. //        g.setColor(Util.CURSOR_COLOR);
  31. //        g.drawLine(x - (CURSOR_LENGTH >> 1), y, x + (CURSOR_LENGTH >> 1), y);
  32. //        g.drawLine(x , y - (CURSOR_LENGTH >> 1), x, y + (CURSOR_LENGTH >> 1));
  33.         try {
  34.             if(arrowImage == null)
  35.             {
  36.                 arrowImage = Image.createImage("/arrow.png");
  37.                 
  38.             }
  39.             g.drawImage(arrowImage, x, y, 0);
  40.         } catch (Exception e) {
  41.             e.printStackTrace();
  42.         }
  43.     }
  44.     public static void drawSelectionCursor(Graphics g,int x,int y){
  45.         try {
  46.             if(arrowSelImage== null)
  47.             {
  48.                 arrowSelImage = Image.createImage("/arrowSel.png");
  49.                 
  50.             }
  51.             g.drawImage(arrowSelImage, x, y, 0);
  52.         } catch (Exception e) {
  53.             e.printStackTrace();
  54.         }
  55.     }
  56.     public static boolean equalsIgnoreCase(String str1,String str2)
  57.     {
  58.         if(str1.toUpperCase().equals(str2.toUpperCase()))
  59.         {
  60.             return true;
  61.         }
  62.         return false;
  63.     }
  64.     public static int searchItem(String arry[] , String item)
  65.     {
  66.         for (int i = 0; i < arry.length; i++) {
  67.            if(arry[i].equals(item))
  68.                return i;
  69.             
  70.         }
  71.         return -1;
  72.     }
  73.     public static int getMaxCharHeight(GTantra font,String text)
  74.     {
  75.          int max = 0;
  76.         for (int i = 0; i <  text.length(); i++) {
  77.           if(max < font.getCharHeight(text.charAt(i)))
  78.           {
  79.               max = font.getCharHeight(text.charAt(i));
  80.           }
  81.             
  82.         }
  83.          return max;
  84.     }
  85.    
  86.     private static int clipX, clipY , clipWidth,clipHeight;
  87.     public static void setClipNSave(int x, int y, int w, int h , Graphics g)
  88.     {
  89.         clipX = g.getClipX();
  90.         clipY = g.getClipY();
  91.         clipWidth = g.getClipWidth();
  92.         clipHeight = g.getClipHeight();
  93.         g.clipRect(x, y, w, h);
  94.     }
  95.     public static void restoreSetClip(Graphics g)
  96.     {
  97.         g.setClip(clipX, clipY, clipWidth, clipHeight);
  98.     }
  99.    public static Image resizeImageWithTransperency(Image image, int newWidth, int newHeight) {  
  100.        
  101.        DisplayManager.getInst().startBusyMode();
  102.        int width = image.getWidth();
  103.        int height = image.getHeight();
  104.        int argbData[] = new int[image.getWidth() * image.getHeight()];
  105.        image.getRGB(argbData,0,image.getWidth(),0,0, image.getWidth(), image.getHeight());
  106.        int out[] = new int[newWidth*newHeight];  
  107.        for (int yy = 0; yy < newHeight; yy++) {  
  108.        int dy = yy * height / newHeight;  
  109.        for (int xx = 0; xx < newWidth; xx++) {  
  110.          int dx = xx * width / newWidth;  
  111.            out[(newWidth*yy)+xx]=argbData[(width*dy)+dx];  
  112.        }  
  113.        }  
  114.        DisplayManager.getInst().stopBusyMode();
  115.        return Image.createRGBImage(out, newWidth, newHeight, true);  
  116.    }  
  117.     public static Image resizeImage(Image sourceImage, int imgWidth, int imgHeight) {
  118.        if(sourceImage.getWidth() == imgWidth && sourceImage.getHeight() == imgHeight)
  119.             return sourceImage;
  120.         int width = sourceImage.getWidth();
  121.         int height = sourceImage.getHeight();
  122.         Image img = Image.createImage(imgWidth, height);
  123.         Graphics graphics = img.getGraphics();
  124.         int ratio = (width << 16) / imgWidth;
  125.         int position = ratio / 2;
  126.         for (int i = 0; i < imgWidth; i++) {
  127.             graphics.setClip(i, 0, 1, height);
  128.             graphics.drawImage(sourceImage, i - (position >> 16), 0, Graphics.LEFT | Graphics.TOP);
  129.             position += ratio;
  130.         }
  131.         Image finalImage = Image.createImage(imgWidth, imgHeight);
  132.         graphics = finalImage.getGraphics();
  133.         ratio = (height << 16) / imgHeight;
  134.         position = ratio / 2;
  135.         for (int j = 0; j < imgHeight; j++) {
  136.             graphics.setClip(0, j, imgWidth, 1);
  137.             graphics.drawImage(img, 0, j - (position >> 16), Graphics.LEFT | Graphics.TOP);
  138.             position += ratio;
  139.         }
  140.         return finalImage;
  141.     }
  142.     /**
  143.      * Spliting the string according to the width without breaking the word except 
  144.      * when there is a big word which does not fit in the width available 
  145.      * @param str the text to be split.
  146.      * @param font the text font
  147.      * @param width width in which string is to be fit
  148.      * @return splited string 
  149.      */
  150.     public static String[] divideString(String str, GTantra font, int width) {
  151.         Vector vector = new Vector();
  152.         LineEnumeration emu = new LineEnumeration(font,str,width);
  153.         vector.addElement(str);
  154.         while(emu.hasMoreElements())
  155.         {
  156.             vector.addElement(emu.nextElement());
  157.         }
  158.         String data[] = new String[vector.size()];
  159.         for (int i = 0; i < vector.size(); i++) {
  160.             data[i] = vector.elementAt(i).toString();
  161.         }
  162.         return data;
  163.       
  164.     }
  165.     public static void fillTriangle(Graphics _g, int _x, int _y, int _width, int direction ) {
  166.         int stroke = _g.getStrokeStyle();
  167.         _g.setStrokeStyle(Graphics.SOLID);
  168.         for (int i = 0; i < _width >> 1; i++) {
  169.             switch (direction) {
  170.                 // previous
  171.                 case 0:
  172.                     _g.drawLine(_x + i, _y - i, _x + i, _y + i);
  173.                     break;
  174.                 //next
  175.                 case 1:
  176.                     _g.drawLine(_x - i, _y - i, _x - i, _y + i);
  177.                     break;
  178.                 // up
  179.                 case 2:
  180.                     _g.drawLine(_x - i, _y + i, _x + i, _y + i);
  181.                     break;
  182.                 // down
  183.                 case 3:
  184.                     _g.drawLine(_x - i, _y - i, _x + i, _y - i);
  185.                     break;
  186.             }
  187.         }
  188.         _g.setStrokeStyle(stroke);
  189.     }
  190.      /**
  191.      * Draws filled triangle
  192.      * @param startPtX   X coordinate of starting point of the triangle
  193.      * @param startPtY   Y coordinate of starting point of the triangle
  194.      * @param arrowDirection   decides the direction of arrow left/right/up/down
  195.      * @param arrowWidth  size of the arrow
  196.      * @param horizontal   decides the alignment of arrow horizontal/vertical
  197.      */
  198.     public static void drawFilledTriangle(Graphics g, int startPtX, int startPtY, boolean arrowDirection, int arrowWidth, boolean horizontal) {
  199.         int wdth = arrowWidth;
  200.         if (horizontal) {
  201.             /**horizontal arrow is to be drawn*/
  202.             int i = 0;
  203.             boolean var = true;
  204.             while (var == true) {
  205.                 /**left arrow is to be drawn*/
  206.                 if (arrowDirection == true) {
  207.                     g.drawLine(startPtX - i, startPtY - i, startPtX - i, wdth + i);
  208.                 /**right arrow is to be drawn*/
  209.                 } else {
  210.                     g.drawLine(startPtX + i, startPtY - i, startPtX + i, wdth + i);
  211.                 }
  212.                if ((startPtY - i) - (wdth + i) <= 1) {
  213.                     var = false;
  214.                 }
  215.                 i++;
  216.                 
  217.             }
  218.         } else {
  219.             /**vertical arrow is to be drawn*/
  220.             int i = 0;
  221.             boolean var = true;
  222.             while (var == true) {
  223.                 /**up arrow is to be drawn*/
  224.                 if (arrowDirection == true) {
  225.                     g.drawLine(startPtX + i, startPtY - i, startPtX + wdth - i, startPtY - i);
  226.                 /**down arrow is to be drawn*/
  227.                 } else {
  228.                     g.drawLine(startPtX + i, startPtY + i, startPtX + wdth - i, startPtY + i);
  229.                 }
  230.                 if (wdth - i == arrowWidth >> 1) {
  231.                     var = false;
  232.                 }
  233.                 i++;
  234.             }
  235.         }
  236.     }
  237.     public static String getEllipsisString(String str,int width,GTantra font)
  238.     {
  239.         if(str == null)
  240.             return null;
  241.         if(font.getStringWidth(str) > width )
  242.         {
  243.            
  244.             StringBuffer buffer = new StringBuffer();
  245.             for (int i = 0; i < str.length(); i++) {
  246.                if( font.getStringWidth(buffer.toString()) + font.getCharWidth(str.charAt(i)) < width)
  247.                {
  248.                    buffer.append(str.charAt(i));
  249.                }         
  250.                else
  251.                    break;
  252.             }
  253.             if(buffer.toString().length() <= 3)
  254.             {
  255.                 buffer.delete(0, buffer.length() -1);
  256.                 buffer.append("...");
  257.             }else
  258.             {
  259.                 buffer.delete(buffer.length()  - 3, buffer.length() );
  260.                 buffer.append("...");
  261.             }
  262.             return buffer.toString();
  263.         }
  264.         else
  265.             return null;
  266.     }
  267.     public static final String  months[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY" ,"JUNE","JULY" ,"AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
  268.     public static Date getCurrentDate()
  269.     {
  270.         return cal.getTime();
  271.     }
  272.     public static int getCurrentDay()
  273.     {
  274.         
  275.         return cal.get(Calendar.DAY_OF_MONTH);
  276.     }
  277.     public static int getCurrentMonth()
  278.     {
  279.         
  280.         return cal.get(Calendar.MONTH);
  281.     }
  282.     public static String getCurrentMonthString()
  283.     {
  284.         
  285.         return months[cal.get(Calendar.MONTH)].toUpperCase();
  286.     }
  287.     public static final int getCurrentYear()
  288.     {
  289.         
  290.         return cal.get(Calendar.YEAR);
  291.     }
  292.     public static final long MILLIES_IN_DAY = 24*60*60*1000;
  293.     static Calendar cal = Calendar.getInstance();
  294.     public static final int getNextDay(long time)
  295.     {
  296.         Date savedDate = cal.getTime();
  297.         Date date = new Date(time);
  298.         cal.setTime(date);
  299.         int day = getCurrentDay();
  300.         cal.setTime(savedDate);
  301.         return day;
  302.     }
  303.     public static final int getNextMonth(long time)
  304.     {
  305.         Date savedDate = cal.getTime();
  306.         Date date = new Date(time);
  307.         cal.setTime(date);
  308.         int month = getCurrentMonth();
  309.         cal.setTime(savedDate);
  310.         return month;
  311.     }
  312.     public static void printMilliesInfos(long tmp)
  313.     {
  314.             System.out.println("Day:"+Util.getNextDay(tmp));
  315.             System.out.println("month:"+Util.getNextMonth(tmp));
  316.             System.out.println("year:"+Util.getNextYear(tmp));
  317.             System.out.println("hour:"+Util.getNextHour(tmp));   
  318.             System.out.println("minute:"+Util.getNextMin(tmp));   
  319.     }
  320.      public static final int getNextMin(long time)
  321.     {
  322.         Date savedDate = cal.getTime();
  323.         Date date = new Date(time);
  324.         cal.setTime(date);
  325.         int min = cal.get(Calendar.MINUTE);
  326.         cal.setTime(savedDate);
  327.         return min;
  328.     }
  329.     public static final int getNextHour(long time)
  330.     {
  331.         Date savedDate = cal.getTime();
  332.         Date date = new Date(time);
  333.         cal.setTime(date);
  334.         int hour = cal.get(Calendar.HOUR_OF_DAY);
  335.         cal.setTime(savedDate);
  336.         return hour;
  337.     }
  338.     public static final int getNextYear(long time)
  339.     {
  340.         Date savedDate = cal.getTime();
  341.         Date date = new Date(time);
  342.         cal.setTime(date);
  343.         int year = getCurrentYear();
  344.         cal.setTime(savedDate);
  345.         return year;
  346.     }
  347.      public static final String getNextMonthString(long time)
  348.     {
  349.         Date savedDate = cal.getTime();
  350.         Date date = new Date(time);
  351.         cal.setTime(date);
  352.         String month = getCurrentMonthString();
  353.         cal.setTime(savedDate);
  354.         return month;
  355.     }
  356.     public static boolean isValidDay(String day)
  357.     {
  358.         try {
  359.             int dayValue = Integer.parseInt(day);
  360.             if(dayValue <= 0 || dayValue > 31)
  361.                 return false;
  362.             else
  363.                 return true;
  364.         } catch (Exception e) {
  365.             return false;
  366.         }
  367.     }
  368.     public static boolean isValidMonth(String month)
  369.     {
  370.         try {
  371.             int dayValue = Integer.parseInt(month);
  372.             if(dayValue <= 0 || dayValue > 12)
  373.                 return false;
  374.             else
  375.                 return true;
  376.         } catch (Exception e) {
  377.             return false;
  378.         }
  379.     }
  380.     public static void showInfoAlert(String str)
  381.     {
  382.         Alert alert = new Alert("Information",str,null,AlertType.INFO);
  383.         alert.setTimeout(Alert.FOREVER);
  384.         FrameWorkMidlet.getDisplay().setCurrent(alert, DisplayManager.getInst());
  385.     }
  386.     public static void showErrorAlert(String str)
  387.     {
  388.         Alert alert = new Alert("Error",str,null,AlertType.ERROR);
  389.         alert.setTimeout(Alert.FOREVER);
  390.         FrameWorkMidlet.getDisplay().setCurrent(alert, DisplayManager.getInst());
  391.     }
  392.     public static int getMaxDayOfMonth(int month,int year)
  393.      {
  394.        int maxDays = 30;
  395.         switch(month){
  396.             case 1:
  397.             case 3:
  398.             case 5:
  399.             case 7:
  400.             case 8:
  401.             case 10:
  402.             case 12:
  403.                 maxDays = 31;
  404.             break;
  405.             case 4:
  406.             case 6:
  407.             case 9:
  408.             case 11:
  409.                 maxDays = 30;
  410.             break;
  411.             case 2:
  412.                 if((year%4 == 0 && year%100 != 0)||(year%400==0)){
  413.                     maxDays = 29;
  414.                 }
  415.                 else{
  416.                     maxDays = 28;
  417.                 }
  418.             break;    
  419.         }
  420.         return maxDays;
  421.     }
  422.     public static boolean isValidDate(int day,int month,int year)
  423.     {
  424.        int totalDays = getMaxDayOfMonth(month, year);
  425.        if(totalDays < day)
  426.            return false;
  427.        else
  428.            return true;
  429.     }
  430.      public static long getDateMilis(int year, int month, int day) {
  431.         Calendar c = Calendar.getInstance();
  432.         Date actualDate = c.getTime();
  433.         c.set(Calendar.YEAR, year);
  434.         c.set(Calendar.MONTH, month);
  435.         c.set(Calendar.DATE, day);
  436.         Date date = c.getTime();
  437.         c.setTime(actualDate);
  438.         return (date.getTime());
  439.     }
  440.      /**
  441.      * Get date in miliseconds with respect to 1st Jan 2009 00:00:00
  442.      * @param year
  443.      * @param month
  444.      * @param day
  445.      * @param hour
  446.      * @param minutes
  447.      * @return Miliseconds
  448.      */
  449.     public static long getDateMilis(int year, int month, int day, String hoursMins) {
  450.         int hour = Integer.parseInt(hoursMins.substring(0, hoursMins.indexOf(":")));
  451.         hoursMins = hoursMins.substring(hoursMins.indexOf(":") + 1, hoursMins.length());
  452.         int minutes = Integer.parseInt(hoursMins);
  453.         Calendar c = Calendar.getInstance();
  454.         Date actualDate = c.getTime();
  455.         c.set(Calendar.YEAR, year);
  456.         c.set(Calendar.MONTH, month);
  457.         c.set(Calendar.DATE, day);
  458.         c.set(Calendar.HOUR_OF_DAY, hour);
  459.         c.set(Calendar.MINUTE, minutes);
  460.         c.set(Calendar.SECOND, 0);
  461.         c.set(Calendar.MILLISECOND, 0);
  462.         Date date = c.getTime();
  463.         c.setTime(actualDate);
  464.         return (date.getTime());
  465.     }
  466.     public static String[] split(String str,String dele)
  467.     {
  468.         str = new String(str.trim());
  469.         Vector vect = new Vector();
  470.         int index = 0;
  471.         while((index = str.indexOf(dele))!= -1)
  472.         {
  473.             vect.addElement(str.substring(0, index));
  474.             index += dele.length();
  475.             str = str.substring(index, str.length());
  476.         }
  477.         vect.addElement(str);
  478.         String tmp[] = new String[vect.size()];
  479.         for (int i = 0; i < vect.size(); i++) {
  480.           tmp[i] = vect.elementAt(i).toString();
  481.           if( (index = tmp[i].indexOf("##"))!= -1)
  482.           {
  483.               StringBuffer buffer = new StringBuffer(tmp[i]);
  484.               buffer.deleteCharAt(index);
  485.               buffer.deleteCharAt(index);
  486.               buffer.insert(index , " ");
  487.                tmp[i] = buffer.toString();
  488.           }
  489.         }
  490.         return tmp;
  491.     }
  492.     /** 
  493.   * Write the given string into log file of application.
  494.   * @param      str     String which is to be write in log file of application. 
  495.   */
  496.     public static RecordStore store = null;
  497.   public static void loging(String str)
  498.     {
  499.       
  500.         byte[] by=str.getBytes();
  501.      try {
  502.                     if(store == null)
  503.                      store=RecordStore.openRecordStore("LogReader", true);
  504.                     store.addRecord(by, 0, by.length);
  505.             } catch (RecordStoreNotOpenException e) {
  506.                     // TODO Auto-generated catch block
  507.                     e.printStackTrace();
  508.             } catch (RecordStoreFullException e) {
  509.                     // TODO Auto-generated catch block
  510.                     e.printStackTrace();
  511.             } catch (RecordStoreException e) {
  512.                     // TODO Auto-generated catch block
  513.                     e.printStackTrace();
  514.             }
  515.             catch (Exception e) {
  516.                  e.printStackTrace();
  517.             }
  518. }
  519.   /**
  520.    * will return random number including min and max value
  521.    * @param min
  522.    * @param max
  523.    * @return
  524.    */
  525.  public static int getRandomNumber(int min,int max) 
  526.  {
  527.      int num = Math.abs(random.nextInt());
  528.      return min + (num % (max - min + 1));
  529.  }
  530.  public static boolean isInRect(UIControl control,int x,int y)
  531.  {
  532.     return isInRect(control.getX() , control.getY() , control.getWidth() , control.getHeight() , x, y);
  533.  }
  534.  public static boolean isInRect(int xPos,int yPos, int width,int height , int x,int y )
  535.  {
  536.    if(x >= xPos && x <= xPos + width && y >= yPos && y <= yPos + height)
  537.    {
  538.        return true;
  539.    }
  540.    return false;
  541.  }
  542.  public static int getApproxDistance( int x1, int y1,int x2, int y2 )
  543. {
  544.    int dx = Math.abs(x1 - x2);
  545.    int dy = Math.abs(y1 - y2);
  546.    int min, max;
  547.    if ( dx < dy )
  548.    {
  549.       min = dx;
  550.       max = dy;
  551.    } else {
  552.       min = dy;
  553.       max = dx;
  554.    }
  555.    // coefficients equivalent to ( 123/128 * max ) and ( 51/128 * min )
  556.    return ((( max << 8 ) + ( max << 3 ) - ( max << 4 ) - ( max << 1 ) +
  557.             ( min << 7 ) - ( min << 5 ) + ( min << 3 ) - ( min << 1 )) >> 8 );
  558. }