⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.java

📁 用java实现的红外线通讯源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*Copyright (C) 2004  Juho Vähä-HerttuaThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/package jmirc;import java.io.*;import java.util.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.io.*;public class Window extends Canvas implements CommandListener {	public static final int TYPE_CONSOLE = 0;	public static final int TYPE_CHANNEL = 1;	public static final int TYPE_PRIVATE = 2;	public static final int STATE_NONE = 0;	public static final int STATE_INFO = 1;	public static final int STATE_MSG = 2;	public static final int STATE_HILIGHT = 3;	public static final int STATE_SELECTED = 4;	private static final String CHANGE_NICK = "Change nick";	private static final String JOIN_CHANNEL = "Join channel";	private int type, state;	private UIHandler uihandler;	public Vector names;	private TextBox textbox;	private Command cmd_msg, cmd_join, cmd_query, cmd_nick, cmd_traffic, cmd_timestamp, cmd_disconnect;	private Command cmd_closeconsole;	private Command cmd_action, cmd_close;	private Command cmd_whois;	private Command cmd_names;		private Command cmd_send, cmd_send_action, cmd_cancel;	private Command cmd_ok;	private String name, header, hilight;	private long keylocktime;	private int buflines;	private boolean timestamp;	private final static int MAX_LIST_PERSONS = 20;	private int person_position = 0;	private List nameslist;	private List namecmdlist;		public Window(UIHandler uihandler, String name, int type, String hilight, boolean showheader, boolean timestamp, int buflines) {		this.uihandler = uihandler;		this.name = name;		this.header = name;		this.type = type;		this.hilight = hilight;		this.showheader = showheader;		this.timestamp = timestamp;		this.buflines = buflines;		state = STATE_NONE;		textarea = new TextArea(0, 0, getWidth(), getHeight(), buflines, true);;		names = new Vector();		setHeaderVisible(showheader);		cmd_ok = new Command("Ok", Command.OK, 1);		cmd_send = new Command("Send", Command.OK, 1);		cmd_send_action = new Command("Send", Command.OK, 1);				cmd_cancel = new Command("Cancel", Command.CANCEL, 2);		cmd_msg = new Command("Msg", Command.OK, 10);		cmd_join = new Command("Join", Command.SCREEN, 20);		cmd_query = new Command("Query", Command.SCREEN, 30);		cmd_nick = new Command("Change nick", Command.SCREEN, 40);		cmd_traffic = new Command("Bytecounter", Command.SCREEN, 50);		cmd_timestamp = new Command("Timestamp on", Command.SCREEN, 60);		cmd_disconnect = new Command("Disconnect", Command.SCREEN, 70);		cmd_action = new Command("Action", Command.OK, 80);		cmd_close = new Command("Close", Command.SCREEN, 11);		cmd_whois = new Command("Whois", Command.SCREEN, 12);		cmd_names = new Command("Names", Command.SCREEN, 12);		cmd_closeconsole = new Command("Close", Command.CANCEL, 1);		addMenu();		this.setCommandListener(this); 	}		public void write(String nick, String text) {		if (!hilight.equals("") && text.indexOf(hilight) >= 0) {			write(new String[] {"<", nick, "> ", text}, new int[] {0,4,0,4});			if (state<STATE_HILIGHT) state = STATE_HILIGHT;			if (uihandler.keylock) uihandler.playAlarm(false);		}		else {			write(new String[] {"<", nick, "> " + text}, new int[] {0,4,0});			if (state<STATE_MSG) state = STATE_MSG;		}	}		public void writeAction(String str) {		write(new String[] {str}, new int[] {4});		if (state<STATE_MSG) state = STATE_MSG;	}	public void writeInfo(String str) {		write(new String[] {"*** " + str}, new int[] {2});		if (state<STATE_INFO) state = STATE_INFO;	}		public synchronized void write(String[] strings, int[] colours) {		boolean end = textarea.isAtEndpos();		if (timestamp) {			Calendar cal = Calendar.getInstance();			String time = "[" + cal.get(Calendar.HOUR_OF_DAY) + ":" +			              (cal.get(Calendar.MINUTE)<10?"0":"") + cal.get(Calendar.MINUTE) + "]";			strings[0] = time + " " + strings[0];		}		textarea.addText(strings, colours);		if (end) textarea.setPosition(-1);		uihandler.repaint();	}		public String getName() {		return name;	}		private void show() {		uihandler.setDisplay(this);		state = STATE_NONE;	}	public void close() {		uihandler.deleteWindow(this);	}	private void sendData() {		String str = textbox.getString();		if (type == Window.TYPE_CONSOLE) {			jmIrc.writeLine(str);			write("rawcmd", str);		}		else if (str != null && str.length()>0) {			if (str.charAt(0) =='/') {				if (str.toUpperCase().startsWith("/MSG")) {					String[] s = Utils.splitString(str," ");					if (s.length >1) {						jmIrc.writeLine("PRIVMSG " + s[1] +  " :" + str.substring(6 + s[1].length()));					}				}				else					jmIrc.writeLine(str.substring(1));			}			else {				jmIrc.writeLine("PRIVMSG " + name +  " :" + str);				write(uihandler.nick, str);			}		}		show();		textbox = null;	}		private String trimName(String name) {		if (name.charAt(0) == '@' || name.charAt(0) == '+')			return name.substring(1).trim();		else			return name.trim();	}	private void addMenu() {		this.addCommand(cmd_msg);		this.addCommand(cmd_join);		this.addCommand(cmd_query);		this.addCommand(cmd_nick);		this.addCommand(cmd_traffic);		this.addCommand(cmd_timestamp);		this.addCommand(cmd_disconnect);		if (type == Window.TYPE_PRIVATE || type == Window.TYPE_CHANNEL) {			this.addCommand(cmd_action);			this.addCommand(cmd_close);			if (type == Window.TYPE_PRIVATE)				this.addCommand(cmd_whois);			else				this.addCommand(cmd_names);		}	}	private void deleteMenu() {		this.removeCommand(cmd_msg);		this.removeCommand(cmd_join);		this.removeCommand(cmd_query);		this.removeCommand(cmd_nick);		this.removeCommand(cmd_traffic);		this.removeCommand(cmd_timestamp);		this.removeCommand(cmd_disconnect);		if (type == Window.TYPE_PRIVATE || type == Window.TYPE_CHANNEL) {			this.removeCommand(cmd_action);			this.removeCommand(cmd_close);			if (type == Window.TYPE_PRIVATE)				this.removeCommand(cmd_whois);			else				this.removeCommand(cmd_names);		}	}	/* Channel.java starts here */		/* these are accessed from Listener.java, think about it... */	public boolean readinglist = false;	public String topic = "";		public void addName(String name) {		int i, nsize;		nsize = names.size();		String tuname = name.toUpperCase();		for (i=0; i<nsize; i++) {			String str = (String)names.elementAt(i);			if (tuname.compareTo(str.toUpperCase()) < 1) {				names.insertElementAt(name,i);				break;			}		}		if (i == nsize) names.addElement(name);		updateHeader();	}		public boolean hasName(String name) {		int s = names.size();		name = trimName(name);		for (int i=0;i<s;i++) {			String n = (String)names.elementAt(i);			if (trimName(n).equals(name)) {				return true;			}		}		return false;	}		public void deleteName(String id) {		int s = names.size();		for (int i=0;i<s;i++) {			String n = (String)names.elementAt(i);			if (trimName(n).equals(id)) {				names.removeElementAt(i);				break;			}		}		updateHeader();	}		private void listnames(Command c, Displayable s) {		nameslist = new List("Names", List.IMPLICIT);		nameslist.append("[Back]", null);						int mp = (person_position+1)*MAX_LIST_PERSONS;		if (person_position>0) {			nameslist.append("[Previous]",null);		}				if (names.size()>mp) {			nameslist.append("[Next]",null);							}			for(int i=(person_position*MAX_LIST_PERSONS); i<mp && i <names.size(); i++) {			String n =(String) names.elementAt(i);			nameslist.append(n,null);						}		nameslist.setCommandListener(this);		uihandler.setDisplay(nameslist);	}	public int getType() {		return type;	}	public void changeNick() {		this.commandAction(cmd_nick, null);	}	private void updateHeader() {		this.setHeader(name + " [" + names.size() + "]");	}	/* DisplayCanvas.java starts here */	private TextArea textarea;	private boolean showheader;	public void setHeaderVisible(boolean visible) {		int headerheight;		if (visible) {			int hheight = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL).getHeight();			textarea.setSize(hheight, getHeight()-hheight);		}		else			textarea.setSize(0, getHeight());		showheader = visible;	}	public void clear() {		textarea.clear();	}	public int getState() {		return state;	}	public void setState(int newstate) {		state = newstate;	}	public void setHeader(String newheader) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -