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

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 javax.microedition.lcdui.Graphics;
  7. /**
  8.  *
  9.  * @author santoshsalunke
  10.  */
  11. public class TextControl extends UIControl {
  12.     String[] data;
  13.     GTantra font;
  14.     int alignment;
  15.     private int fontPallet;
  16.     private int titlePallet=0;
  17.     private int verticalPadding = 3;
  18.     int charHeight;
  19.     GTantra selectionFont;
  20.     public TextControl(String text, int width, GTantra font, int align,boolean justify) {
  21.     
  22.         if(justify)
  23.         {
  24.             data = Util.divideString(text, font, width - 10);
  25.         }else
  26.         {
  27.             data = Util.divideString(text, font, width - ( (getBorderThickness() + 2) * 2));    
  28.         }
  29.         
  30.         alignment = align;
  31.         this.font = font;
  32.         setWidth(width);
  33.        
  34.          for (int i = 0; i <data.length && justify; i++) {
  35.             data[i] = getJustifiedText(data[i]);
  36.           }
  37.         charHeight = Util.getMaxCharHeight(font,data[0]);
  38.          int k = (charHeight + verticalPadding) * (data.length - 1);
  39.         setHeight(k);
  40.     }
  41.     public void setTitlePallet(int titlePallet) {
  42.         this.titlePallet = titlePallet;
  43.     }
  44.     
  45.     public void setAlignment(int alignment) {
  46.         this.alignment = alignment;
  47.     }
  48.     public void setPallet(int pallet) {
  49.         this.fontPallet = pallet;
  50.     }
  51.     public GTantra getFont() {
  52.         return font;
  53.     }
  54.     public int getCharHeight() {
  55.         return charHeight;
  56.     }
  57.     public String[] getTextArry()
  58.     {
  59.         return data;
  60.     }
  61.     
  62.    String getJustifiedText(String str)
  63.    {
  64.        int stringWidth = font.getStringWidth(str);
  65.        int spaceCharWidth = font.getSpaceCharactorWidth();
  66.        int totalSpaceChars  = (getWidth() - stringWidth - 10) / spaceCharWidth;
  67.        totalSpaceChars -= spaceCharWidth;
  68.        String array[] = Util.split(str, " ");
  69.        if(array.length == 1)
  70.            return str;
  71.        int spaceForOne = totalSpaceChars / (array.length - 1);
  72.        int assigned = 0;
  73.        for (int i = 0; i < array.length - 1; i++) {
  74.            array[i] += " ";
  75.            if(i == array.length - 2)
  76.            {
  77.                array[i] += getSpaceString(totalSpaceChars - assigned);
  78.            }else{
  79.                array[i] += getSpaceString(spaceForOne);
  80.                assigned += spaceForOne;
  81.            }
  82.            
  83.        }
  84.        String mainString = "";
  85.        for (int i = 0; i < array.length; i++) {
  86.            mainString += array[i];
  87.            
  88.        }
  89.        return mainString;
  90.        
  91.    }
  92.    String getSpaceString(int cnt)
  93.    {
  94.        String str = "";
  95.        for (int i = 0; i < cnt; i++) {
  96.            str += " ";
  97.        }
  98.        return str;
  99.        
  100.    }
  101.     public void setText(String text){
  102.         data = Util.divideString(text, font, width);
  103.     }
  104.     public String getText(){
  105.         return data[0];
  106.     }
  107.    
  108.     
  109.     public void paint(Graphics g) {
  110.         try {
  111.             
  112.         GTantra tmpFont = font;    
  113.         if(isSelected() && selectionFont != null)    
  114.         {
  115.             tmpFont = selectionFont;
  116.         }
  117.         int tempY = 2;
  118.         int tempX = 2;
  119.         font.setCurrentPallete(fontPallet);
  120.         if (alignment == GTantra.TEXT_HCENTER) {
  121.             tempX = width >> 1;
  122.         } else if (alignment == GTantra.TEXT_VCENTER_HCENTER) {
  123.             tempX = width >> 1;
  124.             tempY =( height - ((data.length - 1 ) * (charHeight + verticalPadding))) >>1;
  125.         }
  126.         if (selected && bgColor != (-1)) {
  127.             g.setColor(bgColor);
  128.             g.fillRect(0, 0, width, height - 2);
  129.         }
  130.         for (int i = 1; i < data.length; i++) {
  131.                 int transY = g.getTranslateY();
  132.                 if( (transY + tempY + font.getFontHeight() < 0))
  133.                 {
  134.                     tempY += (font.getFontHeight()+1);
  135.                     continue;
  136.                 }
  137.                 if(transY + tempY > DisplayManager.getInst().getHeight())
  138.                 {
  139.                     break;
  140.                 }
  141.                 if(alignment == GTantra.TEXT_HCENTER || alignment == GTantra.TEXT_VCENTER_HCENTER)
  142.                 {
  143.                     tmpFont.drawString(g, data[i], tempX, tempY, GTantra.TEXT_HCENTER);
  144.                 }else{
  145.                      tmpFont.drawString(g, data[i], tempX, tempY, GTantra.TEXT_LEFT);
  146.                 }
  147.                 
  148.                 tempY += (charHeight+verticalPadding);
  149.             }
  150.             
  151.        
  152.         } catch (Exception e) {
  153.             e.printStackTrace();
  154.         }
  155.     }
  156.     public void setSelectionFont(GTantra selectionFont) {
  157.         this.selectionFont = selectionFont;
  158.     }
  159.     public void setVerticalPadding(int verticalPadding) {
  160.         this.verticalPadding = verticalPadding;
  161.     }
  162. }