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

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. import javax.microedition.lcdui.Image;
  8. /**
  9.  *
  10.  * @author swaroop_kumar
  11.  */
  12. public abstract class UIControl {
  13.   protected int width, height,x,y;
  14.   protected int selectionBorderColor  = -1;
  15.   protected int borderColor = -1;
  16.   protected int bgColor = -1;
  17.   protected int selectionBgColor = -1;
  18.   protected Image bgImage,selectionBgImage;
  19.   boolean visible = true;
  20.   boolean selected;
  21.   boolean selectable = true;    
  22.   private ScrollableContainer parent;
  23.   private EventManager eventManager;
  24.   public static final int RECT_TYPE = 0;
  25.   public static final int ROUND_RECT_TYPE = 1;
  26.   private int bgType = RECT_TYPE;
  27.   private static final int ARC_RADIOUS_WIDTH = 22;
  28.   private static final int ARC_RADIOUS_HEIGHT = 22;
  29.   UIControl storeControl;
  30.   private int borderThickness = 1;
  31.   protected boolean pointerDragged(int x, int y) {
  32.     return false;
  33.   }
  34.   BaseTimer timer;
  35.   protected boolean pointerReleased(int x, int y) {
  36.     storeControl = this;  
  37.     if(getEventListener() != null)
  38.     {
  39.         DisplayManager.getInst().setBlockKeyPad(true);
  40.         TimerInterface timerBase = new TimerInterface() {
  41.                 public void task(int data) {
  42.                      getEventListener().event(EventManager.FIRE_PRESSED, storeControl,null);
  43.                      DisplayManager.getInst().setBlockKeyPad(false);
  44.                 }
  45.             };
  46.        timer = BaseTimer.schedule(600, timerBase, 0);
  47.        
  48.     }
  49.     return true;
  50.   }
  51.   public EventManager getEventListener()
  52.   {
  53.       return eventManager;
  54.   }
  55.    public void setEventManager(EventManager manager)
  56.     {
  57.         eventManager = manager;
  58.     }
  59.     public void setVisible(boolean visible) {
  60.         this.visible = visible;
  61.     }
  62.     public boolean isVisible() {
  63.         return visible;
  64.     }
  65.     public void setBgImage(Image bgImage) {
  66.         this.bgImage = bgImage;
  67.         if(bgImage != null && (width < bgImage.getWidth() || height < bgImage.getHeight()))
  68.         {
  69.             setWidth(bgImage.getWidth());
  70.             setHeight(bgImage.getHeight());
  71.         }
  72.     }
  73.     public Image getBgImage() {
  74.         return bgImage;
  75.     }
  76.   
  77.     public ScrollableContainer getParent() {
  78.         return parent;
  79.     }
  80.     public void setParent(ScrollableContainer parent) {
  81.         this.parent = parent;
  82.     }
  83.   
  84.     public boolean isSelected() {
  85.         return selected;
  86.     }
  87.     public boolean isSelectable() {
  88.         return selectable;
  89.     }
  90.     public void setSelectable(boolean selectable) {
  91.         this.selectable = selectable;
  92.     }
  93.     public abstract void paint(Graphics g);
  94.   
  95.     public void setPoistion(int x,int y)
  96.     {
  97.         setX(x);setY(y);
  98.     }
  99.     public void setBgType(int bgType) {
  100.         this.bgType = bgType;
  101.     }
  102.     public boolean keyRepeated(int key)
  103.     {
  104.         return keyPressed(key);
  105.     }
  106.     public void paintUI(Graphics g)
  107.     {
  108.         if(!isVisible())
  109.             return;
  110.         g.translate(x, y);
  111.         int clipX, clipY , clipWidth,clipHeight;
  112.         clipX = g.getClipX();
  113.         clipY = g.getClipY();
  114.         clipWidth = g.getClipWidth();
  115.         clipHeight = g.getClipHeight();
  116.         g.clipRect(0, 0, width, height);
  117.         paintBackground(g);
  118.         paint(g);
  119.         paintForground(g);
  120.         g.setClip(clipX, clipY, clipWidth, clipHeight);
  121.         g.translate(-x, -y);
  122.         
  123.     }
  124.     public int getBorderThickness()
  125.     {
  126.         return this.borderThickness;
  127.     }
  128.     
  129.     protected final void paintForground(Graphics g)
  130.     {
  131.         if(selected && selectionBorderColor != -1)
  132.         {
  133.             g.setColor(selectionBorderColor);
  134.             for (int i = 0; i < borderThickness; i++) {
  135.                 if(bgType == ROUND_RECT_TYPE)
  136.                 {
  137.                     g.drawRoundRect(i, i, width - 1 - (i << 1), height - 1 - (i << 1), ARC_RADIOUS_WIDTH, ARC_RADIOUS_HEIGHT);
  138.                 }else{
  139.                     g.drawRect(i, i, width - 1 - (i << 1), height - 1 - (i << 1));
  140.                 }
  141.             }
  142.             
  143.         }
  144.         else if(borderColor != -1)
  145.         {
  146.             g.setColor(borderColor);
  147.             if(bgType == ROUND_RECT_TYPE)
  148.             {
  149.                 g.drawRoundRect(0, 0, width - 1, height - 1, ARC_RADIOUS_WIDTH, ARC_RADIOUS_HEIGHT);
  150.             }else{
  151.                 g.drawRect(0, 0, width - 1 , height - 1);
  152.             }
  153.         }
  154.     }
  155.     protected final void paintBackground(Graphics g)
  156.     {
  157.         
  158.         if(selected && selectionBgColor != -1)
  159.         {
  160.             g.setColor(selectionBgColor);
  161.             if(bgType == ROUND_RECT_TYPE)
  162.             {
  163.                 g.fillRoundRect(0, 0, width - 1, height - 1, ARC_RADIOUS_WIDTH, ARC_RADIOUS_HEIGHT);
  164.             }else{
  165.                 g.fillRect(0, 0, width - 1 , height - 1);
  166.             }
  167.             
  168.             
  169.         }
  170.         else if(bgColor != -1)
  171.         {
  172.             g.setColor(bgColor);
  173.             if(bgType == ROUND_RECT_TYPE)
  174.             {
  175.                 g.fillRoundRect(0, 0, width - 1, height - 1, ARC_RADIOUS_WIDTH, ARC_RADIOUS_HEIGHT);
  176.             }else{
  177.             g.fillRect(0, 0, width - 1 , height - 1);
  178.             }
  179.         }
  180.         if(selectionBgImage != null && isSelected())
  181.         {
  182.             g.drawImage(selectionBgImage, (width - selectionBgImage.getWidth()) >> 1, (height - selectionBgImage.getHeight()) >> 1, 0);
  183.         }
  184.         else if(bgImage != null)
  185.         {
  186.             g.drawImage(bgImage, (width - bgImage.getWidth()) >> 1, (height - bgImage.getHeight()) >> 1, 0);
  187.         }
  188.     }
  189.     public void setSelectionBgImage(Image selectionBgImage) {
  190.         this.selectionBgImage = selectionBgImage;
  191.         if(selectionBgImage != null && (width < selectionBgImage.getWidth() || height < selectionBgImage.getHeight()))
  192.         {
  193.             setWidth(selectionBgImage.getWidth());
  194.             setHeight(selectionBgImage.getHeight());
  195.         }
  196.     }
  197.     
  198.     public int getHeight() {
  199.         return height;
  200.     }
  201.     public void setHeight(int height) {
  202.         this.height = height;
  203.     }
  204.     public int getWidth() {
  205.         return width;
  206.     }
  207.     public void setSelected(boolean selected)
  208.     {
  209.        
  210.         this.selected = selected;
  211.     }
  212.     public void setWidth(int width) {
  213.         this.width = width;
  214.     }
  215.     public void showNotify()
  216.     {
  217.         selected = false;
  218.     }
  219.     public void hideNotify()
  220.     {
  221.          
  222.         selected = false;
  223.     }
  224.     public boolean keyPressed(int keycode)
  225.     {
  226.         int gameKey = DisplayManager.getInst().getGameAction(keycode);
  227.         if(getEventListener() != null && (gameKey == KeyEvent.KEY_SOFT_CENTER || keycode == KeyEvent.KEY_SOFT_CENTER || keycode == DisplayManager.KEY_NUM5 ))
  228.         {
  229.             getEventListener().event(EventManager.FIRE_PRESSED, this,null);
  230.         }
  231.         return false;
  232.     }
  233.     public int getX() {
  234.         return x;
  235.     }
  236.     public void setX(int x) {
  237.         this.x = x;
  238.     }
  239.     public int getY() {
  240.         return y;
  241.     }
  242.     public void setY(int y) {
  243.         this.y = y;
  244.     }
  245.     public boolean keyReleased(int keycode)
  246.     {
  247.         return false;
  248.     }
  249.     public int getBgColor() {
  250.         return bgColor;
  251.     }
  252.     public void setBgColor(int bgColor) {
  253.         this.bgColor = bgColor;
  254.     }
  255.     public int getBorderColor() {
  256.         return borderColor;
  257.     }
  258.     public void setBorderColor(int borderColor) {
  259.         this.borderColor = borderColor;
  260.     }
  261.     public int getSelectionBgColor() {
  262.         return selectionBgColor;
  263.     }
  264.     public void setSelectionBgColor(int selectionBgColor) {
  265.         this.selectionBgColor = selectionBgColor;
  266.     }
  267.     public Image getSelectionBgImage() {
  268.         return selectionBgImage;
  269.     }
  270.     public int getSelectionBorderColor() {
  271.         return selectionBorderColor;
  272.     }
  273.     public void setSelectionBorderColor(int selectionBorderColor) {
  274.         this.selectionBorderColor = selectionBorderColor;
  275.     }
  276. }