?? tinyline.java
字號(hào):
/****************************************************************** * Copyright (C) 2002-2006 Andrew Girow. All rights reserved. * * ---------------------------------------------------------------* * This software is published under the terms of the TinyLine * * License, a copy of which has been included with this * * distribution in the TINYLINE_LICENSE.TXT file. * * * * For more information on the TinyLine, * * please see <http://www.tinyline.com/>. * *****************************************************************/package com.tinyline.app;import java.io.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.util.Vector;import javax.microedition.rms.*;import com.tinyline.tiny2d.*;import com.tinyline.svg.*;/** * The <tt>TinyLine</tt> is the J2ME MIDP 2.0 * implementation of the SVGT Viewer. * <p> * @author (C) Andrew Girow * @version 1.10 * <p> */public class TinyLine extends MIDlet implements CommandListener, RecordComparator{ Display display; // The Main screen // SVG Canvas MIDPSVGCanvas canvas; Command openCommand, nextPrevCommand, linkCommand, panCommand, zoomCommand, origViewCommand, qualityCommand, pauseCommand, helpCommand, exitCommand; // Help screen Form helpScreen; Command helpBackCommand; // Edit Bookmark screen Form editForm; TextField nameField, URLField; Command editBackCommand, saveCommand; // This is the bookmark to be edited Bookmark editBookmark; // Bookmarks screen Alert alert; // user interface alert for Bookmarks List bookmarkList; Command addCommand, editCommand, deleteCommand, defaultsCommand; Command listBackCommand; // Name of the record store String recordStoreName; // Base prefix for import the record store String propertyBaseName; // Records data structure Vector bookmarks; boolean initialized; /** * Construct a new TinyLine MIDlet and initialize the base options * and SVG canvas to be used when the MIDlet is started. */ public TinyLine() { display = Display.getDisplay(this); // Create the SVG canvas. canvas = new MIDPSVGCanvas(display); // Load incons canvas.init(); // Add commands openCommand = new Command("Open", Command.SCREEN, 1); nextPrevCommand = new Command("Next Prev", Command.SCREEN, 1); linkCommand = new Command("Link", Command.SCREEN, 1); panCommand = new Command("Pan", Command.SCREEN, 1); zoomCommand = new Command("Zoom", Command.SCREEN, 1); origViewCommand = new Command("Orig View", Command.SCREEN, 1); qualityCommand = new Command("Quality", Command.SCREEN, 1); pauseCommand = new Command("Pause", Command.SCREEN, 1); helpCommand = new Command("Help", Command.SCREEN, 1); exitCommand = new Command("Exit", Command.EXIT, 2); canvas.addCommand(openCommand); canvas.addCommand(nextPrevCommand); canvas.addCommand(linkCommand); canvas.addCommand(panCommand); canvas.addCommand(zoomCommand); canvas.addCommand(origViewCommand); canvas.addCommand(qualityCommand); canvas.addCommand(pauseCommand); canvas.addCommand(helpCommand); canvas.addCommand(exitCommand); canvas.setCommandListener(this); } /** * Start up the MIDlet by setting the canvas * and loading the default SVG font and the splash SVGT image. */ public void startApp() throws MIDletStateChangeException { try { display.setCurrent(canvas); // Initialize bookmarks if (initialized == false) initialize(); // Copy bookmarks pointers canvas.bookmarks = bookmarks; canvas.bookmarkList = bookmarkList; // Get graphics canvas.repaint(); // Load the default SVG font. SVGDocument doc = canvas.loadSVG("/tinyline/helvetica.svg"); SVGFontElem font = SVGDocument.getFont(doc,SVG.VAL_DEFAULT_FONTFAMILY); SVGDocument.defaultFont = font; // Add the default event listener PlayerListener defaultListener = new PlayerListener(canvas); canvas.addEventListener("default", defaultListener, false); // Start the event dispatching queue canvas.start(); // Loads the splash splash SVGT image canvas.goURL("/svg/tinyline.svg"); } catch( Exception e) { } } /** Pause the MIDlet. */ public void pauseApp() { canvas.stop(); } /** * Destroy the MIDlet. * @param unconditional Unconditional flag. */ public void destroyApp(boolean unconditional) { canvas.stop(); } /** * Respond to commands. Commands are added to each screen as * they are created. Each screen uses the TinyLine MIDlet as the * CommandListener. * @param c the command that triggered this callback * @param s the screen that contained the command */ public void commandAction(Command c, Displayable s) {///System.out.println("Command " +c); if (c == openCommand) { display.setCurrent(bookmarkList); // open form } else if(c == nextPrevCommand) { canvas.selectMode(MIDPSVGCanvas.MODE_NEXTPREV); } else if(c == linkCommand) { canvas.selectMode(MIDPSVGCanvas.MODE_LINK); } else if(c == panCommand) { canvas.selectMode(MIDPSVGCanvas.MODE_PAN); } else if(c == zoomCommand) { canvas.selectMode(MIDPSVGCanvas.MODE_ZOOM); } else if(c == origViewCommand) { canvas.origView(); } else if(c == qualityCommand) { canvas.switchQuality(); } else if(c == pauseCommand) { canvas.pauseResumeAnimations(); } else if(c == helpCommand) { display.setCurrent(helpScreen); } else if(c == exitCommand) { destroyApp(true); notifyDestroyed(); } else if (c == saveCommand) { String name = nameField.getString(); String url = URLField.getString(); // Validate the entry first. if (validate(name, url) == false) { alert.setString("Please enter a valid name and URL."); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert, editForm); } // Don't allow a duplicate name except for // the case of editing. else if ((editBookmark == null && getBookmark(name) != null) || (editBookmark != null && !getBookmark(name).equals(editBookmark))) { alert.setString("That name is already used"); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert, editForm); } else { Bookmark bookmark = new Bookmark(name, url); if(editBookmark == null) { // add the bookmark bookmarks.addElement(bookmark); } // For an edit, remove the old Bookmark object. else { // Replace editBookmark with bookmark; int i = bookmarks.indexOf(editBookmark); bookmarks.setElementAt(bookmark, i); editBookmark = null; } // Blank out the edit form fields. nameField.setString(""); URLField.setString(""); // Show the updated Bookmark list. saveBookmarks(); fillBookmarkList(); display.setCurrent(bookmarkList); } } else if (c == editBackCommand) { display.setCurrent(bookmarkList); } else if (c == addCommand) { display.setCurrent(editForm); } else if (c == List.SELECT_COMMAND) { canvas.index = bookmarkList.getSelectedIndex(); display.setCurrent(canvas); canvas.repaint(); canvas.go(canvas.index); } else if (c == editCommand) { Bookmark f = getSelectedBookmark(); editBookmark = f; nameField.setString(editBookmark.name); URLField.setString(editBookmark.url); display.setCurrent(editForm); } else if (c == deleteCommand) { Bookmark f = getSelectedBookmark(); // remove the bookmark bookmarks.removeElement(f); saveBookmarks(); fillBookmarkList(); display.setCurrent(bookmarkList); } else if (c == defaultsCommand) { loadBookmarksFromProperties("svg.image"); saveBookmarks(); fillBookmarkList(); } else if (c == listBackCommand || c == helpBackCommand) { display.setCurrent(canvas); canvas.repaint(); } } /** * Compares two raw Bookmark records. */ public int compare(byte[] rec1, byte[] rec2) { int length = Math.min(rec1.length, rec2.length); for (int i = 0; i < length; i++) {
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -