initial commit on move to git
[ltwitter.git] / src / org / ltwitter / gui / Client.java
blob85b1c3ef13b84fb8501062cb51e0853f60b22268
1 package org.ltwitter.gui;
3 import java.awt.*;
4 import java.awt.image.BufferedImage;
5 import javax.swing.*;
6 import java.awt.FlowLayout;
7 import java.awt.event.ActionListener;
8 import java.awt.event.ActionEvent;
10 import javax.swing.event.DocumentEvent;
11 import javax.swing.event.DocumentListener;
12 import javax.swing.text.Document;
14 import winterwell.jtwitter.*;
17 public class Client {
19 Icon img;
20 JFrame loginFrame;
21 JLabel lblUser,lblPass,lblStatus,lblHeader;
22 JTextField txtUser;
23 JPasswordField txtPass;
24 JTextArea txtStatus;
25 JButton btSubmit,btExit;
26 JPanel mainPanel, btPanel;
27 BufferedImage imgIcon = null;
28 JLabel lblLastStatus;
29 JLabel lblStatusCount;
30 public void showForm(){
32 try{
33 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
35 }catch(Exception e){
36 JOptionPane.showMessageDialog(null, "Unable to load system look and feel !");
40 //create, configure and show components
42 loginFrame = new JFrame("LTwitter");
43 lblUser = new JLabel("Enter Username");
44 lblPass = new JLabel("Enter Password");
45 lblStatus = new JLabel("What are you doing now ? ");
46 lblLastStatus = new JLabel();
48 txtUser = new JTextField(20);
49 txtPass = new JPasswordField(20);
51 txtStatus = new JTextArea(10,10);
52 txtStatus.setLineWrap(true);
53 txtStatus.getDocument().addDocumentListener(new TweetCountListener());
54 JScrollPane scroller = new JScrollPane(txtStatus);
55 scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
56 scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
58 btSubmit = new JButton("Tweet");
59 btSubmit.addActionListener(new TweetListener());
62 img = new ImageIcon("images/LTwitter2.jpg");
63 lblHeader = new JLabel(img);
66 lblStatusCount = new JLabel(new Integer(140).toString());
69 //creating panels and adding the above components in suitable manner
71 mainPanel = new JPanel();
72 mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS));
73 mainPanel.add(lblUser);
74 mainPanel.add(txtUser);
75 mainPanel.add(lblPass);
76 mainPanel.add(txtPass);
77 mainPanel.add(lblStatus);
78 mainPanel.add(scroller);
79 mainPanel.add(lblStatusCount);
80 mainPanel.add(lblLastStatus);
82 btPanel = new JPanel();
83 btPanel.add(btSubmit);
85 loginFrame.setLayout(new FlowLayout());
86 loginFrame.getContentPane().add(lblHeader);
87 loginFrame.getContentPane().add(mainPanel);
88 loginFrame.getContentPane().add(btPanel);
93 //centering the frame on the screen
94 loginFrame.setSize(300,430);
95 Dimension dw = Toolkit.getDefaultToolkit().getScreenSize();
96 int wx = loginFrame.getSize().width;
97 int wy = loginFrame.getSize().height;
98 int x = (dw.width-wx)/2;
99 int y = (dw.height-wy)/2;
100 loginFrame.setLocation(x, y);
106 loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
107 loginFrame.setResizable(false);
108 loginFrame.setVisible(true);
114 //inner class for button listener
115 class TweetListener implements ActionListener{
116 public void actionPerformed(ActionEvent ev){
117 //twitter
118 //setting the status of user
121 String user = txtUser.getText();
122 char[] pass = txtPass.getPassword();
124 String password = "";
125 for (int i=0;i<pass.length;i++)
126 password = password+pass[i];
129 //lblLastStatus.setText("Last tweet:"+txtStatus.getText());
131 try{
132 Twitter twitter = new Twitter(user,password);
133 String status = txtStatus.getText();
135 twitter.setStatus(status);
137 JOptionPane.showMessageDialog(null, "You just Tweeted!");
139 txtStatus.setText("");
140 txtStatus.requestFocus();
143 }catch(Exception e){
145 JOptionPane.showMessageDialog(loginFrame, "Twitter Error\n" +
146 "Check the username and password or\n" +
147 "Twitter may be busy. Try after sometime :)");
150 }//inner class
152 class TweetCountListener implements DocumentListener{
155 @Override
156 public void changedUpdate(DocumentEvent ev) {
157 this.manageLength(ev);
161 @Override
162 public void insertUpdate(DocumentEvent ev) {
164 this.manageLength(ev);
167 @Override
168 public void removeUpdate(DocumentEvent ev) {
169 this.manageLength(ev);
173 public void manageLength(DocumentEvent ev){
174 Document doc = ev.getDocument();
175 int remLength = 140-doc.getLength();
177 lblStatusCount.setText("Remaining: "+remLength);