?? translatorscreen.java
字號:
// Copyright 2003 Nokia Corporation.
//
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED
// BY THIRD PARTIES
//
// Furthermore, information provided in this source code is preliminary,
// and may be changed substantially prior to final release. Nokia Corporation
// retains the right to make changes to this source code at
// any time, without notice. This source code is provided for informational
// purposes only.
//
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
//
// A non-exclusive, non-transferable, worldwide, limited license is hereby
// granted to the Licensee to download, print, reproduce and modify the
// source code. The licensee has the right to market, sell, distribute and
// make available the source code in original or modified form only when
// incorporated into the programs developed by the Licensee. No other
// license, express or implied, by estoppel or otherwise, to any other
// intellectual property rights is granted herein.
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.microedition.rms.*;
import org.ksoap.*;
import org.kxml.*;
import org.kxml.io.*;
import org.kxml.parser.*;
class TranslatorScreen
extends Form
implements Runnable,
CommandListener,
HttpPosterListener
{
private final static String CHARSET = "UTF-8";
private final static String CONTENT_TYPE =
"text/xml; charset=\"" + CHARSET + "\"";
private final static int TICK_TIME_MILLIS = 300;
private final static int TEXT_RECORD = 1;
private final TranslatorMIDlet midlet;
private final Command exitCommand;
private final Command translateCommand;
private final Command settingsCommand;
private final Command cancelCommand;
private final ImageItem activityIndicator;
private final Image active0;
private final Image active1;
private final TextField inputTextField;
private final StringItem outputStringItem;
private String inputLocale = SettingsScreen.DEFAULT_INPUT_LOCALE;
private String outputLocale = SettingsScreen.DEFAULT_OUTPUT_LOCALE;
private volatile boolean aborting = false;
private volatile boolean doAnimation = false;
private Thread animationThread = null;
private int progressCount = 0;
TranslatorScreen(TranslatorMIDlet midlet)
{
super(null);
this.setTitle(titleString());
this.midlet = midlet;
// Initialize progress meter
active0 = TranslatorMIDlet.makeImage("/active0.png");
active1 = TranslatorMIDlet.makeImage("/active1.png");
int anchor = (ImageItem.LAYOUT_LEFT |
ImageItem.LAYOUT_NEWLINE_AFTER);
activityIndicator = new ImageItem("Translating",
active0,
anchor,
"");
// TextField for entering Input
inputTextField = new TextField("Input text",
"", // default input text
128,
TextField.ANY);
append(inputTextField);
// StringItem for translated Output inputTextField
outputStringItem = new StringItem("", "");
append(outputStringItem);
// Screen commands
exitCommand = new Command("Exit", Command.EXIT, 1);
settingsCommand = new Command("Settings", Command.SCREEN, 1);
translateCommand = new Command("Translate", Command.SCREEN, 2);
cancelCommand = new Command("Cancel", Command.STOP, 2);
addCommand(translateCommand);
addCommand(settingsCommand);
addCommand(exitCommand);
setCommandListener(this);
}
private String titleString()
{
return inputLocale + " to " + outputLocale + " Translator";
}
void setLocales(String inputLocale, String outputLocale)
{
this.inputLocale = inputLocale;
this.outputLocale = outputLocale;
clearTranslation();
// update screen's title
setTitle(titleString());
}
private void clearTranslation()
{
// clear old translation text
outputStringItem.setLabel("");
outputStringItem.setText("");
}
// Runnable: this method is used by our thread
public void run()
{
while ((Thread.currentThread() == animationThread) && !aborting)
{
if (doAnimation)
{
Image image = ((progressCount % 2) == 0) ?
active0 : active1;
activityIndicator.setImage(image);
progressCount++;
}
try
{
synchronized (this)
{
wait(TICK_TIME_MILLIS);
}
}
catch (InterruptedException e)
{
// continue running
}
}
}
public void commandAction(Command command, Displayable d)
{
if (command == exitCommand)
{
midlet.translatorScreenExit();
}
else if (command == translateCommand)
{
clearTranslation();
// start animation
startActivityIndicator();
// queue request for sending
try
{
queueRequestGetTranslate();
}
catch (UnsupportedEncodingException e)
{
stopActivityIndicator();
midlet.translatorScreenError(e.toString());
}
catch (IOException e)
{
stopActivityIndicator();
midlet.translatorScreenError(e.toString());
}
}
else if (command == cancelCommand)
{
stopActivityIndicator();
// Warning: this aborts all send requests that are queued !
midlet.translatorScreenAbortHttpPoster();
}
else if (command == settingsCommand)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -