亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? softbutton.java

?? 一個(gè)不錯(cuò)的WML瀏覽器
?? JAVA
字號(hào):
/********************************************************************
 * 項(xiàng)目名稱				:<b>足球項(xiàng)目j2me客戶端</b>			<br/>
 * 
 * Copyright 2005-2006 Teesoo. All rights reserved
 ********************************************************************/
package org.wuhua.wap.ui;

import java.util.Vector;

import javax.microedition.lcdui.Graphics;

import org.wuhua.wap.Resources;
import org.wuhua.wap.log.Logger;
import org.wuhua.wap.ui.core.Platform;
import org.wuhua.wap.ui.event.CommandListener;
import org.wuhua.wap.util.GraphicsUtil;

/**
 * <b>類名:SoftButton.java</b> </br> 編寫(xiě)日期: 2006-9-14 <br/> 
 * 程序功能描述: 個(gè)人認(rèn)為這里的代碼設(shè)計(jì)的不好,重復(fù)代碼過(guò)多,應(yīng)該重構(gòu),應(yīng)該把那些命令的繪制當(dāng)做一個(gè)容器來(lái)管理<br/> Demo:
 * <br/> Bug: <br/>
 * 
 * 程序變更日期 :<br/> 變更作者 :<br/> 變更說(shuō)明 :<br/>
 * 
 * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
 */
public class SoftButton extends Part {
	Logger logger = Logger.getLogger("SoftButton");

	/** 軟鍵 * */

	private CommandListener commandListener;

	private Vector left;

	private Command right;

	private Command middle;

	private boolean isSelectLeftCmd;
	private boolean isSelectLeftCmdItem;
	
	private int leftCmdItemIndex;
	private int leftItemIndexStart;

	private int leftCmdIndex;

	private int numOfEls;
	private int itemNumOfEls;

	private int startIndex;

	private int paintSize = 5;
	private int itemPaintSize = 5;
	private Command currentCmd;
	
	private SelectedPart selected;
	
    private String menu = "菜單";
    private String select = "選擇";
    private String cancel = "取消";
	/**
	 * 構(gòu)造固定位置的軟鍵條
	 * 
	 */
	public SoftButton() {
		super(0, Platform.HEIGHT - 20, Platform.WIDTH, Platform.HEIGHT);
		selected = new SelectedPart();
	}

	/**
	 * 添加一列,我的想法是讓左列軟件可以多個(gè)
	 * 
	 * @param item
	 */
	public void addCommand(Command cmd) {
		if (cmd.type == Command.LEFT)
			addCommandLeftImpl(cmd);
		else if (cmd.type == Command.RIGHT) {
			this.right = cmd;
		} else if (cmd.type == Command.MIDDLE) {

			this.middle = cmd;
		}

	}

	/**
	 * 推進(jìn)去
	 * 
	 * @param cmd
	 */
	private void addCommandLeftImpl(Command cmd) {
		if (left == null)
			left = new Vector();
		left.addElement(cmd);
		numOfEls = left.size();

	}

	/**
	 * 判斷當(dāng)前選擇條是否到了底部,經(jīng)過(guò)用戶的選擇,這些選擇條會(huì)不斷的變化</br> 變化的依據(jù)是當(dāng)selectPosition >=
	 * viewPart[HEIGHT]*/
	private void changeSelectIndex(){
		int num = (this.paintSize < numOfEls)?paintSize:numOfEls;//取可顯示的菜單項(xiàng)數(shù)目
		if (leftCmdIndex>num-1)
		{
			startIndex++;
			leftCmdIndex=(byte)(num-1);
		}

		if (leftCmdIndex < 0)
		{
			if (startIndex>0)
			{
				leftCmdIndex =0;
				startIndex--;
			}
			else
			{
				startIndex = numOfEls-num;
				leftCmdIndex=num-1;
			}

		}
		if (startIndex+ leftCmdIndex > numOfEls -1)
		{
			startIndex= 0;
			leftCmdIndex = 0;
		}
	}

