第4回:実機に載せよう(ダウンサイズ)
001: //package com.s_cradle.improve.client; 002: 003: import javax.microedition.lcdui.Graphics; 004: import javax.microedition.lcdui.Canvas; 005: import java.util.Enumeration; 006: import java.util.Hashtable; 007: 008: /** 009: * Copyright (C) 2003 Sophia Cradle, Inc. 010: * 011: * 友達リストを表現する Menu です。 012: * 013: * @author Masaru Yoshimura 014: */ 015: public class C/*BuddyListMenu*/ extends Z/*Task*//*Menu*/ { 016: //downsize 定数展開 017: /** 描画用定数 */ 018: //private static final int TICKER_HEIGHT = 18; 019: //private static final int IMAGES_INTERVAL = 30; 020: 021: //private static final int IMAGE_ARROW_VERTICAL_WIDTH = 7; 022: //private static final int IMAGE_ARROW_VERTICAL_HEIGHT = 4; 023: //private static final int IMAGE_ARROW_VERTICAL_IMAGES_INTERVAL = 8; 024: //private static final int IMAGE_ARROW_VERTICAL_DOWN_INTERVAL = 4; 025: 026: /** 子メニュー */ 027: private Z/*Task*//*Menu*/ translate/*menu*/; 028: 029: /** フォーカスされているBuddy*/ 030: private A/*Buddy*/ StackMap/*cursorBuddy*/; 031: 032: private int[] Code/*idata2*/ = new int[2]; 033: //private int delta; 034: //private int field; 035: 036: /** 037: * コンストラクタ 038: */ 039: public C/*BuddyListMenu*/() { 040: //super(null,null); 041: Z/*initializeMenu*/(null,null); 042: Code/*idata2*/[0]/*delta*/ = 0; 043: } 044: 045: /** 046: * 描画 047: */ 048: public void I/*draw*/(Graphics g, int width_, int height_){ 049: g.translate(0, 18/*TICKER_HEIGHT*/+1); 050: StackMap/*draw3DRect*/(g, 0, 0, width_, height_-g.getTranslateY(), 051: (153<<16) | (153<<8) | 255/*ImproveAbstractCanvas.LIST_BG_COLOR*/, 0x00EEEEFF, 0x00000080); 052: 053: Code/*idata2*/[1]/*field*/ = (height_-g.getTranslateY())/18; 054: 055: if(Z/*idata*/[0]/*cursor*/ - Code/*idata2*/[0]/*delta*/ < 0){ 056: Code/*idata2*/[0]/*delta*/ = Z/*idata*/[0]/*cursor*/; 057: } 058: if(Z/*idata*/[0]/*cursor*/-Code/*idata2*/[0]/*delta*/ >= Code/* data2*/[1]/*field*/){ 059: Code/*idata2*/[0]/*delta*/ = Z/*idata*/[0]/*cursor*/-Code/* idata2*/[1]/*field*/+1; 060: } 061: if(Z/*idata*/[0]/*cursor*/ >= I/*ImproveMIDlet*/.Code/*buddyList*/.size()){ 062: Z/*idata*/[0]/*cursor*/ = I/*ImproveMIDlet*/.Code/*buddyList*/.size()-1; 063: if(Z/*idata*/[0]/*cursor*/ < 0){ 064: Z/*idata*/[0]/*cursor*/ = 0; 065: } 066: } 067: 068: boolean up = (Code/*idata2*/[0]/*delta*/>0); 069: boolean down = (I/*ImproveMIDlet*/.Code/*buddyList*/.size()-Code/* idata2*/[0]/*delta*/-Code/*idata2*/[1]/*field*/ > 0); 070: 071: int temp=0,position=0; 072: for(Enumeration e=I/*ImproveMIDlet*/.Code/*buddyList*/.elements(); e.hasMoreElements();){ 073: A/*Buddy*/ buddy = (A/*Buddy*/)e.nextElement(); 074: if( temp < Code/*idata2*/[0]/*delta*/ ){ 075: temp++; 076: } else{ 077: buddy.StackMap/*draw*/(g,width_,17/*COLUMN_HEIGHT*/ *position,( (position+Code/*idata2*/[0]/*delta*/)==Z/*idata*/[0]/*cursor*/),false); 078: if((position+Code/*idata2*/[0]/*delta*/) == Z/*idata*/[0]/*cursor*/){ 079: StackMap/*cursorBuddy*/ = buddy; 080: } 081: position++; 082: if( 17/*COLUMN_HEIGHT*/ *(position+1) + ((up || down) ? 083: 4/*IMAGE_ARROW_VERTICAL_HEIGHT*/+ 084: 4/*IMAGE_ARROW_VERTICAL_DOWN_INTERVAL*/ : 0) > 085: height_-g.getTranslateY()){ 086: position--; 087: break; 088: } 089: } 090: } 091: if( up ){ 092: g.drawImage(I/*ImproveMIDlet*//*ResourceManager*/.Code/*getImage*/( 0/*ResourceManager.IMAGE_UP*/), 093: (width_-7/*IMAGE_ARROW_VERTICAL_WIDTH*/ *2-8/* IMAGE_ARROW_VERTICAL_IMAGES_INTERVAL*/)/2, 094: height_-g.getTranslateY()-4/* IMAGE_ARROW_VERTICAL_HEIGHT*/-4/*IMAGE_ARROW_VERTICAL_DOWN_INTERVAL*/, 095: g.TOP | g.LEFT); 096: } 097: if( down ){ 098: g.drawImage( I/*ImproveMIDlet*//*ResourceManager*/.Code/*getImage*/(1/*ResourceManager.IMAGE_DOWN*/), 099: (width_+8/*IMAGE_ARROW_VERTICAL_IMAGES_INTERVAL*/)/2, 100: height_-g.getTranslateY()-4/* IMAGE_ARROW_VERTICAL_HEIGHT*/-4/*IMAGE_ARROW_VERTICAL_DOWN_INTERVAL*/, 101: g.TOP | g.LEFT); 102: } 103: 104: g.translate(0, -(18/*TICKER_HEIGHT*/+1)); 105: 106: if(translate/*menu*/ != null){ 107: translate/*menu*/.I/*draw*/(g,width_,height_); 108: } 109: } 110: 111: 112: /** 113: * キーハンドラ 114: */ 115: protected Z/*Task*//*Menu*/ StackMap/*processFireKeyRelease*/() { 116: if(StackMap/*cursorBuddy*/ != null){ 117: if( StackMap/*cursorBuddy*/.Code/*idata*/[1]/*attribute*/ == 0/*Buddy.ATTRIBUTE_HIM*/ ){ 118: return new J/*MainMenu*/(StackMap/*cursorBuddy*/); 119: } else{ 120: return new G/*FriendMenu*/(StackMap/*cursorBuddy*/); 121: } 122: } else{ 123: System.out.println("error in BuddyListMenu.processFireKeyRelease!"); 124: return null; 125: } 126: } 127: 128: /** 129: * キーハンドラ 130: */ 131: public Z/*Task*//*Menu*/ A/*processKeyRelease*/(int gameAction, int keyCode){ 132: if( translate/*menu*/ != null ){ 133: translate/*menu*/ = translate/*menu*/.A/*processKeyRelease*/( gameAction,keyCode); 134: } else{ 135: switch( gameAction ){ 136: case Canvas.FIRE: 137: translate/*menu*/ = StackMap/*processFireKeyRelease*/(); 138: break; 139: case Canvas.DOWN: 140: if( Z/*idata*/[0]/*cursor*/+1 < I/* ImproveMIDlet*/.Code/*buddyList*/.size() ){ 141: Z/*idata*/[0]/*cursor*/++; 142: StackMap/*cursorBuddy*/ = null; 143: } 144: break; 145: case Canvas.UP: 146: if( Z/*idata*/[0]/*cursor*/ > 0 ){ 147: Z/*idata*/[0]/*cursor*/--; 148: StackMap/*cursorBuddy*/ = null; 149: } 150: break; 151: case Canvas.RIGHT: 152: if( StackMap/* cursorBuddy*/ != null && StackMap/*cursorBuddy*/.L/*messageBox*/ != null ){ 153: I/*ImproveMIDlet*/.Code/*setCurrent*/( new M/*MessagingCanvas*/(StackMap/*cursorBuddy*/)); 154: return null; 155: } 156: break; 157: default: 158: break; 159: } 160: } 161: 162: return this; 163: } 164: }