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

📄 console.java

📁 piweurrrrq i o fhsadhfka fd dskajc zxkjcnkjsahc
💻 JAVA
字号:
/* * Copyright (c) 2000 Lyrisoft Solutions, Inc. * Used by permission */package com.lyrisoft.chat.client.gui.awt102;import java.awt.*;import com.lyrisoft.chat.Translator;import com.lyrisoft.awt.*;import com.lyrisoft.chat.ICommands;import com.lyrisoft.chat.client.gui.*;import com.lyrisoft.chat.server.local.IChatServer;import com.lyrisoft.chat.client.gui.IQuery;import com.lyrisoft.chat.client.gui.IQueryCallback;public class Console     extends Panel     implements IConsole, HyperlinkReceiver, IQueryCallback{    protected int roomCnt = 0;    protected int userCnt = 0;    protected Color bgColor;    protected IChatClientInputReceiver _inputReceiver;    private IChatServer _server;    private List lstRooms;    private List lstUsers;    private IChatGUIFactory _factory;    private Label lblUserCnt;    private Label lblRoomCnt;    private Button btnCreate;    private Button btnUpdate;    private Button btnJoin;    private Button btnExit;    private MessageView _txtMessages;    private boolean _keepGoing = true;    private static final int CREATE = 0;    private static final int JOIN = 1;    private static final int QUIT = 2;    public Console(IChatServer server, IChatClientInputReceiver receiver, IChatGUIFactory f)     {        _factory = f;        _server = server;        _inputReceiver = receiver;        bgColor = (Color)f.getAttribute("bgColor");        if (bgColor == null) {            bgColor = new Color(0x384CC7);        }        setupGUI();    }    public void handleHyperlink(String link) {        _inputReceiver.inputEvent("console", ICommands.HYPERLINK + " " + link);    }    public void setupGUI() {        GridBagLayout gridBag = new GridBagLayout();        setLayout(gridBag);        setBackground(bgColor);        int row = 0;                // title label        Label l = createLabel(Translator.getMessage("label.console"));        gridBag.setConstraints(l,                               Constraints.create(0, row, 2, 1, 1.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.HORIZONTAL,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(l);        // update button & exit buttons        btnUpdate = new Button(Translator.getMessage("label.update"));        btnUpdate.setBackground(bgColor);        btnUpdate.setForeground(Color.yellow);        gridBag.setConstraints(btnUpdate,                               Constraints.create(2, row, 1, 1, 0.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.NONE,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(btnUpdate);        btnExit = new Button("Sign off");        btnExit.setBackground(bgColor);        btnExit.setForeground(Color.yellow);        gridBag.setConstraints(btnExit,                               Constraints.create(3, row, 1, 1, 0.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.NONE,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(btnExit);                // ----- // ----- // ----- // ----- // ----- // ----- // -----         row++;        _txtMessages = new MessageView(this);//        FixedPanel p = new FixedPanel(new ScrollView(_txtMessages), 400, 75);        FixedPanel p = new FixedPanel(_txtMessages, 400, 75);        gridBag.setConstraints(p, Constraints.create(0, row, 4, 1, 0.0, 0.0,                                                                GridBagConstraints.CENTER,                                                                GridBagConstraints.BOTH,                                                                new Insets(5, 5, 5, 5),                                                                0, 0));        add(p);        // ----- // ----- // ----- // ----- // ----- // ----- // -----         row++;        l = createLabel(Translator.getMessage("label.rooms"));        gridBag.setConstraints(l,                               Constraints.create(0, row, 1, 1, 1.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.HORIZONTAL,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(l);        lblRoomCnt = createLabel("(0)");        gridBag.setConstraints(lblRoomCnt,                               Constraints.create(1, row, 1, 1, 1.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.HORIZONTAL,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(lblRoomCnt);        l = createLabel(Translator.getMessage("label.users"));        gridBag.setConstraints(l,                               Constraints.create(2, row, 1, 1, 1.0, 0.0,                                                 GridBagConstraints.WEST,                                                  GridBagConstraints.HORIZONTAL,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(l);        lblUserCnt = createLabel("(0)");        gridBag.setConstraints(lblUserCnt,                               Constraints.create(3, row, 1, 1, 1.0, 0.0,                                                  GridBagConstraints.WEST,                                                  GridBagConstraints.HORIZONTAL,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(lblUserCnt);        // ----- // ----- // ----- // ----- // ----- // ----- // -----         row++;        // lists        lstRooms = new List();        lstRooms.setBackground(Color.lightGray);        gridBag.setConstraints(lstRooms,                               Constraints.create(0, row, 2, 1, 1.0, 1.0,                                                  GridBagConstraints.CENTER,                                                  GridBagConstraints.BOTH,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(lstRooms);        lstUsers = new List();        lstUsers.setBackground(Color.lightGray);        gridBag.setConstraints(lstUsers,                               Constraints.create(2, row, 2, 1, 1.0, 1.0,                                                  GridBagConstraints.CENTER,                                                  GridBagConstraints.BOTH,                                                  new Insets(0, 0, 0, 0),                                                  0, 0));        add(lstUsers);        // ----- // ----- // ----- // ----- // ----- // ----- // -----         row++;        btnJoin = new Button(Translator.getMessage("label.join.room"));        btnJoin.setForeground(Color.yellow);        btnJoin.setBackground(bgColor);        gridBag.setConstraints(btnJoin, Constraints.create(0, row, 1, 1, 0.0, 0.0,                                                           GridBagConstraints.WEST,                                                           GridBagConstraints.NONE,                                                           new Insets(0, 0, 0, 0),                                                           0, 0));        add(btnJoin);        btnCreate = new Button(Translator.getMessage("label.create.room"));        btnCreate.setForeground(Color.yellow);        btnCreate.setBackground(bgColor);        gridBag.setConstraints(btnCreate, Constraints.create(1, row, 1, 1, 0.0, 0.0,                                                             GridBagConstraints.WEST,                                                             GridBagConstraints.NONE,                                                             new Insets(0, 0, 0, 0),                                                             0, 0));        add(btnCreate);    }    public Label createLabel(String label) {        Label l = new Label(label);        l.setBackground(bgColor);        l.setForeground(Color.white);        l.setFont(new Font("Dialog", Font.BOLD, 14));        return l;    }    public void addUser(String user, boolean inform) {        synchronized (lstUsers) {            lstUsers.addItem(user);        }        userCnt++;        lblUserCnt.setText("(" + userCnt + ")");        if (inform) {            displayMessage(Translator.getMessage("signon", user));        }    }    public void addRoom(String room, String count, boolean inform) {        synchronized (lstRooms) {            String users = null;            if (count.equals("1")) {                users = Translator.getMessage("users1", "1");            } else {                users = Translator.getMessage("users2", count);            }            lstRooms.addItem(room + " (" + users + ")");        }        roomCnt++;        lblRoomCnt.setText("(" + roomCnt + ")");        if (inform) {            displayMessage(Translator.getMessage("room.created", "\"" + room + "\""));        }    }    public void removeRoom(String room, boolean inform) {        String upperCaseRoom = room.toUpperCase();        boolean found = false;        synchronized (lstRooms) {            int cnt = lstRooms.countItems();            for (int i=0; i < cnt; i++) {                if (lstRooms.getItem(i).toUpperCase().startsWith(upperCaseRoom)) {                    lstRooms.delItem(i);                    found = true;                    break;                }            }        }        if (found) {            roomCnt--;            lblRoomCnt.setText("(" + roomCnt + ")");            if (inform) {                displayMessage(Translator.getMessage("room.destroyed", "\"" + room + "\""));            }        }    }        public void removeUser(String user, boolean inform) {        boolean found = false;        synchronized (lstUsers) {            int cnt = lstUsers.countItems();            for (int i=0; i < cnt; i++) {                if (lstUsers.getItem(i).equals(user)) {                    lstUsers.delItem(i);                    found = true;                    break;                }            }        }        if (found) {            userCnt--;            lblUserCnt.setText("(" + userCnt + ")");            if (inform) {                displayMessage(Translator.getMessage("signonff", user));            }        }    }    public void clearRooms() {        synchronized (lstRooms) {            lstRooms.delItems(0, lstRooms.countItems()-1);            roomCnt = 0;            lblRoomCnt.setText("(" + roomCnt + ")");        }    }    public void clearUsers() {        synchronized (lstUsers) {            lstUsers.delItems(0, lstUsers.countItems()-1);            userCnt = 0;            lblUserCnt.setText("(" + userCnt + ")");        }    }    public boolean action(Event e, Object arg) {        if (e.id == Event.ACTION_EVENT) {            if (e.target == lstRooms) {                String s = (String)arg;                int idx = s.indexOf("(");                if (idx >= 0) {                    String room = s.substring(0, idx-1);                    _server.joinRoom(room, null);                }                return true;            } else if (e.target == lstUsers) {                _inputReceiver.userDoubleClick((String)arg);                return true;            }        }        return super.action(e, arg);    }    private String[] getRoomList() {        synchronized (lstRooms) {            String[] list = new String[lstRooms.countItems()];            for (int i=0; i < list.length; i++) {                list[i] = lstRooms.getItem(i);            }            return list;        }    }    public boolean handleEvent(Event e) {        if (e.id == Event.ACTION_EVENT) {            if (e.target == btnCreate) {                IQuery q = _factory.createQuery(Translator.getMessage("label.creating.room"),                                                null, null, true,                                                 Translator.getMessage("label.room.name") + ":");                q.setCallbackParams(CREATE, this);                q.show();            }            if (e.target == btnJoin) {                IQuery q = _factory.createQuery(Translator.getMessage("label.joining.room"),                                                Translator.getMessage("label.room") + ":",                                                getRoomList(), false, null);                q.setCallbackParams(JOIN, this);                q.show();            }            if (e.target == btnUpdate) {                _server.requestRoomList();                _server.requestUserList();                return true;            }            if (e.target == btnExit) {                IQuery q = _factory.createQuery(Translator.getMessage("confirm.exit"),                                                null, null, false, null);                q.setCallbackParams(QUIT, this);                q.show();                return true;            }        }         return super.handleEvent(e);    }    public void displayPrivateMessage(String user, String message) {        _factory.playAudioClip("private.au");        _txtMessages.displayPrivateMessage(user, message);    }    public void displayMessage(String user, String message) {        _txtMessages.displayMessage(user, message);    }    public void displayMessage(String message) {        _txtMessages.displayMessage(message);    }    public void displayError(String error) {//        _factory.playAudioClip("error.au");        _txtMessages.displayError(error);    }    public void displayPrivateEmote(String user, String message) {        _factory.playAudioClip("private.au");        _txtMessages.displayPrivateEmote(user, message);    }    public void pleaseStop() {        _keepGoing = false;    }    public void handleQuery(int id, IQuery q) {        if (q.getCanceled()) {            q.dispose();            return;        }        String user;        String msg;        switch (id) {        case CREATE:            _server.joinRoom(q.getText(), null);            break;        case JOIN:            String s = q.getSelection();            int idx = s.indexOf("(");            if (idx >= 0) {                String room = s.substring(0, idx-1);                _server.joinRoom(room, null);            }            break;        case QUIT:            _server.signOff();            break;        }        q.dispose();    }}

⌨️ 快捷键说明

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