	// 判斷是否存在這個(gè)命令,如果為空,或者標(biāo)題為""則表示不存在
	private boolean cmdIsExist(Command cmd) {
		if (cmd == null || cmd.equals(""))
			return false;
		else
			return true;

	}

	private void enterAction() {
		if(this.isSelectLeftCmd){
			leftAction();
		}
		
	}

	// 填充cmds區(qū)域
	private void fillCmdsClip(Graphics g) {

		if (Platform.HEIGHT - 20 > this.view[HEIGHT]) {
			view[Y] = Platform.HEIGHT - 20;
			view[HEIGHT] = Platform.HEIGHT;
		}
		g.setColor(bgColor);
		g.fillRect(view[X], view[Y], view[WIDTH], view[HEIGHT]);

		g.setColor(0xFFFFFF);
		// 畫(huà)條白線
		g.drawLine(view[X], view[Y] - 1, view[WIDTH], view[Y] - 1);

	}

	/**
	 * 填充顏色并且繪制左列菜單出來(lái)
	 * 
	 */
	private void fillLeftBackground(Graphics g) {
		int size =  paintSize >  numOfEls?  numOfEls:this.paintSize + startIndex;
		 
		int height = (paintSize>numOfEls?numOfEls:paintSize) * font.getHeight() + 2;
		int width = 60;

		int startY = Platform.HEIGHT - 23 - height;
		
		
		paintCmdNameImpl(g,size,this.startIndex,this.leftCmdIndex,0, startY,width, height,left);
		
		paintLeftCmdItem(g);
	}

	/**
	 * 把那些cmd繪制出來(lái)
	 * @param g
	 * @param startX
	 * @param startY
	 * @param items
	 */
	private void paintCmdNameImpl(Graphics g,int size, int startIndex, int selectIndex, int startX, int startY,int width, int height,Vector items) {
		
		GraphicsUtil.drawSreenBorder(g, 0x000000, startX, startY-2, width+3, height+3);
		GraphicsUtil.drawSreenBorder(g, 0xFFFFFF, startX + 1, startY-1 , width+1, height+1);
		GraphicsUtil.fillSreen(g, this.bgColor, startX + 2, startY, width, height);

		// 繪制選擇條
		//GraphicsUtil.fillSreen(g,  0xFFFFF, startX + 2, startY + font.getHeight()*selectedIndex  , 
			//	width, font.getHeight()+2 );
		selected.changePosition(startX + 2, startY + font.getHeight()*selectIndex, width, font.getHeight()+2);
		selected.paint(g);

		g.setColor(fontColor);
		
		

		for(int i =startIndex,j=0; i< size; i++, j++){
			Command cmd;
			if( selectIndex == j){
				cmd = (Command) items.elementAt(selectIndex+startIndex);
			}else{
				cmd = (Command) items.elementAt(i);
			}
			g.drawString(cmd.getName(), startX + 10, startY + 2 + font.getHeight() * j,
					Graphics.TOP | Graphics.LEFT);
			cmd.setHeight(startY + 2 + font.getHeight() * j);
			//繪制箭頭
			if(cmd.hasItem()){
				g.drawImage(Resources.ARROW, font.stringWidth(cmd.getName()) + startX + 20, startY + 2 + font.getHeight() * j + 4,
						Graphics.TOP | Graphics.LEFT);
			}
		}
	}
	

