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

📄 coordinator.java

📁 ICE3.3.0--聊天程序服务器端demo
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    synchronized public void exit()    {        logout();        Runtime.getRuntime().removeShutdownHook(_shutdownHook);        _mainView.dispose();        System.exit(0);    }    public void initEvent(final String[] users)    {        SwingUtilities.invokeLater(new Runnable()        {            public void run()            {                for(int cont = 0; cont < users.length; ++cont)                {                    _users.addElement(users[cont]);                }            }        });    }    public void userJoinEvent(final long timestamp, final String name)    {        SwingUtilities.invokeLater(new Runnable()        {            public void run()            {                _users.addElement(name);                _chatView.appendMessage(ChatUtils.formatTimestamp(timestamp) + " - <system-message> - " + name +                                        " joined.");            }        });    }    public void userLeaveEvent(final long timestamp, final String name)    {        SwingUtilities.invokeLater(new Runnable()        {            public void run()            {                int index = _users.indexOf(name);                if(index != -1)                {                    _users.remove(index);                    _chatView.appendMessage(ChatUtils.formatTimestamp(timestamp) + " - " + "<system-message> - " + name +                                            " left.");                }            }        });    }    public void userSayEvent(final long timestamp, final String name, final String message)    {        SwingUtilities.invokeLater(new Runnable()        {            public void run()            {                _chatView.appendMessage(ChatUtils.formatTimestamp(timestamp) + " - <" + name + "> " +                                        ChatUtils.unstripHtml(message));            }        });    }    synchronized public void sendMessage(String message)    {        if(_session != null)        {            try            {                ChatUtils.validateMessage(message);                _session.proxy().send_async(new AMI_ChatSession_sendI(_username, message), message);            }            catch(Chat.InvalidMessageException ex)            {                _chatView.appendMessage("<system-message> - " + ex.reason);            }        }    }    public void setState(ClientState state)    {        _state = state;        if(state == ClientState.Disconnected)        {            _loginView.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));            _chatView.setConnected(false);            _loginView.setEnabled(true);            _loginView.setConnected(false);            _mainView.setEnabled(false);            _mainView.setConnected(false);            _users.clear();        }        else if(state == ClientState.Connecting)        {            _loginView.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));            _loginView.setEnabled(false);            _mainView.setEnabled(false);        }        else if(state == ClientState.Connected)        {            _chatView.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));            _loginView.setConnected(true);            _chatView.setConnected(true);            _mainView.setEnabled(true);            _mainView.setConnected(true);        }        else if(state == ClientState.Disconnecting)        {            _chatView.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));            _mainView.setEnabled(false);        }    }    public void setError(final String message)    {        SwingUtilities.invokeLater(new Runnable()        {            public void run()            {                if(_state != ClientState.Connected)                {                    setState(ClientState.Disconnected);                    ErrorView errorView = new ErrorView(_mainView, message);                    errorView.setSize(430, 200);                    errorView.setMinimumSize(new Dimension(430, 200));                    errorView.setMaximumSize(new Dimension(430, 200));                    errorView.setResizable(false);                    ChatDemoGUIFactory.centerComponent(errorView, _mainView);                    errorView.show();                }                else                {                    _mainView.setEnabled(false);                    _mainView.setConnected(false);                    _chatView.appendError(message);                }            }        });    }    public String getUsername()    {        return _username;    }    //    // Callback for the send async operation.    //    public class AMI_ChatSession_sendI extends Chat.AMI_ChatSession_send    {        public AMI_ChatSession_sendI(String name, String message)        {            _name = name;            _message = message;        }        public void ice_response(long timestamp)        {            userSayEvent(timestamp, _name, _message);        }        public void ice_exception(Ice.UserException ex)        {            if(ex instanceof Chat.InvalidMessageException)            {                final Chat.InvalidMessageException e = (Chat.InvalidMessageException)ex;                SwingUtilities.invokeLater(new Runnable()                {                    public void run()                    {                        _chatView.appendMessage("<system-message> - " + e.reason);                    }                });            }        }        public void ice_exception(final Ice.LocalException ex)        {            new Thread()            {                public void run()                {                    if(_session != null)                    {                        _session.close();                        _session = null;                    }                    try                    {                        if(_communicator != null)                        {                            _communicator.destroy();                            _communicator = null;                        }                    }                    catch(Ice.LocalException e)                    {                    }                    setError("<system-message> - The connection with the server was unexpectedly lost.\n" +  ChatUtils.stack2string(ex) +                             "\nYou can try to login again from the File menu.");                }            }.start();        }        private final String _name;        private final String _message;    }    public class ErrorView extends JDialog    {        private JButton bttClose = new JButton("Close");        ErrorView(Frame frame, String message)        {            super(frame, true);            setTitle("Error - Chat Demo");            ActionListener closeListener = new ActionListener()            {                public void actionPerformed(ActionEvent e)                {                    hide();                }            };            bttClose.addActionListener(closeListener);            final JTextArea txtErrorMessage = new JTextArea(message, 5, 30);            txtErrorMessage.setLineWrap(true);            JPanel errorPanel = null; // Build the error panel.            {                FormLayout layout = new FormLayout("center:pref:grow", "center:pref:grow");                DefaultFormBuilder builder = new DefaultFormBuilder(layout);                builder.setDefaultDialogBorder();                javax.swing.ImageIcon icon = MainView.getIcon("/icons/32x32/error.png");                if(icon != null)                {                    builder.append(new JLabel(icon));                    builder.nextLine();                }                txtErrorMessage.setEditable(false);                builder.append(ChatDemoGUIFactory.createStrippedScrollPane(txtErrorMessage));                errorPanel = builder.getPanel();            }            JPanel actionsPanel = null; // Build a panel for put actions.            {                FormLayout layout = new FormLayout("center:3dlu:grow", "pref");                DefaultFormBuilder builder = new DefaultFormBuilder(layout);                builder.append(bttClose);                actionsPanel = builder.getPanel();                getRootPane().setDefaultButton(bttClose);            }            FormLayout layout = new FormLayout("fill:pref:grow", "pref");            DefaultFormBuilder builder = new DefaultFormBuilder(layout);            builder.append(errorPanel);            builder.nextLine();            builder.append(actionsPanel);            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));            setContentPane(builder.getPanel());            final JPopupMenu textMenu = new JPopupMenu();            textMenu.add(new DefaultEditorKit.CopyAction());            textMenu.pack();            txtErrorMessage.addMouseListener(new MouseAdapter()                {                    public void mousePressed(MouseEvent e)                    {                        if (e.isPopupTrigger()) // BUTTON3 is the right mouse button                        {                            textMenu.show(txtErrorMessage, e.getX(), e.getY());                        }                    }                });        }    }    private ClientState _state;    private final String[] _args;    private final MainView _mainView;    private final ChatView _chatView;    private final LoginView _loginView;    private final DefaultListModel _users;    private final Thread _shutdownHook;    private Ice.Communicator _communicator = null;    private Session _session = null;    private String _username = "";}

⌨️ 快捷键说明

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