1 package org
.ltwitter
.gui
;
4 import java
.awt
.image
.BufferedImage
;
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
.*;
21 JLabel lblUser
,lblPass
,lblStatus
,lblHeader
;
23 JPasswordField txtPass
;
25 JButton btSubmit
,btExit
;
26 JPanel mainPanel
, btPanel
;
27 BufferedImage imgIcon
= null;
29 JLabel lblStatusCount
;
30 public void showForm(){
33 UIManager
.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
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
){
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());
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();
145 JOptionPane
.showMessageDialog(loginFrame
, "Twitter Error\n" +
146 "Check the username and password or\n" +
147 "Twitter may be busy. Try after sometime :)");
152 class TweetCountListener
implements DocumentListener
{
156 public void changedUpdate(DocumentEvent ev
) {
157 this.manageLength(ev
);
162 public void insertUpdate(DocumentEvent ev
) {
164 this.manageLength(ev
);
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
);