	/**
	 * 繪制CmdItem。
	 * @param g
	 */
	private void paintLeftCmdItem(Graphics g) {
		 
		 if(this.isSelectLeftCmdItem){
			 currentCmd =   (Command)left.elementAt(this.leftCmdIndex + this.startIndex);
			 if(currentCmd.hasItem()){	
				 Vector items = currentCmd.getItems();
				 itemNumOfEls = items.size();
				 int size =  itemPaintSize > itemNumOfEls ? itemNumOfEls:this.itemPaintSize + this.leftItemIndexStart;
				 int height = (itemPaintSize>itemNumOfEls?itemNumOfEls:itemPaintSize) * font.getHeight() + 2;
				 int width = 60;
				 
				
				 paintCmdNameImpl(g,size,this.leftItemIndexStart,this.leftCmdItemIndex,50, currentCmd.getHeight() - 30,width, height,items);
			 }
		 }
		
	}

	/**
	 * 友鍵動(dòng)作
	 * 
	 */
	private void leftAction() {

		if(left.size() == 1){
			commandListener.commandAction((Command) left.elementAt(0));
			return;
		}
		
		if (isSelectLeftCmd) {
			Command cmd = (Command) left.elementAt(leftCmdIndex  + startIndex);
			if(cmd.hasItem()){
				if(isSelectLeftCmdItem){
					Vector items = cmd.getItems();
					cmd = (Command)items.elementAt(this.leftCmdItemIndex + this.leftItemIndexStart);
					 
					commandListener.commandAction(cmd);
					isSelectLeftCmdItem = false;
				}else{
					isSelectLeftCmdItem = true;
				}
				
			}else{
				commandListener.commandAction(cmd);
			}
			
			logger.debug(cmd.getName());
			
			if(!isSelectLeftCmdItem){
				isSelectLeftCmd = false;
				return;
			} 
		}
		this.isSelectLeftCmd = true;
		 

	}

	/**
	 * 左列上下動(dòng)作
	 * @param keyCode
	 */
	private void leftUpAndDown(int keyCode) {
		if(!isSelectLeftCmd)
			return;
		if(!isSelectLeftCmdItem)
			leftCmdAction(keyCode); 
		else
			leftCmdItemUpAndDown(keyCode);

	}

	private void leftCmdAction(int keyCode) {
		if(this.numOfEls == 0)
			return;
		switch (keyCode) {

		case Platform.KEY_UP: {
			leftCmdIndex--;
			break;
		}
		case Platform.KEY_DOWN: {
			leftCmdIndex++;

			break;
		}
		}

		changeSelectIndex();
	}
	
	/**
	 * 左列上下動(dòng)作
	 * @param keyCode
	 */
	private void leftCmdItemUpAndDown(int keyCode) {
		if(this.itemNumOfEls == 0)
			return;
		switch (keyCode) {

		case Platform.KEY_UP: {
			leftCmdItemIndex--;
			break;
		}
		case Platform.KEY_DOWN: {
			leftCmdItemIndex++;
			break;
		}
		}

		changeSelectLeftItmeIndex(); 

	}
	
	

	private void changeSelectLeftItmeIndex() {
		int num = (this.itemPaintSize < itemNumOfEls)?itemPaintSize:itemNumOfEls;//取可顯示的菜單項(xiàng)數(shù)目
		if (leftCmdItemIndex>num-1)
		{
			leftItemIndexStart++;
			leftCmdItemIndex=(byte)(num-1);
		}

		if (leftCmdItemIndex < 0)
		{
			if (leftItemIndexStart>0)
			{
				leftCmdItemIndex =0;
				leftItemIndexStart--;
			}
			else
			{
				leftItemIndexStart = itemNumOfEls-num;
				leftCmdItemIndex=num-1;
			}

		}
		if (leftItemIndexStart+ leftCmdItemIndex > itemNumOfEls -1)
		{
			leftItemIndexStart= 0;
			leftCmdItemIndex = 0;
		}
		
	}

