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

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

?? mudconnector.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.VisualPlugin;import de.mud.jta.PluginBus;import de.mud.jta.PluginConfig;import de.mud.jta.event.ConfigurationListener;import de.mud.jta.event.SocketListener;import de.mud.jta.event.SocketRequest;import java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.StreamTokenizer;import java.util.Hashtable;import java.net.URL;import java.awt.Graphics;import java.awt.Panel;import java.awt.CardLayout;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.List;import java.awt.Component;import java.awt.Menu;import java.awt.MenuItem;import java.awt.Dimension;import java.awt.Button;import java.awt.Label;import java.awt.TextField;import java.awt.Image;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.ItemListener;import java.awt.event.ItemEvent;/** * The MudConnector (http://www.mudconnector.com) plugin. The plugin will * download a list of MUDs from a special list availabe at the url above * and the user can select the mud and connect to it. This usually requires * the relayd program to be run on the web server as this plugin tries to * establish connections to other hosts than the web server. * <P> * <B>Maintainer:</B> Matthias L. Jugel * * @version $Id: MudConnector.java,v 2.5 2000/03/14 10:50:00 leo Exp $ * @author Matthias L. Jugel, Marcus Mei遪er */public class MudConnector   extends Plugin   implements VisualPlugin, Runnable, ActionListener {  /** debugging level */  private final static int debug = 0;  protected URL listURL = null;  protected int step;  protected Hashtable mudList = null;  protected List mudListSelector = new List();  protected TextField mudName, mudAddr, mudPort;  protected Button connect;  protected Panel mudListPanel;  protected CardLayout layouter;  protected ProgressBar progress;  protected Label errorLabel;  protected Menu MCMenu;  /**   * Implementation of a progress bar to display the progress of   * loading the mud list.   */  class ProgressBar extends Component {    int max, current;    String text;    Dimension size = new Dimension(250, 20);    Image backingStore;    public void setMax(int max) { this.max = max; }    public void update(Graphics g) { paint(g); }    public void paint(Graphics g) {      if(backingStore == null) {        backingStore = createImage(getSize().width, getSize().height);	redraw();      }       g.drawImage(backingStore, 0, 0, this);    }    private void redraw() {      if(backingStore == null || text == null) return;      Graphics g = backingStore.getGraphics();      int width = (int) (((float)current/(float)max) * getSize().width);      g.fill3DRect(0, 0, getSize().width, getSize().height, false);      g.setColor(getBackground());      g.fill3DRect(0, 0, width, getSize().height, true);      g.setColor(getForeground());      g.setXORMode(getBackground());      g.drawString(""+(current * 100 / (max>0?max:1))+"%",                    getSize().width/2 - 15, getSize().height / 2);      g.drawString(text,                   getSize().width/2 - 		     getFontMetrics(getFont()).stringWidth(text) / 2, 		   getSize().height / 2 + 12);      paint(getGraphics());    }    public void adjust(int value, String name) {      if((current = value) > max)        current = max;      text = name;      if(((float)current / (float)step) == (int)(current / step))        redraw();    }    public void setSize(int width, int height) {      size = new Dimension(width, height);    }    public Dimension getPreferredSize() { return size; }    public Dimension getMinimumSize() { return size; }  }        /**   * Create the list plugin and get the url to the actual list.   */  public MudConnector(final PluginBus bus, final String id) {    super(bus, id);    bus.registerPluginListener(new ConfigurationListener() {      public void setConfiguration(PluginConfig config) {        String url = 	  config.getProperty("MudConnector", id, "listURL");        if(url != null) {          try {            listURL = new URL(url);          } catch(Exception e) {            MudConnector.this.error(""+e);	    errorLabel.setText("Error: "+e);          }         } else {          MudConnector.this.error("no listURL specified");	  errorLabel.setText("Missing list URL");	  layouter.show(mudListPanel, "ERROR");	}	String sstep = config.getProperty("MudConnector",id,"step");	try {	  step = Integer.parseInt(sstep);	} catch(Exception e) {	  if(sstep != null)	    MudConnector.this.error("warning: "+sstep+" is not a number");	  step = 10;	}      }    });    bus.registerPluginListener(new SocketListener() {      public void connect(String host, int port) { setup(); }      public void disconnect() { setup(); }    });    mudListPanel = new Panel(layouter = new CardLayout()) {      public void update(java.awt.Graphics g) {         paint(g);      }    };    mudListPanel.add("ERROR", errorLabel = new Label("Loading ..."));    Panel panel = new Panel(new BorderLayout());    panel.add("North", new Label("Loading mud list ... please wait"));    panel.add("Center", progress = new ProgressBar());    mudListPanel.add("PROGRESS", panel);    panel = new Panel(new BorderLayout());    panel.add("Center", mudListSelector);    mudListPanel.add("MUDLIST", panel);    panel.add("East", panel = new Panel(new GridLayout(3, 1)));    panel.add(mudName = new TextField(20));    mudName.setEditable(false);    Panel apanel = new Panel(new BorderLayout());    apanel.add("Center", mudAddr = new TextField(20));    mudAddr.setEditable(false);    apanel.add("East", mudPort = new TextField(6));    mudPort.setEditable(false);    panel.add(apanel);    panel.add(connect = new Button("Connect"));    connect.addActionListener(this);    mudListSelector.addActionListener(this);    mudListSelector.addItemListener(new ItemListener() {      public void itemStateChanged(ItemEvent evt) {        switch(evt.getStateChange()) {	  case ItemEvent.SELECTED:	    String item = (String)mudListSelector.getSelectedItem();	    mudName.setText(item);	    Object mud[] = (Object[])mudList.get(item);	    mudAddr.setText((String)mud[0]);	    mudPort.setText(((Integer)mud[1]).toString());	    break;	  case ItemEvent.DESELECTED:	    mudName.setText("");	    mudAddr.setText("");	    mudPort.setText("");	    break;	}      }    });    layouter.show(mudListPanel, "PROGRESS");    MCMenu = new Menu("MudConnector");  }  private void setup() {    if(mudList == null && listURL != null)      (new Thread(this)).start();  }  public void run() {    try {      Hashtable menuList = new Hashtable();      mudList = new Hashtable();      BufferedReader r =         new BufferedReader(new InputStreamReader(listURL.openStream()));      String line = r.readLine();      int mudCount = 0;      try {        mudCount = Integer.parseInt(line);      } catch(NumberFormatException nfe) {        error("number of muds: "+nfe);      }      System.out.println("MudConnector: expecting "+mudCount+" mud entries");      progress.setMax(mudCount);      StreamTokenizer ts = new StreamTokenizer(r);      ts.resetSyntax();      ts.whitespaceChars(0, 9);      ts.ordinaryChars(32, 255);      ts.wordChars(32, 255);      String name, host;      Integer port;      int token, counter = 0, idx = 0;      while((token = ts.nextToken()) != ts.TT_EOF) {        name = ts.sval;         if((token = ts.nextToken()) != ts.TT_EOF) {	  if(token == ts.TT_EOL)	    error(name+": unexpected end of line"	                      +", missing host and port");          host = ts.sval;          port = new Integer(23);          if((token = ts.nextToken()) != ts.TT_EOF) try {	    if(token == ts.TT_EOL)	      error(name+": default port 23");            port = new Integer(ts.sval);          } catch(NumberFormatException nfe) {            error("port for "+name+": "+nfe);          }          if(debug > 0)             error(name+" ["+host+","+port+"]");          mudList.put(name, new Object[] { host, port, new Integer(idx++) });          mudListSelector.add(name);	  progress.adjust(++counter, name);	  mudListPanel.repaint();          Menu subMenu = (Menu)menuList.get(name.charAt(0)+"");	  if(subMenu == null) {	    subMenu = new Menu(name.charAt(0)+"");	    MCMenu.add(subMenu);            menuList.put(name.charAt(0)+"", subMenu);	  }	  MenuItem item = new MenuItem(name);	  item.addActionListener(MudConnector.this);	  subMenu.add(item);        }	while(token != ts.TT_EOF && token != ts.TT_EOL)	  token = ts.nextToken();      }      System.out.println("MudConnector: found "+mudList.size()+" entries");    } catch(Exception e) {      error("error: "+e);      errorLabel.setText("Error: "+e);      layouter.show(mudListPanel, "ERROR");    }    layouter.show(mudListPanel, "MUDLIST");  }  public void actionPerformed(ActionEvent evt) {    if(evt.getSource() instanceof MenuItem) {      String item = evt.getActionCommand();      int idx = ((Integer)((Object[])mudList.get(item))[2]).intValue();      mudListSelector.select(idx);      mudListSelector.makeVisible(idx);      mudName.setText(item);      Object mud[] = (Object[])mudList.get(item);      mudAddr.setText((String)mud[0]);      mudPort.setText(((Integer)mud[1]).toString());    }     String addr = mudAddr.getText();    String port = mudPort.getText();    if(addr != null) {      bus.broadcast(new SocketRequest());      if(port == null || port.length() <= 0)        port = "23";      bus.broadcast(new SocketRequest(addr, Integer.parseInt(port)));    }  }  public Component getPluginVisual() {    return mudListPanel;  }  public Menu getPluginMenu() {    return MCMenu;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类综合日韩欧美亚洲| 在线不卡一区二区| 久久精品一区二区三区不卡| 久久99国内精品| 久久蜜桃香蕉精品一区二区三区| 国产精品18久久久久久久久久久久| 久久人人97超碰com| 风间由美性色一区二区三区| 一区二区中文视频| 欧美日韩一区三区四区| 日本91福利区| 久久久99免费| 欧美综合亚洲图片综合区| 午夜精品久久久久久不卡8050| 日韩欧美电影在线| 成人精品视频一区二区三区尤物| 亚洲精品福利视频网站| 日韩视频在线你懂得| 国产成人免费视频网站高清观看视频| 亚洲猫色日本管| 精品盗摄一区二区三区| 色婷婷久久久久swag精品| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕不卡三区| 欧美精品日韩一本| 国产凹凸在线观看一区二区| 亚洲综合小说图片| 久久综合成人精品亚洲另类欧美 | 欧美日韩精品免费| 黄色日韩网站视频| 亚洲已满18点击进入久久| 精品入口麻豆88视频| 91国产免费看| 成人激情动漫在线观看| 麻豆精品视频在线| 亚洲二区视频在线| 中文字幕一区二区在线播放| 欧美videos大乳护士334| 色狠狠色噜噜噜综合网| 成人网男人的天堂| 国产一区二区免费视频| 婷婷久久综合九色综合绿巨人| 国产精品久久久久久亚洲毛片| 精品美女在线播放| 日韩欧美国产综合一区 | 国产宾馆实践打屁股91| 日本系列欧美系列| 一区二区三区精品视频在线| 国产精品久久久久久福利一牛影视| 精品奇米国产一区二区三区| 91精品国产综合久久国产大片| 欧美影院一区二区三区| 色综合天天视频在线观看| 成人国产精品免费观看动漫| 国产麻豆一精品一av一免费| 国产中文一区二区三区| 韩国女主播一区| 国内精品在线播放| 国产一区视频导航| 国产高清在线精品| 成人免费看视频| 丰满少妇在线播放bd日韩电影| 国产精品自拍在线| 懂色中文一区二区在线播放| 国产成人在线影院| 国产99精品国产| 成人国产精品免费观看动漫| www.亚洲色图.com| 色综合天天做天天爱| 色爱区综合激月婷婷| 欧美日韩在线亚洲一区蜜芽| 欧美精品在线一区二区三区| 日韩欧美电影在线| 日本一区二区三区dvd视频在线| 国产欧美一区二区精品性| 国产精品五月天| 亚洲免费在线电影| 日日噜噜夜夜狠狠视频欧美人| 日韩福利电影在线观看| 国产在线麻豆精品观看| www.色精品| 欧美久久久久免费| 2020国产精品自拍| 亚洲欧洲精品一区二区三区| 亚洲va韩国va欧美va| 看国产成人h片视频| 成人性生交大片免费看中文网站| av电影一区二区| 欧美日本在线一区| 欧美成人a∨高清免费观看| 国产欧美一区二区精品仙草咪| 亚洲美女在线一区| 久久99最新地址| 91色九色蝌蚪| 精品国产一区二区亚洲人成毛片| 欧美激情一区二区三区全黄| 亚洲一区二区欧美| 国产一区二区91| 欧美伊人久久久久久久久影院| 欧美成人激情免费网| 亚洲少妇最新在线视频| 毛片av一区二区| 在线免费亚洲电影| 久久久国产精华| 免费高清在线视频一区·| 91在线观看免费视频| 精品粉嫩超白一线天av| 午夜国产不卡在线观看视频| 成人不卡免费av| 久久日韩精品一区二区五区| 亚洲成av人**亚洲成av**| 不卡一区在线观看| 久久久精品综合| 久久精品国产亚洲aⅴ| 欧美性色黄大片| 亚洲国产成人一区二区三区| 久久精品国产久精国产| 欧美喷潮久久久xxxxx| 亚洲人精品一区| 国产一区二区三区av电影 | 粉嫩欧美一区二区三区高清影视| 欧美伊人精品成人久久综合97| 国产精品免费av| 国产精品夜夜嗨| 欧美电视剧免费全集观看| 午夜在线成人av| 欧美伊人久久久久久午夜久久久久| 国产精品久久久爽爽爽麻豆色哟哟| 激情成人午夜视频| 精品精品国产高清a毛片牛牛| 五月婷婷久久丁香| 欧美婷婷六月丁香综合色| 一区在线观看视频| av电影天堂一区二区在线观看| 亚洲国产精品黑人久久久| 国产成人免费av在线| 国产视频一区在线播放| 国产伦精品一区二区三区视频青涩| 日韩视频一区在线观看| 乱中年女人伦av一区二区| 欧美一区二区三区四区高清| 日日夜夜免费精品视频| 欧美一区二区三区视频在线| 免费看黄色91| 欧美精品一区二区蜜臀亚洲| 韩国欧美国产一区| 国产欧美1区2区3区| jlzzjlzz国产精品久久| 亚洲欧美乱综合| 欧美亚洲国产一区二区三区va| 亚洲一区影音先锋| 欧美日韩成人高清| 美女视频网站久久| 国产性天天综合网| 91免费版在线看| 午夜精品久久久久久久久久| 日韩女优视频免费观看| 国产成人精品网址| 亚洲精品久久久蜜桃| 中文字幕精品三区| 99精品桃花视频在线观看| 亚洲乱码国产乱码精品精小说| 欧美日本视频在线| 国内精品视频一区二区三区八戒| 国产精品网站导航| 在线免费亚洲电影| 国产在线视视频有精品| 夜夜精品视频一区二区| 日韩一区二区三区电影| a级精品国产片在线观看| 舔着乳尖日韩一区| 国产婷婷一区二区| 欧美性三三影院| 国产馆精品极品| 亚洲二区在线视频| 国产午夜久久久久| 欧美日韩你懂得| 成av人片一区二区| 美美哒免费高清在线观看视频一区二区| 久久久久久久免费视频了| 欧美性生活影院| 成人国产精品视频| 久久电影网电视剧免费观看| 亚洲精品乱码久久久久久久久| 欧美大片一区二区| 中文字幕免费不卡在线| 欧美日韩免费高清一区色橹橹| 国产精品一级二级三级| 午夜精品123| 亚洲精品日产精品乱码不卡| 国产香蕉久久精品综合网| 欧美精品在线一区二区| 91片黄在线观看| 国产九色精品成人porny| 亚洲成av人影院| 亚洲综合成人网| 亚洲男人天堂av| 亚洲欧洲色图综合| 日本一区二区三区四区 | av在线不卡网|