customitemtest.java
来自「This is a resource based on j2me embedde」· Java 代码 · 共 327 行
JAVA
327 行
/* * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package javax.microedition.lcdui;import com.sun.midp.i3test.*;import javax.microedition.midlet.*;public class CustomItemTest extends TestCase { FormLFImpl ownerLFImpl = null; int vpY_beforeScroll = 0; int vpY_AfterScroll = 0; void testCustomItemInternalTraversal() { Display display = DisplayTestUtils.createDisplay(); Form mainForm = new Form("CustomItem Demo"); CustomItemImpl customItem = new CustomItemImpl("CustomItem", 80, display, false); mainForm.append(customItem); display.setCurrent(mainForm); // make sure the form is visible try { Thread.sleep(2000); } catch (Exception e) {} assertSame(display.getCurrent(), mainForm); CustomItemLF customItemLF = customItem.customItemLF; Item myitem = ((CustomItemLFImpl)customItemLF).item; // call keypress with "up" keyCode -1 ((CustomItemLFImpl)customItemLF).uCallKeyPressed(-1); ((CustomItemLFImpl)customItemLF).uCallKeyReleased(-1); assertTrue("traverse not called", customItem.traverse_flag); Display.displayManagerImpl.uRequestForegroundNone(); assertSame(Display.displayManagerImpl.noForeground, Display.displayManagerImpl.foreground); } /** * check that the viewport scrolls to make the * returned vis_Rect from traverse method visible * * This test is specific to platform_widget. Enable it only * for platform-widget if possible. * void testCustomItemInternalTraversal2() { Display display = DisplayTestUtils.createDisplay(); Form mainForm = new Form("CustomItem 2 Demo"); TextField tf = new TextField("Text Field", "some text", 100, 0); CustomItemImpl customItem1 = new CustomItemImpl("CustomItem1", 80, display, false); customItem1.setLayout(Item.LAYOUT_LEFT | Item.LAYOUT_NEWLINE_BEFORE | Item.LAYOUT_NEWLINE_AFTER); CustomItemImpl customItem2 = new CustomItemImpl("CustomItem2", 80, display, false); customItem2.setLayout(Item.LAYOUT_LEFT | Item.LAYOUT_NEWLINE_BEFORE | Item.LAYOUT_NEWLINE_AFTER); StringItem si = new StringItem("a string", "some text"); mainForm.append(tf); mainForm.append(customItem1); mainForm.append(si); mainForm.append(customItem2); display.setCurrentItem(customItem2); // make sure the form is visible try { Thread.sleep(2000); } catch (Exception e) {} assertSame(display.getCurrent(), mainForm); // part of the custom item is made visible CustomItemLF customItemLF = customItem2.customItemLF; Item myitem = ((CustomItemLFImpl)customItemLF).item; Screen owner = myitem.owner; if (owner != null) { ownerLFImpl = (FormLFImpl)owner.getLF(); } // vpY1 the y coordinate of the top left visible pixel // current scroll position vpY_beforeScroll = ownerLFImpl.getScrollPosition0(); // call key down // KEYCODE_DOWN Value="-2" ((CustomItemLFImpl)customItemLF).uCallKeyPressed(-2); ((CustomItemLFImpl)customItemLF).uCallKeyReleased(-2); assertTrue("traverse not called: first call", customItem2.traverse_flag); ((CustomItemLFImpl)customItemLF).uCallKeyPressed(-2); ((CustomItemLFImpl)customItemLF).uCallKeyReleased(-2); assertTrue("traverse not called: second call", customItem2.traverse_flag); // check that the viewport scrolls to make the // returned vis_Rect visible // vpY1 the y coordinate of the top left visible pixel vpY_AfterScroll = ownerLFImpl.getScrollPosition0(); boolean screenScrolled = vpY_AfterScroll > vpY_beforeScroll ? true : false; assertTrue("screen not Scrolled", screenScrolled); Display.displayManagerImpl.uRequestForegroundNone(); assertSame(Display.displayManagerImpl.noForeground, Display.displayManagerImpl.foreground); } */ // main test driver public void runTests() { declare("testCustomItemInternalTraversal"); testCustomItemInternalTraversal(); /* * This test is platform_widget specific. * declare("testCustomItemInternalTraversal2"); testCustomItemInternalTraversal2(); */ }}class CustomItemImpl extends CustomItem { private int size, rgb_bgrnd, rgb_fgrnd, rgb_highlighted_bgrnd, rgb_highlighted_fgrnd; private int startIndex = 0; private int highlightedIndex = 0; private int currentIndex = 0; private boolean initialTraversal = false; private int[] highlightedRect = new int[4]; int[] visRect = new int[4]; boolean traverse_flag = false; private boolean debugFlag = false; private String[] content = { "String0", "String1", "String2", "String3", "String4", "String5", "String6", "String7", "String8", "String9" }; public CustomItemImpl(String label, int size, Display display, boolean debug) { super(label); debugFlag = debug; rgb_bgrnd = display.getColor(Display.COLOR_BACKGROUND); rgb_highlighted_bgrnd = display.getColor(Display.COLOR_HIGHLIGHTED_BACKGROUND); rgb_fgrnd = display.getColor(Display.COLOR_FOREGROUND); rgb_highlighted_fgrnd = display.getColor(Display.COLOR_HIGHLIGHTED_FOREGROUND); this.size = size; highlightedRect[0] = 1; highlightedRect[1] = 1; highlightedRect[2] = 55; highlightedRect[3] = 14; } protected int getMinContentHeight() { return size; } protected int getMinContentWidth() { return size; } protected int getPrefContentHeight(int width) { if (debugFlag) { System.err.println("getPrefContentHeight called. width = " + width); } return size; } protected int getPrefContentWidth(int height) { if (debugFlag) { System.err.println("getPrefContentWidth called. height = " + height); } return size; } protected void paint(Graphics g, int w, int h) { if (debugFlag) { System.err.println("\n\n" + getLabel() + "'s paint() called"); System.err.println("w = " + w + " , h = " + h); } g.setColor(rgb_bgrnd); g.fillRect(0, 0, w, h); g.setColor(rgb_fgrnd); g.drawRect(0, 0, w - 1, h - 1); Font f = g.getFont(); for (int i = 0; i < 5; i++) { g.drawString(content[startIndex + i], 1, 1 + i * f.getHeight(), Graphics.TOP | Graphics.LEFT); } if (traverse_flag) { // change the highlighting g.setColor(rgb_highlighted_bgrnd); g.fillRect(highlightedRect[0], highlightedRect[1], highlightedRect[2], highlightedRect[3]); g.setColor(rgb_highlighted_fgrnd); g.drawString(content[currentIndex], highlightedRect[0], highlightedRect[1], Graphics.TOP | Graphics.LEFT); } if (debugFlag) { System.err.println("highlightedRect[0] = " + highlightedRect[0] + "\nhighlightedRect[1] = " + highlightedRect[1] + "\nhighlightedRect[2] = " + highlightedRect[2] + "\nhighlightedRect[3] = " + highlightedRect[3]); } } protected void traverseOut() { if (debugFlag) { System.err.println("*** traverseOut was called ***"); } traverse_flag = false; repaint(); } protected boolean traverse(int dir, int viewportWidth, int viewportHeight, int[] visRect_inout) { if ((!traverse_flag) && (dir != 0)) { traverse_flag = true; return true; } visRect[0] = visRect_inout[0]; visRect[1] = visRect_inout[1]; visRect[2] = visRect_inout[2]; visRect[3] = visRect_inout[3]; if (debugFlag) { System.err.println("\n\n" + "*** traverse was called ***"); System.err.println("dir = " + dir); System.err.println("viewportWidth = " + viewportWidth); System.err.println("viewportHeight = " + viewportHeight); System.err.println("visRect_inout[0] = " + visRect_inout[0]); System.err.println("visRect_inout[1] = " + visRect_inout[1]); System.err.println("visRect_inout[2] = " + visRect_inout[2]); System.err.println("visRect_inout[3] = " + visRect_inout[3]); } if (dir == Canvas.DOWN) { if (startIndex < 5) { if (highlightedIndex < 4) { highlightedRect[1] += 14; highlightedIndex += 1; } else { startIndex += 1; } currentIndex += 1; } else { return false; } } if (dir == Canvas.UP) { if (highlightedIndex > 0) { highlightedRect[1] -= 14; highlightedIndex -= 1; } else if (currentIndex > 0) { startIndex -= 1; } else { return false; } currentIndex -= 1; } // repaint(); return true; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?