	/**
	 * 按鈕的動(dòng)作
	 */
	public void onClick(int keyCode) {

		if (this.commandListener == null)
			return;

		if (keyCode == Platform.KEY_SOFT_LEFT) {
			leftAction();
		} else if (keyCode == Platform.KEY_SOFT_RIGHT && cmdIsExist(right)) {
			rightAction();
		} else if (keyCode == Platform.KEY_ENTER) {
			enterAction();

		}else if(keyCode == Platform.KEY_UP || keyCode == Platform.KEY_DOWN){
			leftUpAndDown(keyCode);
		}else if(keyCode == Platform.KEY_RIGHT || keyCode == Platform.KEY_LEFT){
		 
			leftItemLeftAndRight(keyCode);
			 
		}

	}

	/**
	 * 左列菜單左右事件
	 * @param keyCode
	 */
	private void leftItemLeftAndRight(int keyCode) {	 
		 currentCmd = (Command) left.elementAt(leftCmdIndex  + startIndex);
		if(!currentCmd.hasItem()
				|| this.numOfEls <=0)
			return;
		switch (keyCode) {

		case Platform.KEY_RIGHT: {
			isSelectLeftCmdItem = true;
			break;
		}
		case Platform.KEY_LEFT: {
			isSelectLeftCmdItem = false;
			this.itemNumOfEls = 0;
			this.leftCmdItemIndex = 0;
			this.leftItemIndexStart = 0;
			break;
		}
		}
	}

	public void paint(Graphics g) {
		//獲取Form的字體,保存到下面
		this.font = g.getFont();
		paintCmdsImpl(g);

	}
	/**
	 * 繪制cmds
	 */
	private void paintCmdsImpl(Graphics g) {
		fillCmdsClip(g);
		paintCmdNames(g);
	}
	
	private void paintCmdNames(Graphics g) {
		g.setFont(this.font);

		g.setColor(fontColor);

		if (left != null) {
			// 如果選擇列表的時(shí)候,要繪制取消跟選擇所以就只好return
			if (isSelectLeftCmd) {
				paintLeftImpl(g);
				paintSelectAndCancel(g);
				return;
			} else {
				if(left.size()== 1){
					g.drawString(((Command)left.elementAt(0)).getName(), view[X], view[Y] + (20-font.getHeight())/2, Graphics.LEFT
							| Graphics.TOP);
				}else{
					g.drawString(menu, view[X], view[Y] + (20-font.getHeight())/2, Graphics.LEFT
							| Graphics.TOP);
				}
				
			}
		}

		if (middle != null) {
			g.drawString(middle.name, view[WIDTH] / 2, view[Y] + (20-font.getHeight())/2,
					Graphics.HCENTER | Graphics.TOP);
		}
		if (right != null) {
			g.drawString(right.name, view[WIDTH] - 2, view[Y] + (20-font.getHeight())/2, Graphics.TOP
					| Graphics.RIGHT);
		}
	}



	/**
	 * 繪制菜單的實(shí)現(xiàn)
	 * 
	 * @param g
	 */
	private void paintLeftImpl(Graphics g) {
		if (left == null)
			return;
		fillLeftBackground(g);

	}

	/*
	 * 繪制選擇跟取消
	 */
	private void paintSelectAndCancel(Graphics g) {
		g.drawString(select, view[X], view[Y] + (20-font.getHeight())/2, Graphics.LEFT | Graphics.TOP);
		g.drawString(cancel, view[WIDTH] - 2, view[Y] + (20-font.getHeight())/2, Graphics.TOP
				| Graphics.RIGHT);
	}

	/** 刪除相應(yīng)的Command */
	public void removeCommand(Command cmd) {
		if (cmd.type == Command.LEFT)
			removeCommandLeftImpl(cmd);
		else if (cmd.type == Command.MIDDLE)
			middle = null;
		else if (cmd.type == Command.RIGHT)
			right = null;
	}

	/**
	 * 刪除左列表的cmd,通過(guò)查找方式刪除
	 * @param cmd
	 */
	private void removeCommandLeftImpl(Command cmd) {
		boolean ok = false;
		if (left != null)
			ok = left.removeElement(cmd);
		if(ok)
			return;
		else{
			for(int i =0; i < left.size(); i++){
				Command c = (Command) left.elementAt(i);
				if(c.hasItem())
					c.removeCommandItem(cmd);
			}
		}

	}

