亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? buttonbar.java

?? java 平臺 telnet 繁體中文版
?? JAVA
字號:
/* * This file is part of "The Java Telnet Application". * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * "The Java Telnet Application" 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 for more details. *  * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING.  If not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */package de.mud.jta.plugin;import de.mud.jta.Plugin;import de.mud.jta.PluginBus;import de.mud.jta.PluginConfig;import de.mud.jta.FilterPlugin;import de.mud.jta.VisualPlugin;import de.mud.jta.event.ConfigurationListener;import de.mud.jta.event.SocketRequest;import de.mud.jta.event.TelnetCommandRequest;import java.util.Properties;import java.util.Hashtable;import java.util.Vector;import java.io.IOException;import java.io.StreamTokenizer;import java.io.InputStream;import java.io.InputStreamReader;import java.io.BufferedReader;import java.net.URL;import java.awt.Component;import java.awt.Panel;import java.awt.Button;import java.awt.TextField;import java.awt.Event;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.Dimension;import java.awt.Container;import java.awt.Frame;import java.awt.Menu;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;/** * Implementation of a programmable button bar to be used as a plugin * in the Java(tm) Telnet Applet/Application. The button bar is configured * using a input file that contains the setup for the button bar.<P> * A typical setup file may look like: * <PRE> * # * # Example for writing a button bar config file. * # * # The syntaxt for defining buttons, input fields and breaks is as follows: * # * # - defining a button: * # A button is defined by giving the keyword 'button' followed by the text * # of the button and the command that should be sent when pressing the * # button. If the command contains whitespace characters, enclode it in * # quote (") characters! * # * button		Connect		"\$connect(\@host@,\@port@)" * # * # - defining an input field: * # An input field is defined just like the button above, but it has one more * # parameter, the size of the input field. So you define it, by giving the * # keyword 'input' followed by the name of the input field (for reference) * # followed by the size of the input field and optionally a third parameter * # which is the initial text to be displayed in that field. * # * input		host	20	"tanis" * stretch * input		port	4	"23" * # * # Now after the button and two input fields we define another button which * # will be shown last in the row. Order is significant for the order in  * # which the buttons and fields appear. * # * button		Disconnect	"\\$disconnect()" break * # * # To implement an input line that is cleared and sends text use this: * # The following line send the text in the input field "send" and appends * # a newline. * input		send	20	"\\@send@\n"	"ls" * </PRE> * Other possible keywords are <TT>break</TT> which does introduce a new * line so that buttons and input fields defined next will appear in a new * line below and <TT>stretch</TT> to make the just defined button or input * field stretched as far as possible on the line. That last keyword is * useful to fill the space. *  * @version $Id: ButtonBar.java,v 2.6 2000/12/03 17:30:58 marcus Exp $ * @author  Matthias L. Jugel, Marcus Mei遪er */public class ButtonBar extends Plugin   implements FilterPlugin, VisualPlugin, ActionListener {  /** the panel that contains the buttons and input fields */  protected Panel panel = new Panel();  // these tables contain our buttons and fields.  private Hashtable buttons = null;  private Hashtable fields = null;  // the switch for clearing input fields after enter  private boolean clearFields = true;  /**   * Initialize the button bar and register plugin listeners   */  public ButtonBar(PluginBus bus, final String id) {    super(bus, id);    // configure the button bar    bus.registerPluginListener(new ConfigurationListener() {      public void setConfiguration(PluginConfig cfg) {	String file = cfg.getProperty("ButtonBar", id, "setup");	clearFields = 	  (new Boolean(cfg.getProperty("ButtonBar", id, "clearFields")))	    .booleanValue();	// check for the setup file        if(file == null) {	  ButtonBar.this.error("no setup file");	  return;        }        StreamTokenizer setup = null;	InputStream is = null;	try {	  is = getClass().getResourceAsStream(file);	} catch(Exception e) {	  // ignore any errors here	}		// if the resource access fails, try URL	if(is == null) try {	  is = new URL(file).openStream();	} catch(Exception ue) {	  ButtonBar.this.error("could not find: "+file);	  return;	}	// create a new stream tokenizer to read the file	try {	  InputStreamReader ir = new InputStreamReader(is);	  setup = new StreamTokenizer(new BufferedReader(ir));	} catch(Exception e) {	  ButtonBar.this.error("cannot load "+file+": "+e);	  return;	}	setup.commentChar('#');        setup.quoteChar('"');	        String line; 	fields = new Hashtable();	buttons = new Hashtable();		GridBagLayout l = new GridBagLayout();	GridBagConstraints c = new GridBagConstraints();	panel.setLayout(l);        c.fill = GridBagConstraints.BOTH;	int token;        // parse the setup file        try {          while((token = setup.nextToken()) != StreamTokenizer.TT_EOF) {            switch(token) {	      case StreamTokenizer.TT_WORD:		// reset the constraints	        c.gridwidth = 1;		c.weightx = 0.0;		c.weighty = 0.0;	        // keyword found, parse arguments	        if(setup.sval.equals("button")) {	          if((token = setup.nextToken()) != StreamTokenizer.TT_EOF) {		    String descr = setup.sval;		    if((token = setup.nextToken()) != StreamTokenizer.TT_EOF) {                      Button b = new Button(descr);		      buttons.put(b, setup.sval);	              b.addActionListener(ButtonBar.this);	              l.setConstraints(b, constraints(c, setup));	              panel.add(b);		    } else		      ButtonBar.this.error(descr+": missing button command");		  } else		      ButtonBar.this.error("unexpected end of file");	        } else if(setup.sval.equals("input")) {	          if((token = setup.nextToken()) != StreamTokenizer.TT_EOF) {		    String descr = setup.sval;		    if((token = setup.nextToken()) == 		       StreamTokenizer.TT_NUMBER) {		      int size = (int)setup.nval;		      String init = "", command = "";		      token = setup.nextToken();		      if(setup.sval.equals("button") || 		         setup.sval.equals("input") ||		         setup.sval.equals("stretch") ||		         setup.sval.equals("break"))		        setup.pushBack();		      else                        command = setup.sval;		      token = setup.nextToken();		      if(setup.sval.equals("button") || 		         setup.sval.equals("input") ||		         setup.sval.equals("stretch") ||		         setup.sval.equals("break")) {		        setup.pushBack();			init = command;		      } else                        init = setup.sval;                      TextField t = new TextField(init, size);	              if(!init.equals(command)) {		        buttons.put(t, command);	                t.addActionListener(ButtonBar.this);	              }	              fields.put(descr, t);	              l.setConstraints(t, constraints(c, setup));	              panel.add(t);		    } else		      ButtonBar.this.error(descr+": missing field size");		  } else		      ButtonBar.this.error("unexpected end of file");                }		break;	      default:	        ButtonBar.this.error("syntax error at line "+setup.lineno());            }	  }	} catch(IOException e) {	  ButtonBar.this.error("unexpected error while reading setup: "+e);	}        panel.validate();      }    });  }  private GridBagConstraints constraints(GridBagConstraints c,                                         StreamTokenizer setup)    throws IOException {    if(setup.nextToken() == StreamTokenizer.TT_WORD)       if(setup.sval.equals("break"))        c.gridwidth = GridBagConstraints.REMAINDER;      else if(setup.sval.equals("stretch"))        c.weightx = 1.0;      else setup.pushBack();    else setup.pushBack();    return c;  }      public void actionPerformed(ActionEvent evt) {    String tmp;    if((tmp = (String)buttons.get(evt.getSource())) != null) {      String cmd = "", function = null;      int idx = 0, oldidx = 0;      while((idx = tmp.indexOf('\\', oldidx)) >= 0 && 	    ++idx <= tmp.length()) {	cmd += tmp.substring(oldidx, idx-1);	switch(tmp.charAt(idx)) {	case 'b': cmd += "\b"; break;	case 'e': cmd += ""; break;	case 'n': cmd += "\n"; break;	case 'r': cmd += "\r"; break;	case '$': {	  int ni = tmp.indexOf('(', idx+1);	  if(ni < idx) {	    error("ERROR: Function: missing '('");	    break;	  }	  if(ni == ++idx) {	    error("ERROR: Function: missing name");	    break;	  }	  function = tmp.substring(idx, ni);	  idx = ni+1;	  ni = tmp.indexOf(')', idx);	  if(ni < idx) {	    error("ERROR: Function: missing ')'");	    break;	  }	  tmp = tmp.substring(idx, ni);	  idx = oldidx = 0;	  continue;	}	case '@': {	  int ni = tmp.indexOf('@', idx+1);	  if(ni < idx) {	    error("ERROR: Input Field: '@'-End Marker not found");	    break;	  }	  if(ni == ++idx) {	    error("ERROR: Input Field: no name specified");	    break;	  }	  String name = tmp.substring(idx, ni);	  idx = ni;	  TextField t;	  if(fields == null || (t = (TextField)fields.get(name)) == null) {	    error("ERROR: Input Field: requested input \""+			       name+"\" does not exist");	    break;	  }	  cmd += t.getText();	  if(clearFields) t.setText("");	  break;	}	default : cmd += tmp.substring(idx, ++idx);	}	oldidx = ++idx;      }      if(oldidx <= tmp.length()) cmd += tmp.substring(oldidx, tmp.length());            if(function != null) {	if(function.equals("break")) { 	  bus.broadcast(new TelnetCommandRequest((byte)243)); // BREAK	  return;	}	if(function.equals("exit")) { 	  try {	    System.exit(0);	  } catch(Exception e) { 	    error("cannot exit: "+e);	  }	}	if(function.equals("connect")) {	  String address = null;	  int port = -1;	  try {	    if((idx = cmd.indexOf(",")) >= 0) {	      try {		port = Integer.parseInt(cmd.substring(idx+1, cmd.length()));	      } catch(Exception e) {		port = -1;	      }	      cmd = cmd.substring(0, idx);	    }	    if(cmd.length() > 0) address = cmd;	    if(address != null) 	      if(port != -1) bus.broadcast(new SocketRequest(address, port));	      else bus.broadcast(new SocketRequest(address, 23));	    else error("connect: no address");	  } catch(Exception e) {	    error("connect(): failed");	    e.printStackTrace();	  }	} else	  if(function.equals("disconnect"))	    bus.broadcast(new SocketRequest());	  else	    if(function.equals("detach")) {		error("detach not implemented yet");	    }	    else	      error("ERROR: function not implemented: \""+function+"\"");        return;      }      // cmd += tmp.substring(oldidx, tmp.length());      if(cmd.length() > 0) try {        write(cmd.getBytes());      } catch(IOException e) {        error("send: "+e);      }    }  }  public Component getPluginVisual() {    return panel;  }  public Menu getPluginMenu() {    return null;  }  FilterPlugin source;  public void setFilterSource(FilterPlugin source) {    this.source = source;  }  public int read(byte[] b) throws IOException {    return source.read(b);  }  public void write(byte[] b) throws IOException {    source.write(b);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区蜜臀亚洲| 99r国产精品| 婷婷丁香激情综合| 亚洲激情一二三区| 中文字幕欧美一区| 亚洲欧洲国产日韩| 国产精品久久毛片a| 国产精品久久久久久久久搜平片| 久久久午夜电影| 久久久久久免费毛片精品| 亚洲精品一区二区三区福利| 日韩欧美卡一卡二| 欧美成人一区二区三区在线观看| 欧美一区二区三区免费大片| 91麻豆精品国产自产在线观看一区| 欧美日韩国产高清一区二区| 精品视频一区二区不卡| 色综合天天视频在线观看| 色先锋久久av资源部| 色婷婷狠狠综合| 欧美久久一二区| 欧美成人bangbros| 国产区在线观看成人精品| 国产亚洲制服色| 亚洲欧美综合色| 亚洲黄色av一区| 免费在线看一区| 国产精品88888| 不卡欧美aaaaa| 欧美日韩一卡二卡| 精品国产乱码久久久久久浪潮| 26uuuu精品一区二区| 国产精品乱人伦中文| 亚洲自拍偷拍麻豆| 美洲天堂一区二卡三卡四卡视频| 久久精品国产99| 成人av动漫在线| 欧美亚洲高清一区| 久久综合九色综合欧美98| 国产精品国产自产拍在线| 午夜亚洲福利老司机| 国产美女一区二区三区| 色综合咪咪久久| 欧美videos大乳护士334| 综合婷婷亚洲小说| 国精产品一区一区三区mba桃花 | 国产日韩精品视频一区| 一区二区三区在线免费视频| 国产在线精品一区二区不卡了 | 五月激情六月综合| 国产成+人+日韩+欧美+亚洲| 欧美日韩国产天堂| 国产精品高清亚洲| 久久99国产精品久久99果冻传媒| kk眼镜猥琐国模调教系列一区二区| 在线观看91av| 亚洲最色的网站| 狠狠久久亚洲欧美| 欧美一区二区三区视频免费| 亚洲一区二区三区四区中文字幕 | 久久亚区不卡日本| 性感美女久久精品| 91在线看国产| 国产精品无遮挡| 国产一区二区三区久久悠悠色av| 在线免费观看日韩欧美| 亚洲小少妇裸体bbw| 不卡电影一区二区三区| 久久久www成人免费无遮挡大片| 五月天中文字幕一区二区| 91社区在线播放| 中文字幕亚洲一区二区va在线| 国产中文字幕精品| 久久中文娱乐网| 国内精品视频666| 欧美成人综合网站| 国产一区视频在线看| 精品欧美一区二区久久 | 欧美大尺度电影在线| 亚洲va韩国va欧美va| 欧美亚一区二区| 一区二区三区毛片| 在线一区二区观看| 亚洲综合图片区| 欧美视频在线观看一区二区| 亚洲乱码精品一二三四区日韩在线| 99久久国产综合色|国产精品| 亚洲欧美一区二区在线观看| 成人av影院在线| 亚洲精品中文在线影院| 色综合天天视频在线观看| 亚洲女厕所小便bbb| 欧洲精品一区二区三区在线观看| 亚洲宅男天堂在线观看无病毒| 欧美日韩在线一区二区| 人人爽香蕉精品| 26uuu久久天堂性欧美| 波多野结衣的一区二区三区| 亚洲精品国产精品乱码不99| 欧美亚洲愉拍一区二区| 日韩高清不卡一区二区三区| 精品久久一二三区| 成人美女视频在线看| 亚洲成人综合在线| 2022国产精品视频| 99精品视频中文字幕| 婷婷久久综合九色综合伊人色| 日韩女优视频免费观看| 高清不卡在线观看av| 亚洲一区二区三区免费视频| 91精品一区二区三区久久久久久| 激情综合一区二区三区| 一区精品在线播放| 日韩精品中文字幕在线不卡尤物| 大尺度一区二区| 亚洲国产另类av| 久久精品这里都是精品| 欧美视频一区二区在线观看| 狠狠色丁香婷综合久久| 一区二区三区欧美激情| 久久久美女毛片| 在线观看av一区二区| 极品少妇xxxx偷拍精品少妇| 亚洲精品国产a| 久久精品夜夜夜夜久久| 欧美老女人在线| aaa欧美大片| 激情国产一区二区| 午夜伊人狠狠久久| 国产精品福利av| 久久久亚洲欧洲日产国码αv| 欧美亚洲国产怡红院影院| 成人三级在线视频| 精品无人码麻豆乱码1区2区| 亚洲午夜精品久久久久久久久| 久久久夜色精品亚洲| 日韩午夜在线影院| 91福利在线导航| 成人污视频在线观看| 国产资源在线一区| 日韩成人免费看| 亚洲午夜久久久久久久久电影院 | 亚洲综合男人的天堂| 国产女人水真多18毛片18精品视频 | 91精品国产色综合久久不卡蜜臀| aaa亚洲精品| 成人毛片视频在线观看| 国产精品69毛片高清亚洲| 激情国产一区二区| 久久激情综合网| 免费在线观看成人| 日韩av中文在线观看| 日韩vs国产vs欧美| 日韩高清电影一区| 伦理电影国产精品| 麻豆精品在线播放| 麻豆91精品91久久久的内涵| 三级久久三级久久| 日本中文字幕不卡| 日韩电影在线看| 色婷婷综合久久久中文字幕| 色爱区综合激月婷婷| 欧美午夜在线一二页| 欧美亚洲高清一区| 在线播放91灌醉迷j高跟美女 | 日韩欧美久久久| 精品少妇一区二区三区日产乱码 | 国产精品996| 国产999精品久久久久久绿帽| 成人综合在线视频| 成人av免费在线播放| 在线免费精品视频| 欧美精品vⅰdeose4hd| 日韩欧美久久久| 国产亲近乱来精品视频 | 在线国产电影不卡| 在线综合视频播放| 久久久久久久久久美女| 国产精品国产精品国产专区不蜜| 亚洲精品国产第一综合99久久| 亚洲va欧美va人人爽| 国产综合久久久久久久久久久久 | 亚洲精品视频在线看| 日韩和欧美的一区| 国产毛片精品视频| 99精品在线观看视频| 欧美日韩另类一区| 久久一日本道色综合| 亚洲少妇30p| 奇米精品一区二区三区四区| 国产精品2024| 欧美性三三影院| ww亚洲ww在线观看国产| 一区二区在线观看视频在线观看| 日产欧产美韩系列久久99| av激情成人网| 777色狠狠一区二区三区| 中文字幕免费观看一区| 视频一区在线播放| 欧美伊人久久久久久久久影院|