Ignore:
Timestamp:
2013-04-28T22:52:00+02:00 (12 years ago)
Author:
zverik
Message:

updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/geochat/src/geochat/GeoChatPanel.java

    r29540 r29541  
    22
    33import java.awt.BorderLayout;
     4import java.awt.Font;
    45import java.awt.event.ActionEvent;
    56import java.awt.event.ActionListener;
     7import java.awt.event.KeyEvent;
    68import java.text.SimpleDateFormat;
    79import java.util.*;
     
    2527    private JTextField input;
    2628    private JTabbedPane tabs;
    27     private JPanel chatPanel;
    2829    private JComponent noData;
    2930    private JPanel loginPanel;
     
    3637        chatPane = new JTextPane();
    3738        chatPane.setEditable(false);
     39        Font font = chatPane.getFont();
     40        chatPane.setFont(font.deriveFont(font.getSize2D() - 2));
    3841
    3942        noData = new JLabel(tr("Zoom in to see messages"), SwingConstants.CENTER);
    4043
    4144        tabs = new JTabbedPane();
    42         tabs.addTab(tr("Public"), noData);
     45        tabs.addTab(tr("Public"), chatPane);
    4346
    44         input = new JTextField();
     47        input = new JTextField() {
     48            @Override
     49            protected void processKeyEvent( KeyEvent e ) {
     50                if( e.getID() == KeyEvent.KEY_PRESSED ) {
     51                    int code = e.getKeyCode();
     52                    if( code == KeyEvent.VK_ENTER ) {
     53                        String text = input.getText();
     54                        if( text.length() > 0 ) {
     55                            connection.postMessage(text);
     56                            input.setText("");
     57                        }
     58                    } else if( code == KeyEvent.VK_TAB ) {
     59                        // todo: autocomplete name
     60                    } else if( code == KeyEvent.VK_ESCAPE ) {
     61                        if( Main.map != null && Main.map.mapView != null )
     62                            Main.map.mapView.requestFocus();
     63                    }
     64                    // Do not pass other events to JOSM
     65                    if( code != KeyEvent.VK_LEFT && code != KeyEvent.VK_HOME && code != KeyEvent.VK_RIGHT
     66                            && code != KeyEvent.VK_END && code != KeyEvent.VK_BACK_SPACE && code != KeyEvent.VK_DELETE )
     67                        e.consume();
     68                }
     69                super.processKeyEvent(e);
     70            }
    4571
    46         gcPanel = new JPanel(new BorderLayout());
    47         gcPanel.add(tabs, BorderLayout.CENTER);
    48         gcPanel.add(input, BorderLayout.SOUTH);
     72        };
    4973
    50         loginPanel = new JPanel(new BorderLayout());
    5174        final JTextField nameField = new JTextField();
    5275        String userName = JosmUserIdentityManager.getInstance().getUserName();
     
    5578        if( userName.contains("@") )
    5679            userName = userName.substring(0, userName.indexOf('@'));
    57         nameField.setText(name);
     80        nameField.setText(userName);
    5881
    5982        JButton loginButton = new JButton(tr("Login"));
     
    6487        });
    6588
     89        loginPanel = new JPanel(new BorderLayout());
    6690        loginPanel.add(nameField, BorderLayout.CENTER);
    6791        loginPanel.add(loginButton, BorderLayout.EAST);
     92        loginPanel.add(Box.createVerticalGlue(), BorderLayout.NORTH);
     93        loginPanel.add(Box.createVerticalGlue(), BorderLayout.SOUTH);
    6894
    6995        gcPanel = new JPanel(new BorderLayout());
     
    7399        // Start threads
    74100        connection = ChatServerConnection.getInstance();
     101        connection.addListener(this);
     102        connection.checkLogin();
    75103    }
    76104
    77105    public void loggedIn( String userName ) {
    78         gcPanel.remove(0);
    79         gcPanel.add(tabs, 0);
     106        if( gcPanel.getComponentCount() == 1 ) {
     107            gcPanel.remove(0);
     108            gcPanel.add(tabs, BorderLayout.CENTER);
     109            gcPanel.add(input, BorderLayout.SOUTH);
     110        }
    80111    }
    81112
     
    89120    public void statusChanged( boolean active ) {
    90121        tabs.setComponentAt(0, active ? chatPane : noData);
     122        repaint();
    91123    }
    92124
     
    99131            chatPane.setText("");
    100132        }
    101         StringBuffer sb = new StringBuffer();
     133        StringBuilder sb = new StringBuilder();
    102134        for( ChatMessage msg : messages ) {
    103135            sb.append('\n');
Note: See TracChangeset for help on using the changeset viewer.