	private void rightAction() {
		if (isSelectLeftCmd) {
			isSelectLeftCmd = false;
			return;
		}
		commandListener.commandAction(right);
	}

	/**
	 * 注冊(cè)監(jiān)視器
	 */
	public void setCommandListener(CommandListener commandListener) {
		this.commandListener = commandListener;
	}
	
	public void setSelectedStyle(int selectColor){
		this.selected.setStyle(selectColor, fontColor);
	}

	public final void setCancel(String cancel) {
		this.cancel = cancel;
	}

	public final void setMenu(String menu) {
		this.menu = menu;
	}

	public final void setSelect(String select) {
		this.select = select;
	}
	
	public int getHeight() {
		// TODO 自動(dòng)生成方法存根
		return 0;
	}

	public final boolean isSelectLeftCmd() {
		return isSelectLeftCmd;
	}
	
	public int getWidth() {
		return font.stringWidth(text);
	}
	

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区不卡在线播放| 日韩欧美亚洲国产另类| 亚洲天天做日日做天天谢日日欢| 国产一区在线观看视频| 日韩精品最新网址| 国产成人精品www牛牛影视| 国产欧美一区二区在线观看| 成人免费观看男女羞羞视频| 综合分类小说区另类春色亚洲小说欧美| 成人精品免费网站| 一区二区三区av电影| 69久久夜色精品国产69蝌蚪网| 五月天亚洲婷婷| 精品裸体舞一区二区三区| 国产二区国产一区在线观看| 综合电影一区二区三区 | 国产91精品精华液一区二区三区 | 美女一区二区在线观看| 精品99一区二区三区| 不卡的电视剧免费网站有什么| 中文字幕亚洲精品在线观看| 欧美亚洲禁片免费| 激情伊人五月天久久综合| 亚洲欧洲在线观看av| 欧美精品在线一区二区三区| 国产精品一卡二| 亚洲电影视频在线| 国产婷婷精品av在线| 欧美日韩在线播放三区| 国产精品一二二区| 亚洲v日本v欧美v久久精品| 久久精品欧美一区二区三区麻豆| 91小视频在线观看| 久久国产精品99久久久久久老狼| 国产精品视频第一区| 精品视频免费在线| 成人黄色777网| 免费欧美在线视频| 亚洲精选一二三| 久久先锋影音av鲁色资源| 欧美日韩国产三级| 成人黄色在线看| 韩国一区二区视频| 亚洲高清久久久| 中文字幕精品综合| 日韩一级二级三级| 欧美xxxxxxxx| 91一区二区三区在线观看| 国产一区二区免费在线| 视频一区视频二区中文| 成人欧美一区二区三区在线播放| 欧美成人vps| 欧美日本在线视频| 色呦呦网站一区| 成人av在线看| 国产一区二区三区免费看| 日韩va亚洲va欧美va久久| 亚洲免费看黄网站| 中文字幕在线一区免费| 久久精品免视看| www久久精品| 欧美r级电影在线观看| 91麻豆精品久久久久蜜臀| 在线精品视频免费播放| 99国产精品国产精品久久| 国产99久久久国产精品免费看| 久久91精品久久久久久秒播| 日韩电影一二三区| 日韩主播视频在线| 午夜伦理一区二区| 亚洲亚洲人成综合网络| 亚洲在线中文字幕| 一区二区三区四区高清精品免费观看| 国产精品久久久久aaaa樱花| 国产午夜精品一区二区三区嫩草 | 91精品综合久久久久久| 一本到高清视频免费精品| 色网站国产精品| 日本乱人伦aⅴ精品| 日本乱码高清不卡字幕| 在线视频一区二区三| 欧美性一二三区| 欧美日韩一级片在线观看| 欧美日韩1区2区| 日韩欧美一区中文| 精品成人免费观看| 国产午夜精品久久久久久免费视| 国产欧美一区二区三区鸳鸯浴| 欧美国产精品专区| 亚洲天堂中文字幕| 亚洲国产你懂的| 视频一区二区三区入口| 99精品欧美一区| 一本大道久久a久久综合| 色欧美乱欧美15图片| 欧美日韩一区二区在线视频| 欧美夫妻性生活| 精品国产乱码久久久久久夜甘婷婷 | 国产精品伊人色| 成人一道本在线| 91福利国产成人精品照片| 欧美精品国产精品| 久久免费偷拍视频| 综合久久久久久| 免费成人性网站| aaa国产一区| 欧美三级午夜理伦三级中视频| 欧美一区二区三区婷婷月色 | 久久精品人人做人人爽人人| 自拍偷拍国产精品| 蜜臀久久99精品久久久久宅男| 国产高清不卡二三区| 在线看日本不卡| 精品国产伦一区二区三区免费| 亚洲欧洲精品天堂一级| 午夜私人影院久久久久| 国产原创一区二区| 在线视频你懂得一区二区三区| 56国语精品自产拍在线观看| 国产人成亚洲第一网站在线播放| 亚洲精选视频在线| 国产一区二区美女| 在线观看av一区二区| 久久久99精品免费观看| 亚洲成人一二三| av在线不卡电影| 日韩精品资源二区在线| 夜夜精品视频一区二区 | 中文字幕一区在线| 日本 国产 欧美色综合| 91美女在线观看| 欧美mv和日韩mv国产网站| 一区二区久久久| 国产高清精品网站| 69堂成人精品免费视频| 一区二区三区在线影院| 国产一区二区三区观看| 欧美一卡二卡三卡四卡| 亚洲欧美电影院| 成人免费视频播放| 久久一日本道色综合| 午夜精品一区二区三区免费视频| 成人18视频日本| 国产欧美1区2区3区| 日本中文在线一区| 欧美日韩综合一区| 亚洲色图在线看| av一二三不卡影片| 日本一区二区在线不卡| 狠狠色狠狠色综合系列| 在线不卡一区二区| 亚洲不卡av一区二区三区| 色8久久人人97超碰香蕉987| 中文字幕成人网| 国产不卡高清在线观看视频| 久久丝袜美腿综合| 韩国三级在线一区| 26uuu国产日韩综合| 看国产成人h片视频| 欧美一区二区三区公司| 日韩高清不卡在线| 欧美一区二区在线看| 水蜜桃久久夜色精品一区的特点| 在线亚洲欧美专区二区| 亚洲自拍与偷拍| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 99精品久久免费看蜜臀剧情介绍| 中文字幕精品一区二区三区精品| 色综合天天综合网天天看片 | 中文字幕av不卡| 国产精品系列在线播放| 26uuu另类欧美| 国产一区二区三区综合| wwwwww.欧美系列| 丰满少妇久久久久久久| 国产欧美日韩精品a在线观看| 成人网页在线观看| 成人欧美一区二区三区黑人麻豆| 99国产精品久| 亚洲一区二区欧美日韩| 欧美精品 日韩| 国产做a爰片久久毛片| 久久影视一区二区| 成人精品gif动图一区| 亚洲天堂久久久久久久| 欧美日韩精品免费观看视频| 免费成人在线视频观看| 国产婷婷色一区二区三区在线| 不卡高清视频专区| 亚洲一区二区三区在线| 欧美成人一区二区三区在线观看| 黑人巨大精品欧美黑白配亚洲| 国产精品婷婷午夜在线观看| 一本一道综合狠狠老| 日韩中文字幕一区二区三区| 精品久久久久久亚洲综合网| 成人激情免费电影网址| 午夜精品久久久久影视| 国产日产欧美一区二区三区 | 国产成人精品亚洲日本在线桃色 |