--- /dev/null
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.*;
+import org.apache.http.client.entity.*;
+import org.apache.http.client.methods.*;
+import org.apache.http.cookie.*;
+import org.apache.http.impl.client.*;
+import org.apache.http.message.*;
+import org.apache.http.protocol.*;
+import org.apache.http.util.*;
+
+import java.io.*;
+import java.util.*;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: g9133
+ * Date: 11/06/20
+ * Time: 10:35
+ * To change this template use File | Settings | File Templates.
+ */
+public class BelugaClient {
+ private static CookieStore cookieStore = null;
+
+
+ public static DefaultHttpClient getHttpClient() {
+ DefaultHttpClient client = new DefaultHttpClient();
+
+ client.setCookieStore(cookieStore);
+
+ return client;
+ }
+
+ public static HashMap login(String e_mail, String password) throws Exception {
+ DefaultHttpClient client = new DefaultHttpClient();
+ HttpGet get = new HttpGet("http://belugapods.com/login");
+ HashMap map = new HashMap();
+
+ try {
+ HttpResponse res = client.execute(get);
+ HttpEntity ent = res.getEntity();
+
+ System.out.println("Login form get: " + res.getStatusLine());
+ EntityUtils.consume(ent);
+
+ System.out.println("Initial set of cookies:");
+
+ List<Cookie> cookies = client.getCookieStore().getCookies();
+
+ if (cookies.isEmpty()) {
+ System.out.println("None");
+ } else {
+ for (int i = 0; i < cookies.size(); i++) {
+ System.out.println("- " + cookies.get(i).toString());
+ }
+ }
+
+
+ HttpPost httpost = new HttpPost("https://belugapods.com/login");
+
+ List <NameValuePair> nvps = new ArrayList <NameValuePair>();
+
+ map.put("_xsrf", cookies.get(0).getValue());
+
+ nvps.add(new BasicNameValuePair("_xsrf" , cookies.get(0).getValue()));
+ nvps.add(new BasicNameValuePair("ident" , e_mail));
+ nvps.add(new BasicNameValuePair("password", password));
+
+ httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
+
+ res = client.execute(httpost);
+ ent = res.getEntity();
+
+ System.out.println("Login form get: " + res.getStatusLine());
+
+ EntityUtils.consume(ent);
+
+ System.out.println("Post logon cookies:");
+
+ cookies = client.getCookieStore().getCookies();
+ cookieStore = client.getCookieStore();
+
+ if (cookies.isEmpty()) {
+ System.out.println("None");
+ } else {
+ for (int i = 0; i < cookies.size(); i++) {
+ System.out.println("- " + cookies.get(i).toString());
+ }
+
+ if (cookies.size() < 2) {
+ return null;
+ }
+ }
+
+ get = new HttpGet("http://belugapods.com/pods");
+ res = client.execute(get);
+ ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = "";
+ ArrayList pods = new ArrayList();
+
+ while ((line = reader.readLine()) != null) {
+ if (line.indexOf("userimg") > -1) {
+ map.put("user_image", line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+
+ reader.readLine();
+ line = reader.readLine();
+
+ map.put("user_name", line.replaceAll("</.*", "").replaceAll(".*>", ""));
+ }
+
+ if (line.indexOf("\"pod\"") > -1) {
+ PodBean pb = new PodBean();
+
+ pb.setId(line.replaceAll("\">.*", "").replaceAll(".*\"", ""));
+
+ reader.readLine();
+ reader.readLine();
+ line = reader.readLine();
+
+ pb.setPodImg(line.replaceAll("\">.*", "").replaceAll(".*\"", ""));
+
+ reader.readLine();
+ reader.readLine();
+ reader.readLine();
+ line = reader.readLine();
+
+ pb.setPodTime(line.replaceAll("</.*", "").replaceAll(".*>", ""));
+
+ reader.readLine();
+ line = reader.readLine();
+
+ pb.setPodTitle(line.replaceAll("</.*", "").replaceAll(".*>", ""));
+
+ line = reader.readLine();
+
+ if (line.indexOf("</em>") > -1) {
+ pb.setLastMessage(line.replaceAll("</.*", "").replaceAll(".*>", ""));
+ } else {
+ pb.setLastMessage(line.replaceAll(".*>", ""));
+ pb.setLastMessage(pb.getLastMessage() + System.getProperty("line.separator"));
+
+ do {
+ pb.setLastMessage(pb.getLastMessage() + System.getProperty("line.separator"));
+ } while (line.indexOf("</") > -1);
+ }
+
+ pb.setE_mail(e_mail);
+ pb.setPassword(password);
+ pods.add(pb);
+ }
+ }
+
+ map.put("pods", pods.toArray(new PodBean[pods.size()]));
+ map.put("client", client);
+
+// get = new HttpGet("http://belugapods.com/pod/4daef271e694aa4e6e011f7e");
+// res = client.execute(get);
+// ent = res.getEntity();
+//
+// reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+//
+// while ((line = reader.readLine()) != null) {
+// System.out.println(line);
+// }
+ } catch (Exception ex) {
+ throw ex;
+ }
+
+ return map;
+ }
+
+ public static void check() {
+ DefaultHttpClient client = new DefaultHttpClient();
+ HttpGet get = new HttpGet("http://belugapods.com/fblogin?next=");
+
+ try {
+ HttpResponse res = client.execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = null;
+
+ boolean isForm = false;
+
+ while ((line = reader.readLine()) != null) {
+ String[] parce = line.split(">");
+
+ for (int i = 0; i < parce.length; i++) {
+ if (parce[i].indexOf("<form") > -1) {
+ isForm = true;
+ }
+ if (isForm) {
+ if (parce[i].indexOf("input") > -1 && parce[i].indexOf("name=") > -1) {
+
+
+ System.out.print(parce[i].replaceAll(".*name=\"", "").replaceAll("\".*", ""));
+ System.out.print(",");
+ System.out.println(parce[i].replaceAll(".*value=\"", "").replaceAll("\".*", ""));
+ }
+ }
+
+ if (parce[i].indexOf("</form") > -1) {
+ isForm = false;
+ }
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+ BelugaClient.check();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+}
--- /dev/null
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+ <NonVisualComponents>
+ <Component class="javax.swing.ButtonGroup" name="buttonGroup">
+ </Component>
+ <Container class="javax.swing.JPopupMenu" name="jPopupMenu">
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+ <Property name="useNullLayout" type="boolean" value="true"/>
+ </Layout>
+ <SubComponents>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_paste1">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+V"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="80"/>
+ <Property name="text" type="java.lang.String" value="Paste"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_paste1ActionPerformed"/>
+ </Events>
+ </MenuItem>
+ </SubComponents>
+ </Container>
+ <Menu class="javax.swing.JMenuBar" name="jMenuBar">
+ <SubComponents>
+ <Menu class="javax.swing.JMenu" name="jMenu_file">
+ <Properties>
+ <Property name="mnemonic" type="int" value="70"/>
+ <Property name="text" type="java.lang.String" value="File"/>
+ </Properties>
+ <SubComponents>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_logout">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+L"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="76"/>
+ <Property name="text" type="java.lang.String" value="Logout"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_logoutActionPerformed"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_auto_login">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Auto Login"/>
+ </Properties>
+ </MenuItem>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_quit">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+Q"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="81"/>
+ <Property name="text" type="java.lang.String" value="Quit"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_quitActionPerformed"/>
+ </Events>
+ </MenuItem>
+ </SubComponents>
+ </Menu>
+ <Menu class="javax.swing.JMenu" name="jMenu_edit">
+ <Properties>
+ <Property name="mnemonic" type="int" value="69"/>
+ <Property name="text" type="java.lang.String" value="Edit"/>
+ </Properties>
+ <SubComponents>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_copy">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+C"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="67"/>
+ <Property name="text" type="java.lang.String" value="Copy"/>
+ </Properties>
+ </MenuItem>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_paste">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+V"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="80"/>
+ <Property name="text" type="java.lang.String" value="Paste"/>
+ </Properties>
+ </MenuItem>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_option">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+O"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="79"/>
+ <Property name="text" type="java.lang.String" value="Option"/>
+ <Property name="enabled" type="boolean" value="false"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_optionActionPerformed"/>
+ </Events>
+ </MenuItem>
+ </SubComponents>
+ </Menu>
+ <Menu class="javax.swing.JMenu" name="jMenu_view">
+ <Properties>
+ <Property name="mnemonic" type="int" value="86"/>
+ <Property name="text" type="java.lang.String" value="View"/>
+ </Properties>
+ <SubComponents>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_user">
+ <Properties>
+ <Property name="selected" type="boolean" value="true"/>
+ <Property name="text" type="java.lang.String" value="Your Icon"/>
+ </Properties>
+ <Events>
+ <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jCheckBoxMenuItem_userItemStateChanged"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_pod">
+ <Properties>
+ <Property name="selected" type="boolean" value="true"/>
+ <Property name="text" type="java.lang.String" value="Pod Icon"/>
+ </Properties>
+ <Events>
+ <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jCheckBoxMenuItem_podItemStateChanged"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_member">
+ <Properties>
+ <Property name="selected" type="boolean" value="true"/>
+ <Property name="text" type="java.lang.String" value="Member Icon"/>
+ </Properties>
+ <Events>
+ <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jCheckBoxMenuItem_memberItemStateChanged"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_ontop">
+ <Properties>
+ <Property name="selected" type="boolean" value="true"/>
+ <Property name="text" type="java.lang.String" value="Always on Top"/>
+ </Properties>
+ <Events>
+ <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jCheckBoxMenuItem_ontopItemStateChanged"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator2">
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_startup">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Startup with Tray"/>
+ </Properties>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_always">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Always on Tray"/>
+ </Properties>
+ <Events>
+ <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jCheckBoxMenuItem_alwaysItemStateChanged"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_minimize">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Minimize to Tray"/>
+ </Properties>
+ </MenuItem>
+ <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem_close">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Close to Tray"/>
+ </Properties>
+ </MenuItem>
+ </SubComponents>
+ </Menu>
+ <Menu class="javax.swing.JMenu" name="jMenu_help">
+ <Properties>
+ <Property name="mnemonic" type="int" value="72"/>
+ <Property name="text" type="java.lang.String" value="Help"/>
+ </Properties>
+ <SubComponents>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_version">
+ <Properties>
+ <Property name="mnemonic" type="int" value="86"/>
+ <Property name="text" type="java.lang.String" value="Version"/>
+ <Property name="enabled" type="boolean" value="false"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_versionActionPerformed"/>
+ </Events>
+ </MenuItem>
+ </SubComponents>
+ </Menu>
+ </SubComponents>
+ </Menu>
+ </NonVisualComponents>
+ <Properties>
+ <Property name="defaultCloseOperation" type="int" value="0"/>
+ <Property name="title" type="java.lang.String" value="Beluga Client for Java"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[420, 367]"/>
+ </Property>
+ </Properties>
+ <SyntheticProperties>
+ <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar"/>
+ <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+ </SyntheticProperties>
+ <Events>
+ <EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
+ <EventHandler event="windowIconified" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowIconified"/>
+ </Events>
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-98,0,0,1,-111"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_context">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_north">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="North"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_top">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="First"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_ident">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="E-Mail"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JTextField" name="jTextField_ident">
+ <Properties>
+ <Property name="columns" type="int" value="12"/>
+ <Property name="text" type="java.lang.String" value="zeebra@v7.com"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[100, 19]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel_password">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Password"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JPasswordField" name="jPasswordField_password">
+ <Properties>
+ <Property name="columns" type="int" value="12"/>
+ <Property name="text" type="java.lang.String" value="noel2lip"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[100, 19]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JToggleButton" name="jToggleButton_login">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Login"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jToggleButton_loginActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JSeparator" name="jSeparator">
+ <Properties>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[0, 4]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[0, 4]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel_center">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JSplitPane" name="jSplitPane">
+ <Properties>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="null"/>
+ </Property>
+ <Property name="dividerLocation" type="int" value="50"/>
+ <Property name="orientation" type="int" value="0"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_input">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
+ <JSplitPaneConstraints position="top"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JScrollPane" name="jScrollPane">
+ <Properties>
+ <Property name="verticalScrollBarPolicy" type="int" value="22"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[270, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[270, 50]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jScrollPaneMouseReleased"/>
+ </Events>
+ <AuxValues>
+ <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+ </AuxValues>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JTextArea" name="jTextArea_message">
+ <Properties>
+ <Property name="columns" type="int" value="38"/>
+ <Property name="lineWrap" type="boolean" value="true"/>
+ <Property name="rows" type="int" value="3"/>
+ <Property name="tabSize" type="int" value="0"/>
+ <Property name="wrapStyleWord" type="boolean" value="true"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[140, 50]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTextArea_messageMouseReleased"/>
+ <EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="jTextArea_messageKeyTyped"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JButton" name="jButton_send">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Send"/>
+ <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+ <Insets value="[0, 0, 0, 0]"/>
+ </Property>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton_sendActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="East"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel_icon">
+ <Properties>
+ <Property name="alignmentY" type="float" value="0.0"/>
+ <Property name="iconTextGap" type="int" value="0"/>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="West"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JTabbedPane" name="jTabbedPane_pods">
+ <Properties>
+ <Property name="tabLayoutPolicy" type="int" value="1"/>
+ <Property name="requestFocusEnabled" type="boolean" value="false"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
+ <JSplitPaneConstraints position="bottom"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
+ </Container>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel_south">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="South"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_buttons">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout">
+ <Property name="columns" type="int" value="5"/>
+ <Property name="rows" type="int" value="0"/>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JButton" name="jButton_reload">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Reload"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton_reloadActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JToggleButton" name="jToggleButton_updates">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="buttonGroup"/>
+ </Property>
+ <Property name="selected" type="boolean" value="true"/>
+ <Property name="text" type="java.lang.String" value="Updates"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jToggleButton_updatesActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JToggleButton" name="jToggleButton_members">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="buttonGroup"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="Members"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jToggleButton_membersActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JToggleButton" name="jToggleButton_map">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="buttonGroup"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="Map"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jToggleButton_mapActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JToggleButton" name="jToggleButton_edit">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="buttonGroup"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="Edit"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jToggleButton_editActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JLabel" name="jLabel_status">
+ <Properties>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo">
+ <BevelBorder bevelType="1"/>
+ </Border>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[4, 19]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[4, 19]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="South"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * BelugaFrame.java
+ *
+ * Created on 2011/06/23, 13:38:15
+ */
+
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.methods.*;
+import org.apache.http.impl.client.*;
+
+import javax.swing.*;
+import javax.swing.event.*;
+import java.awt.*;
+import java.awt.datatransfer.*;
+import java.awt.event.*;
+import java.io.*;
+import java.util.*;
+import java.util.prefs.Preferences;
+import java.util.regex.*;
+
+
+/**
+ *
+ * @author g9133
+ */
+public class BelugaFrame extends javax.swing.JFrame implements IFBelugaFrame {
+
+ /** Creates new form BelugaFrame */
+ public BelugaFrame() {
+ initComponents();
+
+ this.setIconImage(new ImageIcon(this.getClass().getResource("favicon.png")).getImage());
+
+ setLocationRelativeTo(null);
+
+ Preferences pref = Preferences.userNodeForPackage(this.getClass());
+
+ try {
+ jCheckBoxMenuItem_auto_login.setSelected(pref.getBoolean("login.auto", false));
+
+ jTextField_ident.setText(pref.get("login.id", ""));
+ jPasswordField_password.setText(pref.get("login.pass", ""));
+
+ jCheckBoxMenuItem_user .setSelected(pref.getBoolean("icon.user" , true));
+ jCheckBoxMenuItem_pod .setSelected(pref.getBoolean("icon.pod" , true));
+ jCheckBoxMenuItem_member.setSelected(pref.getBoolean("icon.member", true));
+
+ jSplitPane.setDividerLocation(pref.getInt("div.size", 50));
+
+ this.setLocation(pref.getInt("loc.x", this.getX()), pref.getInt("loc.y", this.getY()));
+ this.setSize (pref.getInt("size.width", this.getWidth()), pref.getInt("size.height", this.getHeight()));
+
+ jCheckBoxMenuItem_ontop .setSelected(pref.getBoolean("start.ontop" , false));
+ jCheckBoxMenuItem_startup .setSelected(pref.getBoolean("start.up" , false));
+ jCheckBoxMenuItem_always .setSelected(pref.getBoolean("task.always" , false));
+ jCheckBoxMenuItem_close .setSelected(pref.getBoolean("task.close" , false));
+ jCheckBoxMenuItem_minimize.setSelected(pref.getBoolean("task.minimize", false));
+
+ this.setAlwaysOnTop(jCheckBoxMenuItem_ontop.isSelected());
+
+ if (jCheckBoxMenuItem_always.isSelected()) {
+ checkTaskTray(false);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ jTextArea_message.addFocusListener(new IMEControl(IMEControl.KANJI));
+ jTabbedPane_pods.addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ PodPane pp = getSelectedPodPane();
+
+ if (pp == null) {
+ return;
+ }
+
+ String action = (String) jLabel_status.getClientProperty(pp.getPodBean().getId());
+
+ pp.show(action);
+
+ if ("Updates".equals(action)) {
+ jToggleButton_updates.setSelected(true);
+ } else if ("Members".equals(action)) {
+ jToggleButton_members.setSelected(true);
+ } else if ("Map".equals(action)) {
+ jToggleButton_map.setSelected(true);
+ } else if ("Edit".equals(action)) {
+ jToggleButton_edit.setSelected(true);
+ }
+
+ jTextArea_message.requestFocus();
+ }
+ });
+ }
+
+ public void open() {
+ if (!jCheckBoxMenuItem_startup.isSelected()) {
+ this.setVisible(true);
+ }
+
+ new Thread() {
+ public void run() {
+ if (jCheckBoxMenuItem_auto_login.isSelected()) {
+ jToggleButton_loginActionPerformed(null);
+ }
+ }
+ }.start();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+ java.awt.GridBagConstraints gridBagConstraints;
+
+ buttonGroup = new javax.swing.ButtonGroup();
+ jPopupMenu = new javax.swing.JPopupMenu();
+ jMenuItem_paste1 = new javax.swing.JMenuItem();
+ jPanel_context = new javax.swing.JPanel();
+ jPanel_north = new javax.swing.JPanel();
+ jPanel_top = new javax.swing.JPanel();
+ jLabel_ident = new javax.swing.JLabel();
+ jTextField_ident = new javax.swing.JTextField();
+ jLabel_password = new javax.swing.JLabel();
+ jPasswordField_password = new javax.swing.JPasswordField();
+ jToggleButton_login = new javax.swing.JToggleButton();
+ jSeparator = new javax.swing.JSeparator();
+ jPanel_center = new javax.swing.JPanel();
+ jSplitPane = new javax.swing.JSplitPane();
+ jPanel_input = new javax.swing.JPanel();
+ jScrollPane = new javax.swing.JScrollPane();
+ jTextArea_message = new javax.swing.JTextArea();
+ jButton_send = new javax.swing.JButton();
+ jLabel_icon = new javax.swing.JLabel();
+ jTabbedPane_pods = new javax.swing.JTabbedPane();
+ jPanel_south = new javax.swing.JPanel();
+ jPanel_buttons = new javax.swing.JPanel();
+ jButton_reload = new javax.swing.JButton();
+ jToggleButton_updates = new javax.swing.JToggleButton();
+ jToggleButton_members = new javax.swing.JToggleButton();
+ jToggleButton_map = new javax.swing.JToggleButton();
+ jToggleButton_edit = new javax.swing.JToggleButton();
+ jLabel_status = new javax.swing.JLabel();
+ jMenuBar = new javax.swing.JMenuBar();
+ jMenu_file = new javax.swing.JMenu();
+ jMenuItem_logout = new javax.swing.JMenuItem();
+ jCheckBoxMenuItem_auto_login = new javax.swing.JCheckBoxMenuItem();
+ jMenuItem_quit = new javax.swing.JMenuItem();
+ jMenu_edit = new javax.swing.JMenu();
+ jMenuItem_copy = new javax.swing.JMenuItem();
+ jMenuItem_paste = new javax.swing.JMenuItem();
+ jMenuItem_option = new javax.swing.JMenuItem();
+ jMenu_view = new javax.swing.JMenu();
+ jCheckBoxMenuItem_user = new javax.swing.JCheckBoxMenuItem();
+ jCheckBoxMenuItem_pod = new javax.swing.JCheckBoxMenuItem();
+ jCheckBoxMenuItem_member = new javax.swing.JCheckBoxMenuItem();
+ jSeparator1 = new javax.swing.JPopupMenu.Separator();
+ jCheckBoxMenuItem_ontop = new javax.swing.JCheckBoxMenuItem();
+ jSeparator2 = new javax.swing.JPopupMenu.Separator();
+ jCheckBoxMenuItem_startup = new javax.swing.JCheckBoxMenuItem();
+ jCheckBoxMenuItem_always = new javax.swing.JCheckBoxMenuItem();
+ jCheckBoxMenuItem_minimize = new javax.swing.JCheckBoxMenuItem();
+ jCheckBoxMenuItem_close = new javax.swing.JCheckBoxMenuItem();
+ jMenu_help = new javax.swing.JMenu();
+ jMenuItem_version = new javax.swing.JMenuItem();
+
+ jMenuItem_paste1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_paste1.setMnemonic('P');
+ jMenuItem_paste1.setText("Paste");
+ jMenuItem_paste1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_paste1ActionPerformed(evt);
+ }
+ });
+ jPopupMenu.add(jMenuItem_paste1);
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
+ setTitle("Beluga Client for Java");
+ setMinimumSize(new java.awt.Dimension(420, 367));
+ addWindowListener(new java.awt.event.WindowAdapter() {
+ public void windowClosing(java.awt.event.WindowEvent evt) {
+ formWindowClosing(evt);
+ }
+ public void windowIconified(java.awt.event.WindowEvent evt) {
+ formWindowIconified(evt);
+ }
+ });
+
+ jPanel_context.setLayout(new java.awt.BorderLayout());
+
+ jPanel_north.setLayout(new java.awt.BorderLayout());
+
+ jPanel_top.setLayout(new java.awt.GridBagLayout());
+
+ jLabel_ident.setText("E-Mail");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0);
+ jPanel_top.add(jLabel_ident, gridBagConstraints);
+
+ jTextField_ident.setColumns(12);
+ jTextField_ident.setText("zeebra@v7.com");
+ jTextField_ident.setMinimumSize(new java.awt.Dimension(100, 19));
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0);
+ jPanel_top.add(jTextField_ident, gridBagConstraints);
+
+ jLabel_password.setText("Password");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0);
+ jPanel_top.add(jLabel_password, gridBagConstraints);
+
+ jPasswordField_password.setColumns(12);
+ jPasswordField_password.setText("noel2lip");
+ jPasswordField_password.setMinimumSize(new java.awt.Dimension(100, 19));
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0);
+ jPanel_top.add(jPasswordField_password, gridBagConstraints);
+
+ jToggleButton_login.setText("Login");
+ jToggleButton_login.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jToggleButton_loginActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
+ jPanel_top.add(jToggleButton_login, gridBagConstraints);
+
+ jPanel_north.add(jPanel_top, java.awt.BorderLayout.PAGE_START);
+
+ jSeparator.setMinimumSize(new java.awt.Dimension(0, 4));
+ jSeparator.setPreferredSize(new java.awt.Dimension(0, 4));
+ jPanel_north.add(jSeparator, java.awt.BorderLayout.CENTER);
+
+ jPanel_context.add(jPanel_north, java.awt.BorderLayout.NORTH);
+
+ jPanel_center.setLayout(new java.awt.BorderLayout());
+
+ jSplitPane.setBorder(null);
+ jSplitPane.setDividerLocation(50);
+ jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
+
+ jPanel_input.setLayout(new java.awt.BorderLayout());
+
+ jScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
+ jScrollPane.setMinimumSize(new java.awt.Dimension(270, 50));
+ jScrollPane.setPreferredSize(new java.awt.Dimension(270, 50));
+ jScrollPane.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseReleased(java.awt.event.MouseEvent evt) {
+ jScrollPaneMouseReleased(evt);
+ }
+ });
+
+ jTextArea_message.setColumns(38);
+ jTextArea_message.setLineWrap(true);
+ jTextArea_message.setRows(3);
+ jTextArea_message.setTabSize(0);
+ jTextArea_message.setWrapStyleWord(true);
+ jTextArea_message.setMinimumSize(new java.awt.Dimension(140, 50));
+ jTextArea_message.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseReleased(java.awt.event.MouseEvent evt) {
+ jTextArea_messageMouseReleased(evt);
+ }
+ });
+ jTextArea_message.addKeyListener(new java.awt.event.KeyAdapter() {
+ public void keyTyped(java.awt.event.KeyEvent evt) {
+ jTextArea_messageKeyTyped(evt);
+ }
+ });
+ jScrollPane.setViewportView(jTextArea_message);
+
+ jPanel_input.add(jScrollPane, java.awt.BorderLayout.CENTER);
+
+ jButton_send.setText("Send");
+ jButton_send.setMargin(new java.awt.Insets(0, 0, 0, 0));
+ jButton_send.setMaximumSize(new java.awt.Dimension(50, 50));
+ jButton_send.setMinimumSize(new java.awt.Dimension(50, 50));
+ jButton_send.setPreferredSize(new java.awt.Dimension(50, 50));
+ jButton_send.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton_sendActionPerformed(evt);
+ }
+ });
+ jPanel_input.add(jButton_send, java.awt.BorderLayout.EAST);
+
+ jLabel_icon.setAlignmentY(0.0F);
+ jLabel_icon.setIconTextGap(0);
+ jLabel_icon.setMaximumSize(new java.awt.Dimension(50, 50));
+ jLabel_icon.setMinimumSize(new java.awt.Dimension(50, 50));
+ jLabel_icon.setPreferredSize(new java.awt.Dimension(50, 50));
+ jPanel_input.add(jLabel_icon, java.awt.BorderLayout.WEST);
+
+ jSplitPane.setTopComponent(jPanel_input);
+
+ jTabbedPane_pods.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
+ jTabbedPane_pods.setRequestFocusEnabled(false);
+ jSplitPane.setBottomComponent(jTabbedPane_pods);
+
+ jPanel_center.add(jSplitPane, java.awt.BorderLayout.CENTER);
+
+ jPanel_context.add(jPanel_center, java.awt.BorderLayout.CENTER);
+
+ jPanel_south.setLayout(new java.awt.BorderLayout());
+
+ jPanel_buttons.setLayout(new java.awt.GridLayout(0, 5));
+
+ jButton_reload.setText("Reload");
+ jButton_reload.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton_reloadActionPerformed(evt);
+ }
+ });
+ jPanel_buttons.add(jButton_reload);
+
+ buttonGroup.add(jToggleButton_updates);
+ jToggleButton_updates.setSelected(true);
+ jToggleButton_updates.setText("Updates");
+ jToggleButton_updates.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jToggleButton_updatesActionPerformed(evt);
+ }
+ });
+ jPanel_buttons.add(jToggleButton_updates);
+
+ buttonGroup.add(jToggleButton_members);
+ jToggleButton_members.setText("Members");
+ jToggleButton_members.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jToggleButton_membersActionPerformed(evt);
+ }
+ });
+ jPanel_buttons.add(jToggleButton_members);
+
+ buttonGroup.add(jToggleButton_map);
+ jToggleButton_map.setText("Map");
+ jToggleButton_map.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jToggleButton_mapActionPerformed(evt);
+ }
+ });
+ jPanel_buttons.add(jToggleButton_map);
+
+ buttonGroup.add(jToggleButton_edit);
+ jToggleButton_edit.setText("Edit");
+ jToggleButton_edit.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jToggleButton_editActionPerformed(evt);
+ }
+ });
+ jPanel_buttons.add(jToggleButton_edit);
+
+ jPanel_south.add(jPanel_buttons, java.awt.BorderLayout.CENTER);
+
+ jLabel_status.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
+ jLabel_status.setMinimumSize(new java.awt.Dimension(4, 19));
+ jLabel_status.setPreferredSize(new java.awt.Dimension(4, 19));
+ jPanel_south.add(jLabel_status, java.awt.BorderLayout.SOUTH);
+
+ jPanel_context.add(jPanel_south, java.awt.BorderLayout.SOUTH);
+
+ getContentPane().add(jPanel_context, java.awt.BorderLayout.CENTER);
+
+ jMenu_file.setMnemonic('F');
+ jMenu_file.setText("File");
+
+ jMenuItem_logout.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_logout.setMnemonic('L');
+ jMenuItem_logout.setText("Logout");
+ jMenuItem_logout.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_logoutActionPerformed(evt);
+ }
+ });
+ jMenu_file.add(jMenuItem_logout);
+
+ jCheckBoxMenuItem_auto_login.setText("Auto Login");
+ jMenu_file.add(jCheckBoxMenuItem_auto_login);
+
+ jMenuItem_quit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_quit.setMnemonic('Q');
+ jMenuItem_quit.setText("Quit");
+ jMenuItem_quit.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_quitActionPerformed(evt);
+ }
+ });
+ jMenu_file.add(jMenuItem_quit);
+
+ jMenuBar.add(jMenu_file);
+
+ jMenu_edit.setMnemonic('E');
+ jMenu_edit.setText("Edit");
+
+ jMenuItem_copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_copy.setMnemonic('C');
+ jMenuItem_copy.setText("Copy");
+ jMenu_edit.add(jMenuItem_copy);
+
+ jMenuItem_paste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_paste.setMnemonic('P');
+ jMenuItem_paste.setText("Paste");
+ jMenu_edit.add(jMenuItem_paste);
+
+ jMenuItem_option.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_option.setMnemonic('O');
+ jMenuItem_option.setText("Option");
+ jMenuItem_option.setEnabled(false);
+ jMenuItem_option.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_optionActionPerformed(evt);
+ }
+ });
+ jMenu_edit.add(jMenuItem_option);
+
+ jMenuBar.add(jMenu_edit);
+
+ jMenu_view.setMnemonic('V');
+ jMenu_view.setText("View");
+
+ jCheckBoxMenuItem_user.setSelected(true);
+ jCheckBoxMenuItem_user.setText("Your Icon");
+ jCheckBoxMenuItem_user.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jCheckBoxMenuItem_userItemStateChanged(evt);
+ }
+ });
+ jMenu_view.add(jCheckBoxMenuItem_user);
+
+ jCheckBoxMenuItem_pod.setSelected(true);
+ jCheckBoxMenuItem_pod.setText("Pod Icon");
+ jCheckBoxMenuItem_pod.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jCheckBoxMenuItem_podItemStateChanged(evt);
+ }
+ });
+ jMenu_view.add(jCheckBoxMenuItem_pod);
+
+ jCheckBoxMenuItem_member.setSelected(true);
+ jCheckBoxMenuItem_member.setText("Member Icon");
+ jCheckBoxMenuItem_member.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jCheckBoxMenuItem_memberItemStateChanged(evt);
+ }
+ });
+ jMenu_view.add(jCheckBoxMenuItem_member);
+ jMenu_view.add(jSeparator1);
+
+ jCheckBoxMenuItem_ontop.setSelected(true);
+ jCheckBoxMenuItem_ontop.setText("Always on Top");
+ jCheckBoxMenuItem_ontop.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jCheckBoxMenuItem_ontopItemStateChanged(evt);
+ }
+ });
+ jMenu_view.add(jCheckBoxMenuItem_ontop);
+ jMenu_view.add(jSeparator2);
+
+ jCheckBoxMenuItem_startup.setText("Startup with Tray");
+ jMenu_view.add(jCheckBoxMenuItem_startup);
+
+ jCheckBoxMenuItem_always.setText("Always on Tray");
+ jCheckBoxMenuItem_always.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jCheckBoxMenuItem_alwaysItemStateChanged(evt);
+ }
+ });
+ jMenu_view.add(jCheckBoxMenuItem_always);
+
+ jCheckBoxMenuItem_minimize.setText("Minimize to Tray");
+ jMenu_view.add(jCheckBoxMenuItem_minimize);
+
+ jCheckBoxMenuItem_close.setText("Close to Tray");
+ jMenu_view.add(jCheckBoxMenuItem_close);
+
+ jMenuBar.add(jMenu_view);
+
+ jMenu_help.setMnemonic('H');
+ jMenu_help.setText("Help");
+
+ jMenuItem_version.setMnemonic('V');
+ jMenuItem_version.setText("Version");
+ jMenuItem_version.setEnabled(false);
+ jMenuItem_version.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_versionActionPerformed(evt);
+ }
+ });
+ jMenu_help.add(jMenuItem_version);
+
+ jMenuBar.add(jMenu_help);
+
+ setJMenuBar(jMenuBar);
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private HashMap constant_map = null;
+ private WaitWindow waitWindow = null;
+
+ private void jToggleButton_loginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_loginActionPerformed
+ if (isShowing()) {
+ showWaitWindow("Please wait logging...");
+ }
+
+ try {
+ if ((constant_map = login()) == null) {
+ closeWaitWindow();
+ return;
+ }
+
+ displayMessage("Beluga", "Login Successfly", TrayIcon.MessageType.INFO);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ displayMessage("Error", "Network error\n" + ex.getMessage(), TrayIcon.MessageType.ERROR);
+
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ return;
+ } finally {
+ closeWaitWindow();
+ }
+
+ jPanel_north.setVisible(false);
+
+ this.setHttpClient((DefaultHttpClient) constant_map.get("client"));
+
+ jLabel_icon.setIcon(getImageIcon(getHttpClient(), (String) constant_map.get("user_image")));
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ podsSetting();
+ }
+ });
+
+ }//GEN-LAST:event_jToggleButton_loginActionPerformed
+
+ public HashMap getConstantMap() {
+ return constant_map;
+ }
+
+ private DefaultHttpClient client = null;
+
+ private void setHttpClient(DefaultHttpClient client) {
+ this.client = client;
+ }
+
+ public DefaultHttpClient getHttpClient() {
+ return this.client;
+ }
+
+ private void jToggleButton_updatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_updatesActionPerformed
+ if (getSelectedPodPane() == null) {
+ return;
+ }
+
+ getSelectedPodPane().show(evt.getActionCommand());
+ jLabel_status.putClientProperty(getSelectedPodPane().getPodBean().getId(), evt.getActionCommand());
+ }//GEN-LAST:event_jToggleButton_updatesActionPerformed
+
+ private void jToggleButton_membersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_membersActionPerformed
+ if (getSelectedPodPane() == null) {
+ return;
+ }
+
+ getSelectedPodPane().show(evt.getActionCommand());
+ jLabel_status.putClientProperty(getSelectedPodPane().getPodBean().getId(), evt.getActionCommand());
+ }//GEN-LAST:event_jToggleButton_membersActionPerformed
+
+ private void jToggleButton_mapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_mapActionPerformed
+ JOptionPane.showMessageDialog(this, "Map is not supported.", "Info", JOptionPane.WARNING_MESSAGE);
+
+ if (true) {
+ return;
+ }
+
+ if (getSelectedPodPane() == null) {
+ return;
+ }
+
+ getSelectedPodPane().show(evt.getActionCommand());
+ jLabel_status.putClientProperty(getSelectedPodPane().getPodBean().getId(), evt.getActionCommand());
+ }//GEN-LAST:event_jToggleButton_mapActionPerformed
+
+ private void jToggleButton_editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_editActionPerformed
+ if (getSelectedPodPane() == null) {
+ return;
+ }
+
+ getSelectedPodPane().show(evt.getActionCommand());
+ jLabel_status.putClientProperty(getSelectedPodPane().getPodBean().getId(), evt.getActionCommand());
+ }//GEN-LAST:event_jToggleButton_editActionPerformed
+
+ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
+ if (jCheckBoxMenuItem_close.isSelected()) {
+ checkTaskTray(true);
+ return;
+ }
+
+ systemExit(true);
+ }//GEN-LAST:event_formWindowClosing
+
+ private void systemExit(boolean isConfirm) {
+ if (isConfirm) {
+ int ans = JOptionPane.showConfirmDialog(this, "Quit?", "Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
+
+ if (ans != JOptionPane.YES_OPTION) {
+ return;
+ }
+ }
+
+ if (this.getHttpClient() != null) {
+ this.getHttpClient().getConnectionManager().shutdown();
+ }
+
+ Preferences pref = Preferences.userNodeForPackage(this.getClass());
+
+ try {
+ pref.putBoolean("login.auto" , jCheckBoxMenuItem_auto_login.isSelected());
+ pref.put ("login.id" , jTextField_ident.getText());
+ pref.put ("login.pass" , String.valueOf(jPasswordField_password.getPassword()));
+ pref.putBoolean("icon.user" , jCheckBoxMenuItem_user.isSelected());
+ pref.putBoolean("icon.pod" , jCheckBoxMenuItem_pod.isSelected());
+ pref.putBoolean("icon.member", jCheckBoxMenuItem_member.isSelected());
+
+ try {
+ pref.putInt("div.size" , jSplitPane.getDividerLocation());
+ pref.putInt("loc.x" , getLocation().x);
+ pref.putInt("loc.y" , getLocation().y);
+ pref.putInt("size.width" , getWidth());
+ pref.putInt("size.height", getHeight());
+ } catch (Exception ex) {
+ }
+
+ pref.putBoolean("start.ontop" , jCheckBoxMenuItem_ontop.isSelected());
+ pref.putBoolean("start.up" , jCheckBoxMenuItem_startup.isSelected());
+ pref.putBoolean("task.always" , jCheckBoxMenuItem_always.isSelected());
+ pref.putBoolean("task.close" , jCheckBoxMenuItem_always.isSelected());
+ pref.putBoolean("task.minimize", jCheckBoxMenuItem_always.isSelected());
+
+ pref.flush();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ System.exit(0);
+ }
+
+ private void jButton_sendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_sendActionPerformed
+ try {
+ if (getSelectedPodPane() == null) {
+ return;
+ }
+
+ if (jTextArea_message.getText().length() < 1) {
+ return;
+ }
+
+ getSelectedPodPane().send(jTextArea_message.getText());
+
+ jToggleButton_updatesActionPerformed(new ActionEvent(jToggleButton_updates, 0, jToggleButton_updates.getActionCommand()));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+
+ JOptionPane.showMessageDialog(this, "Send Error.\nPlease check me connection.", "Error", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ jTextArea_message.setText("");
+ }//GEN-LAST:event_jButton_sendActionPerformed
+
+ private void jButton_reloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_reloadActionPerformed
+ try {
+ new Thread() {
+ public void run() {
+ showWaitWindow("Please wait reload...");
+
+ if (getSelectedPodPane() != null) {
+ getSelectedPodPane().updatePod();
+ }
+
+ closeWaitWindow();
+ }
+ }.start();
+ } catch (NullPointerException ex) {
+ ex.printStackTrace();
+ }
+ }//GEN-LAST:event_jButton_reloadActionPerformed
+
+ private void jMenuItem_quitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_quitActionPerformed
+ systemExit(true);
+ }//GEN-LAST:event_jMenuItem_quitActionPerformed
+
+ private void jMenuItem_optionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_optionActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_jMenuItem_optionActionPerformed
+
+ private void jMenuItem_versionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_versionActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_jMenuItem_versionActionPerformed
+
+ private void jTextArea_messageKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextArea_messageKeyTyped
+ if (evt.getKeyChar() == evt.VK_TAB) {
+ evt.consume();
+ jButton_send.requestFocus();
+ }
+
+ if (evt.getKeyChar() == evt.VK_ESCAPE) {
+ evt.consume();
+
+ jTextArea_message.setText("");
+ }
+ }//GEN-LAST:event_jTextArea_messageKeyTyped
+
+ private void jMenuItem_paste1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_paste1ActionPerformed
+ Transferable object = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
+
+ try {
+ jTextArea_message.setText((String) object.getTransferData(DataFlavor.stringFlavor));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }//GEN-LAST:event_jMenuItem_paste1ActionPerformed
+
+ private void jScrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jScrollPaneMouseReleased
+ jMenuItem_paste1ActionPerformed(null);
+ }//GEN-LAST:event_jScrollPaneMouseReleased
+
+ private void jTextArea_messageMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextArea_messageMouseReleased
+ if (!evt.isPopupTrigger()) {
+ return;
+ }
+
+ jPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
+ }//GEN-LAST:event_jTextArea_messageMouseReleased
+
+ private void jCheckBoxMenuItem_userItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckBoxMenuItem_userItemStateChanged
+ if (jCheckBoxMenuItem_user.isSelected()) {
+ jPanel_input.add(jLabel_icon, "West");
+ } else {
+ jPanel_input.remove(jLabel_icon);
+ }
+
+ jPanel_input.updateUI();
+ }//GEN-LAST:event_jCheckBoxMenuItem_userItemStateChanged
+
+ private void jCheckBoxMenuItem_podItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckBoxMenuItem_podItemStateChanged
+ for (int i = 0; i < jTabbedPane_pods.getTabCount(); i++) {
+ jTabbedPane_pods.setIconAt(i, jCheckBoxMenuItem_pod.isSelected() ? getPodPaneAt(i).getPodImage() : null);
+
+ if (jTabbedPane_pods.getTabComponentAt(i) != null) {
+ ((JLabel) jTabbedPane_pods.getTabComponentAt(i)).setIcon(jCheckBoxMenuItem_pod.isSelected() ? getPodPaneAt(i).getPodImage() : null);
+ }
+ }
+ }//GEN-LAST:event_jCheckBoxMenuItem_podItemStateChanged
+
+ private void jCheckBoxMenuItem_memberItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckBoxMenuItem_memberItemStateChanged
+ new Thread() {
+ public void run() {
+ for (int i = 0; i < jTabbedPane_pods.getTabCount(); i++) {
+ getPodPaneAt(i).setVisibleIcon(jCheckBoxMenuItem_member.isSelected());
+ getPodPaneAt(i).updateUI();
+ }
+ }
+ }.start();
+ }//GEN-LAST:event_jCheckBoxMenuItem_memberItemStateChanged
+
+ private void formWindowIconified(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowIconified
+ if (jCheckBoxMenuItem_always.isSelected() || jCheckBoxMenuItem_minimize.isSelected()) {
+ checkTaskTray(true);
+ return;
+ }
+ }//GEN-LAST:event_formWindowIconified
+
+ private void jCheckBoxMenuItem_alwaysItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckBoxMenuItem_alwaysItemStateChanged
+ jCheckBoxMenuItem_minimize.setEnabled(!jCheckBoxMenuItem_always.isSelected());
+ jCheckBoxMenuItem_close .setEnabled(!jCheckBoxMenuItem_always.isSelected());
+ }//GEN-LAST:event_jCheckBoxMenuItem_alwaysItemStateChanged
+
+ private void jMenuItem_logoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_logoutActionPerformed
+ jPanel_north.setVisible(true);
+ jTabbedPane_pods.removeAll();
+ }//GEN-LAST:event_jMenuItem_logoutActionPerformed
+
+ private void jCheckBoxMenuItem_ontopItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckBoxMenuItem_ontopItemStateChanged
+ this.setAlwaysOnTop(jCheckBoxMenuItem_ontop.isSelected());
+ }//GEN-LAST:event_jCheckBoxMenuItem_ontopItemStateChanged
+
+ private PodPane getSelectedPodPane() {
+ return getPodPaneAt(jTabbedPane_pods.getSelectedIndex());
+ }
+
+ private PodPane getPodPaneAt(int index) {
+ if (index < 0) {
+ return null;
+ }
+
+ if (jTabbedPane_pods.getComponentAt(index) == null) {
+ return null;
+ }
+
+ Component compo = jTabbedPane_pods.getComponentAt(index);
+
+ if (compo == null || !(compo instanceof PodPane)) {
+ return null;
+ }
+
+ PodPane podPane = (PodPane) compo;
+
+ if (podPane == null) {
+ return null;
+ }
+
+ return podPane;
+ }
+
+ private boolean checkInputField() {
+ if (jTextField_ident.getText().length() < 1) {
+ if (!isShowing()) {
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ }
+
+ JOptionPane.showMessageDialog(this, "Please input [ E-Mail ] field.", "Input error", JOptionPane.ERROR_MESSAGE);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ jTextField_ident.requestFocus();
+ jTextField_ident.selectAll();
+ jToggleButton_login.setSelected(false);
+ }
+ });
+
+ return false;
+ }
+
+ if (!Pattern.compile("[\\w\\.\\-]+@(?:[\\w\\-]+\\.)+[\\w\\-]+").matcher(jTextField_ident.getText()).matches()) {
+ if (!isShowing()) {
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ }
+
+ JOptionPane.showMessageDialog(this, "Please input [ E-Mail ] field.", "Format error", JOptionPane.ERROR_MESSAGE);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ jTextField_ident.requestFocus();
+ jTextField_ident.selectAll();
+ jToggleButton_login.setSelected(false);
+ }
+ });
+
+ return false;
+ }
+
+ if (jPasswordField_password.getPassword().length < 1) {
+ if (!isShowing()) {
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ }
+
+ JOptionPane.showMessageDialog(this, "Please input [ Password ] field.", "Input error", JOptionPane.ERROR_MESSAGE);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ jPasswordField_password.requestFocus();
+ jToggleButton_login.setSelected(false);
+ }
+ });
+
+ return false;
+ }
+
+ return true;
+ }
+
+ private HashMap login() throws Exception {
+ if (!checkInputField()) {
+ return null;
+ }
+
+ try {
+ HashMap map = BelugaClient.login(jTextField_ident.getText(), String.valueOf(jPasswordField_password.getPassword()));
+
+ if (map == null) {
+ closeWaitWindow();
+
+ if (!isShowing()) {
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ }
+
+ JOptionPane.showMessageDialog(this, "Please check [ E-Mail ] or [ Password ] field.", "Login error", JOptionPane.ERROR_MESSAGE);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ jTextField_ident.selectAll();
+ jTextField_ident.requestFocus();
+ jToggleButton_login.setSelected(false);
+ }
+ });
+ }
+
+ return map;
+ } catch (Exception ex) {
+ throw ex;
+ }
+ }
+
+ private void podsSetting() {
+ PodBean[] pods = getPodBean();
+
+ for (final PodBean pb : pods) {
+ new Thread() {
+ public void run() {
+ PodPane podPane = new PodPane(BelugaFrame.this, pb);
+
+ jTabbedPane_pods.addTab(pb.getPodTitle(), jCheckBoxMenuItem_pod.isSelected() ? podPane.getPodImage() : null, podPane);
+ jTabbedPane_pods.setTabComponentAt(jTabbedPane_pods.getTabCount() - 1, new JLabel(pb.getPodTitle(), jCheckBoxMenuItem_pod.isSelected() ? podPane.getPodImage() : null, JLabel.HORIZONTAL));
+ jLabel_status.putClientProperty(pb.getId(), "Updates");
+
+ podPane.setVisibleIcon(jCheckBoxMenuItem_member.isSelected());
+
+ jPanel_context.updateUI();
+
+ if (jTabbedPane_pods.getTabCount() > 0) {
+ jButton_send.setEnabled(true);
+ jButton_reload.setEnabled(true);
+ jToggleButton_updates.setEnabled(true);
+ jToggleButton_members.setEnabled(true);
+ jToggleButton_map.setEnabled(true);
+ jToggleButton_edit.setEnabled(true);
+ }
+
+ closeWaitWindow();
+ }
+ }.start();
+ }
+ }
+
+
+ private HashMap image_map = new HashMap();
+
+ public ImageIcon getImageIcon(DefaultHttpClient cli, String uri) {
+ if (!image_map.containsKey(uri)) {
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com" + uri);
+ HttpResponse res = cli.execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedInputStream bis = new BufferedInputStream(ent.getContent());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] data = new byte[512];
+ int len = -1;
+
+ while ((len = bis.read(data, 0, data.length)) != -1) {
+ baos.write(data, 0, len);
+ }
+
+ image_map.put(uri, new ImageIcon(new ImageIcon(baos.toByteArray()).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH)));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ return (ImageIcon) image_map.get(uri);
+ }
+
+ public PodBean[] getPodBean() {
+ return (PodBean[]) constant_map.get("pods");
+ }
+
+ public HashMap getImageMap() {
+ return image_map;
+ }
+
+ public JLabel getStatusBar() {
+ return jLabel_status;
+ }
+
+ public void setStatusBar(String status) {
+ jLabel_status.setText(status);
+ }
+
+ private void showWaitWindow(final String message) {
+// waitWindow = new WaitWindow(this);
+//
+// new Thread() {
+// public void run() {
+// waitWindow.setMessage(message);
+// waitWindow.start();
+// }
+// }.start();
+ }
+
+ private void closeWaitWindow() {
+// if (waitWindow == null) {
+// return;
+// }
+//
+// waitWindow.dispose();
+// waitWindow = null;
+ }
+
+ private class WaitWindow extends Thread {
+ private JDialog jDialog = null;
+ JLabel jLabel_message = null;
+
+ public WaitWindow(JFrame parent) {
+ super();
+
+ jDialog = new JDialog(parent, true);
+ jDialog.setUndecorated(true);
+ jDialog.setSize(200, 80);
+ jDialog.setLocationRelativeTo(parent);
+
+ Container con = jDialog.getContentPane();
+
+ jLabel_message = new JLabel();
+ jLabel_message.setHorizontalAlignment(JLabel.CENTER);
+ jLabel_message.setBackground(SystemColor.control);
+ jLabel_message.setBorder(BorderFactory.createEtchedBorder());
+ jLabel_message.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ if (e.getButton() == e.BUTTON1 && e.getClickCount() == 2) {
+ jDialog.dispose();
+ }
+ }
+ });
+
+ con.add(jLabel_message, "Center");
+ }
+
+ public void run() {
+ jDialog.setVisible(true);
+ }
+
+ public void setMessage(String message) {
+ jLabel_message.setText(message);
+ }
+
+ public void dispose() {
+ jDialog.dispose();
+ }
+ }
+
+ private TrayIcon icon = null;
+
+ private void checkTaskTray(boolean isClose) {
+ try {
+ if (icon == null) {
+ if (!SystemTray.isSupported()) {
+ return;
+ }
+
+ PopupMenu popupMenu = new PopupMenu();
+ MenuItem menuItem = new MenuItem("Quit");
+
+ menuItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ systemExit(false);
+ }
+ });
+
+ popupMenu.add(menuItem);
+
+ icon = new TrayIcon(getIconImage(), "Beluga Client for Java", popupMenu);
+
+ icon.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (e.getButton() == e.BUTTON1) {
+ try {
+ if (!isShowing()) {
+ setVisible(true);
+ setExtendedState(JFrame.NORMAL);
+ } else {
+ setVisible(false);
+ setExtendedState(JFrame.ICONIFIED);
+ }
+ } finally {
+ if (!jCheckBoxMenuItem_startup.isSelected() || !jCheckBoxMenuItem_always.isSelected()) {
+ SystemTray.getSystemTray().remove(icon);
+ }
+ }
+ }
+ }
+ });
+ }
+
+ try {
+ SystemTray.getSystemTray().add(icon);
+ } catch (Exception ex) {}
+
+ if (isClose) {
+ this.setState(JFrame.ICONIFIED);
+ this.setVisible(false);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void setMessage(String message) {
+ setMessage(message, false);
+ }
+
+ public void setMessage(String message, boolean isTop) {
+ jTextArea_message.setText(message.replaceAll("<br>", "").replaceAll("</.*>", "").replaceAll("<.*>", ""));
+
+ if (isTop) {
+ jTextArea_message.getCaret().moveDot(0);
+ } else {
+ jTextArea_message.getCaret().moveDot(jTextArea_message.getText().length());
+ }
+
+ jTextArea_message.select(0, 0);
+ }
+
+ public void displayMessage(String caption, String message, TrayIcon.MessageType type) {
+ if (icon == null) {
+ return;
+ }
+
+ icon.displayMessage(caption, message, type);
+ }
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+
+ System.setProperty("awt.useSystemAAFontSettings", "on");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new BelugaFrame().open();
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.ButtonGroup buttonGroup;
+ private javax.swing.JButton jButton_reload;
+ private javax.swing.JButton jButton_send;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_always;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_auto_login;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_close;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_member;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_minimize;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_ontop;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_pod;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_startup;
+ private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem_user;
+ private javax.swing.JLabel jLabel_icon;
+ private javax.swing.JLabel jLabel_ident;
+ private javax.swing.JLabel jLabel_password;
+ private javax.swing.JLabel jLabel_status;
+ private javax.swing.JMenuBar jMenuBar;
+ private javax.swing.JMenuItem jMenuItem_copy;
+ private javax.swing.JMenuItem jMenuItem_logout;
+ private javax.swing.JMenuItem jMenuItem_option;
+ private javax.swing.JMenuItem jMenuItem_paste;
+ private javax.swing.JMenuItem jMenuItem_paste1;
+ private javax.swing.JMenuItem jMenuItem_quit;
+ private javax.swing.JMenuItem jMenuItem_version;
+ private javax.swing.JMenu jMenu_edit;
+ private javax.swing.JMenu jMenu_file;
+ private javax.swing.JMenu jMenu_help;
+ private javax.swing.JMenu jMenu_view;
+ private javax.swing.JPanel jPanel_buttons;
+ private javax.swing.JPanel jPanel_center;
+ private javax.swing.JPanel jPanel_context;
+ private javax.swing.JPanel jPanel_input;
+ private javax.swing.JPanel jPanel_north;
+ private javax.swing.JPanel jPanel_south;
+ private javax.swing.JPanel jPanel_top;
+ private javax.swing.JPasswordField jPasswordField_password;
+ private javax.swing.JPopupMenu jPopupMenu;
+ private javax.swing.JScrollPane jScrollPane;
+ private javax.swing.JSeparator jSeparator;
+ private javax.swing.JPopupMenu.Separator jSeparator1;
+ private javax.swing.JPopupMenu.Separator jSeparator2;
+ private javax.swing.JSplitPane jSplitPane;
+ private javax.swing.JTabbedPane jTabbedPane_pods;
+ private javax.swing.JTextArea jTextArea_message;
+ private javax.swing.JTextField jTextField_ident;
+ private javax.swing.JToggleButton jToggleButton_edit;
+ private javax.swing.JToggleButton jToggleButton_login;
+ private javax.swing.JToggleButton jToggleButton_map;
+ private javax.swing.JToggleButton jToggleButton_members;
+ private javax.swing.JToggleButton jToggleButton_updates;
+ // End of variables declaration//GEN-END:variables
+
+}
--- /dev/null
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-80,0,0,1,-37"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_topic">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Topic"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="15" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JTextField" name="jTextField_topic">
+ <Properties>
+ <Property name="columns" type="int" value="30"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[186, 19]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="10" insetsBottom="0" insetsRight="10" anchor="13" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel_member">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Add Members"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="15" insetsBottom="0" insetsRight="0" anchor="11" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Container class="javax.swing.JScrollPane" name="jScrollPane">
+ <AuxValues>
+ <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+ </AuxValues>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="10" insetsBottom="0" insetsRight="10" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JTextArea" name="jTextArea_emails">
+ <Properties>
+ <Property name="columns" type="int" value="40"/>
+ <Property name="lineWrap" type="boolean" value="true"/>
+ <Property name="rows" type="int" value="5"/>
+ <Property name="wrapStyleWord" type="boolean" value="true"/>
+ </Properties>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel_button">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="2" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="15" insetsBottom="10" insetsRight="10" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+ <Property name="alignment" type="int" value="2"/>
+ <Property name="verticalGap" type="int" value="0"/>
+ <Property name="horizontalGap" type="int" value="0"/>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JButton" name="jButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Save"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButtonActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * EditorPane.java
+ *
+ * Created on 2011/06/30, 13:44:44
+ */
+
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.entity.*;
+import org.apache.http.client.methods.*;
+import org.apache.http.impl.client.*;
+import org.apache.http.message.*;
+import org.apache.http.protocol.*;
+
+import javax.swing.*;
+import java.awt.event.*;
+import java.io.*;
+import java.util.*;
+
+
+/**
+ *
+ * @author g9133
+ */
+public class EditorPane extends javax.swing.JPanel {
+ private PodBean podBean = null;
+
+ /** Creates new form EditorPane */
+ public EditorPane(PodBean podBean) {
+ this.podBean = podBean;
+
+ initComponents();
+
+ jTextField_topic.addFocusListener(new IMEControl(IMEControl.KANJI));
+ jTextField_topic.setText(podBean.getPodTitle());
+ jTextArea_emails.addFocusListener(new IMEControl(IMEControl.LATIN));
+ jTextArea_emails.addKeyListener(new KeyAdapter() {
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyCode() == e.VK_TAB) {
+ e.consume();
+ }
+ }
+ });
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ jTextField_topic.requestFocus();
+ }
+ });
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+ java.awt.GridBagConstraints gridBagConstraints;
+
+ jLabel_topic = new javax.swing.JLabel();
+ jTextField_topic = new javax.swing.JTextField();
+ jLabel_member = new javax.swing.JLabel();
+ jScrollPane = new javax.swing.JScrollPane();
+ jTextArea_emails = new javax.swing.JTextArea();
+ jPanel_button = new javax.swing.JPanel();
+ jButton = new javax.swing.JButton();
+
+ setLayout(new java.awt.GridBagLayout());
+
+ jLabel_topic.setText("Topic");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.insets = new java.awt.Insets(10, 15, 0, 0);
+ add(jLabel_topic, gridBagConstraints);
+
+ jTextField_topic.setColumns(30);
+ jTextField_topic.setMinimumSize(new java.awt.Dimension(186, 19));
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+ gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10);
+ add(jTextField_topic, gridBagConstraints);
+
+ jLabel_member.setText("Add Members");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
+ gridBagConstraints.insets = new java.awt.Insets(10, 15, 0, 0);
+ add(jLabel_member, gridBagConstraints);
+
+ jTextArea_emails.setColumns(40);
+ jTextArea_emails.setLineWrap(true);
+ jTextArea_emails.setRows(5);
+ jTextArea_emails.setWrapStyleWord(true);
+ jScrollPane.setViewportView(jTextArea_emails);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10);
+ add(jScrollPane, gridBagConstraints);
+
+ jPanel_button.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 0, 0));
+
+ jButton.setText("Save");
+ jButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonActionPerformed(evt);
+ }
+ });
+ jPanel_button.add(jButton);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.gridwidth = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.insets = new java.awt.Insets(10, 15, 10, 10);
+ add(jPanel_button, gridBagConstraints);
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonActionPerformed
+ if (jTextField_topic.getText().length() < 1) {
+ JOptionPane.showMessageDialog(this, "<html><font color='red'>A pod must have a topic.", "Error", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ try {
+ DefaultHttpClient client = BelugaClient.getHttpClient();
+ HttpPost post = new HttpPost("http://belugapods.com/edit/" + podBean.getId());
+ List<NameValuePair> nvps = new ArrayList <NameValuePair>();
+
+ nvps.add(new BasicNameValuePair("_xsrf" , client.getCookieStore().getCookies().get(0).getValue()));
+ nvps.add(new BasicNameValuePair("podid" , podBean.getId()));
+ nvps.add(new BasicNameValuePair("what" , jTextField_topic.getText()));
+
+ if (jTextArea_emails.getText().length() > 0) {
+ nvps.add(new BasicNameValuePair("emails", jTextArea_emails.getText()));
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
+
+ HttpResponse res = BelugaClient.getHttpClient().execute(post);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = "";
+
+ while ((line = reader.readLine()) != null) {
+ System.out.println(line);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }//GEN-LAST:event_jButtonActionPerformed
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton jButton;
+ private javax.swing.JLabel jLabel_member;
+ private javax.swing.JLabel jLabel_topic;
+ private javax.swing.JPanel jPanel_button;
+ private javax.swing.JScrollPane jScrollPane;
+ private javax.swing.JTextArea jTextArea_emails;
+ private javax.swing.JTextField jTextField_topic;
+ // End of variables declaration//GEN-END:variables
+
+}
--- /dev/null
+package beluga;
+
+
+import org.apache.http.impl.client.*;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.*;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: g9133
+ * Date: 11/06/24
+ * Time: 13:35
+ * To change this template use File | Settings | File Templates.
+ */
+public interface IFBelugaFrame {
+ public HashMap getConstantMap();
+ public PodBean[] getPodBean();
+ public HashMap getImageMap();
+ public DefaultHttpClient getHttpClient();
+ public JLabel getStatusBar();
+ public void setStatusBar(String status);
+ public void displayMessage(String caption, String message, TrayIcon.MessageType type);
+ public void setMessage(String message);
+ public void setMessage(String message, boolean isTop);
+}
--- /dev/null
+/*******************************************************************************
+ * \82h\82l\82d\90§\8cä\83A\83_\83v\83^
+ *
+ * \8f\88\97\9d\91Î\8fÛ\81FJTextField\83N\83\89\83X
+ * updatePod 20010928 JComboBox\82É\82à\91Î\89\9e
+ * updatePod 20011019 JTextArea\82É\82à\91Î\89\9e
+ * updatePod 20011126 JText..\82ð\82Ü\82Æ\82ß\82ÄJTextComponent\82É
+ *
+ * @version 1.0: 2001.08.21
+ ******************************************************************************/
+package beluga;
+
+
+import javax.swing.*;
+import javax.swing.text.*;
+import java.awt.event.*;
+import java.awt.im.*;
+
+
+public class IMEControl extends FocusAdapter {
+ public static final Character.Subset KANJI[] = {InputSubset.KANJI};//\8a¿\8e\9a
+ public static final Character.Subset HALFWIDTH_KATAKANA[] = {InputSubset.HALFWIDTH_KATAKANA};//\94¼\8ap¶À¶Å
+ public static final Character.Subset LATIN[] = {InputSubset.LATIN};//\89p\90\94\8e\9a\81iIME\83I\83t\81j
+ public static final Character.Subset FULLWIDTH_DIGITS[] = {InputSubset.FULLWIDTH_DIGITS};//\91S\8ap\90\94\8e\9a
+ public static final Character.Subset FULLWIDTH_LATIN[] = {InputSubset.FULLWIDTH_LATIN};//\91S\8ap\89p\90\94\8e\9a
+ private Character.Subset subsets[];
+ public static final Character.UnicodeBlock KATAKANA[] = {Character.UnicodeBlock.KATAKANA};
+
+
+ //\83R\83\93\83X\83g\83\89\83N\83^
+ public IMEControl(Character.Subset[] sub) {
+ subsets = sub;
+ }
+
+ //\83t\83H\81[\83J\83X\8eæ\93¾
+ public void focusGained(FocusEvent e) {
+ if (e.getComponent() instanceof JTextComponent ||
+ e.getComponent() instanceof JComboBox) {
+
+ if (e.getComponent().getInputContext() == null) {
+ return;
+ }
+
+ e.getComponent().getInputContext().setCharacterSubsets(subsets);
+ }
+ }
+
+ //\83t\83H\81[\83J\83X\91r\8e¸
+ public void focusLost(FocusEvent e) {
+ if (e.getComponent() instanceof JTextComponent ||
+ e.getComponent() instanceof JComboBox) {
+
+ if (e.getComponent().getInputContext() == null) {
+ return;
+ }
+
+ e.getComponent().getInputContext().setCharacterSubsets(null);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.methods.*;
+import org.apache.http.impl.client.*;
+
+import javax.swing.*;
+import java.awt.*;
+import java.io.*;
+import java.net.*;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: g9133
+ * Date: 11/06/23
+ * Time: 14:04
+ * To change this template use File | Settings | File Templates.
+ */
+public class PodBean {
+ private String id;
+ private String podImg;
+ private String podTime;
+ private String podTitle;
+ private String lastMessage;
+ private ImageIcon icon;
+ private String e_mail;
+ private String password;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getPodImg() {
+ return podImg;
+ }
+
+ public void setPodImg(String podImg) {
+ this.podImg = podImg;
+ }
+
+ public String getPodTime() {
+ return podTime;
+ }
+
+ public void setPodTime(String podTime) {
+ this.podTime = podTime;
+ }
+
+ public String getPodTitle() {
+ return podTitle;
+ }
+
+ public void setPodTitle(String podTitle) {
+ this.podTitle = podTitle;
+ }
+
+ public String getLastMessage() {
+ return lastMessage;
+ }
+
+ public void setLastMessage(String lastMessage) {
+ this.lastMessage = lastMessage;
+ }
+
+ public ImageIcon getPodImgIcon(DefaultHttpClient cli) {
+ if (icon == null) {
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com" + getPodImg());
+ HttpResponse res = cli.execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedInputStream bis = new BufferedInputStream(ent.getContent());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] data = new byte[512];
+ int len = -1;
+
+ while ((len = bis.read(data, 0, data.length)) != -1) {
+ baos.write(data, 0, len);
+ }
+
+ icon = new ImageIcon(new ImageIcon(baos.toByteArray()).getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ return icon;
+ }
+
+ public String getUrl_members() {
+ return "/members/" + this.getId();
+ }
+
+ public String getUrl_updates() {
+ return "/pod/" + this.getId();
+ }
+
+ public String getUrl_map() {
+ return "/map/" + this.getId();
+ }
+
+ public String getUrl_edit() {
+ return "/edit/" + this.getId();
+ }
+
+ public String getE_mail() {
+ return e_mail;
+ }
+
+ public void setE_mail(String e_mail) {
+ this.e_mail = e_mail;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
--- /dev/null
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.entity.*;
+import org.apache.http.client.methods.*;
+import org.apache.http.impl.client.*;
+import org.apache.http.message.*;
+import org.apache.http.protocol.*;
+import org.apache.http.util.*;
+
+import javax.swing.*;
+import javax.swing.Timer;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.util.*;
+import java.util.List;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: g9133
+ * Date: 11/06/24
+ * Time: 11:07
+ * To change this template use File | Settings | File Templates.
+ */
+public class PodPane extends JPanel {
+
+ private IFBelugaFrame frame = null;
+ private CardLayout layout = new CardLayout();
+ private JScrollPane jScrollPane_updates = new JScrollPane();
+ private JScrollPane jScrollPane_members = new JScrollPane();
+ private JScrollPane jScrollPane_map = new JScrollPane();
+ private JScrollPane jScrollPane_edit = new JScrollPane();
+ private int page_cnt = 30;
+ private JPanel jPanel = null;
+ private PodBean podBean = null;
+ private DefaultHttpClient client = null;
+ private String last_id = null;
+ private String old_id = null;
+ private boolean isVisible = true;
+
+
+ public PodPane(IFBelugaFrame frame, PodBean podBean) {
+ super();
+
+ this.frame = frame;
+ this.podBean = podBean;
+ this.client = BelugaClient.getHttpClient();
+
+ this.setLayout(layout);
+ this.add(jScrollPane_updates, "Updates");
+ this.add(jScrollPane_members, "Members");
+ this.add(jScrollPane_map, "Map");
+ this.add(jScrollPane_edit, "Edit");
+
+ jScrollPane_updates.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ jScrollPane_updates.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ jScrollPane_updates.getVerticalScrollBar().setUnitIncrement(13);
+ jScrollPane_members.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ jScrollPane_members.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ jScrollPane_members.getVerticalScrollBar().setUnitIncrement(13);
+
+ this.podBean.getPodImgIcon(client);
+
+ PodRowBean[] prbs = getMembers();
+
+ JPanel jPanel_members = new JPanel(new GridLayout(prbs.length, 0));
+
+ for (PodRowBean prb : prbs) {
+ jPanel_members.add(new PodRow(PodPane.this.frame, prb));
+ }
+
+ jScrollPane_members.getViewport().setView(jPanel_members);
+
+ try {
+ JEditorPane jEditorPane = new JEditorPane("text/html", getMap());
+
+ jEditorPane.setEditable(false);
+
+ jScrollPane_map.getViewport().setView(jEditorPane);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ jScrollPane_edit.getViewport().setView(new EditorPane(podBean));
+
+ refreshPod();
+
+ Timer timer = new Timer(5000, new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ new Thread() {
+ public void run() {
+ refreshPod();
+ }
+ }.start();
+
+ if (String.valueOf(Runtime.getRuntime().freeMemory()).length() > 6) {
+ System.out.print(String.valueOf(Runtime.getRuntime().freeMemory() / 1000000) + "MB");
+ } else if (String.valueOf(Runtime.getRuntime().freeMemory()).length() > 3) {
+ System.out.print(String.valueOf(Runtime.getRuntime().freeMemory() / 1000) + "KB");
+ } else {
+ System.out.print(String.valueOf(Runtime.getRuntime().freeMemory()) + "B");
+ }
+
+ System.out.print("/");
+
+ if (String.valueOf(Runtime.getRuntime().totalMemory()).length() > 6) {
+ System.out.print(String.valueOf(Runtime.getRuntime().totalMemory() / 1000000) + "MB");
+ } else if (String.valueOf(Runtime.getRuntime().totalMemory()).length() > 3) {
+ System.out.print(String.valueOf(Runtime.getRuntime().totalMemory() / 1000) + "KB");
+ } else {
+ System.out.print(String.valueOf(Runtime.getRuntime().totalMemory()) + "B");
+ }
+
+ System.out.println();
+ }
+ });
+
+ timer.setInitialDelay(5000);
+ timer.setRepeats(true);
+ timer.start();
+ }
+
+ public PodBean getPodBean() {
+ return podBean;
+ }
+
+ public void show(String cmd) {
+ layout.show(this, cmd);
+ }
+
+ public void send(String message) throws Exception {
+ HttpPost post = new HttpPost("http://belugapods.com/update");
+ List<NameValuePair> nvps = new ArrayList <NameValuePair>();
+
+ nvps.add(new BasicNameValuePair("_xsrf" , client.getCookieStore().getCookies().get(0).getValue()));
+ nvps.add(new BasicNameValuePair("source" , "mobile"));
+ nvps.add(new BasicNameValuePair("podid" , podBean.getId()));
+ nvps.add(new BasicNameValuePair("text" , message));
+ nvps.add(new BasicNameValuePair("composebutton", "Send"));
+
+ post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
+
+ EntityUtils.consume(BelugaClient.getHttpClient().execute(post).getEntity());
+
+ updatePod();
+ }
+
+ public void updatePod() {
+ last_id = "";
+
+ try {
+ if (jScrollPane_updates.getVerticalScrollBar().getValue() > 100) {
+ int unit = jScrollPane_updates.getVerticalScrollBar().getValue() / 50;
+
+ for (int i = jScrollPane_updates.getVerticalScrollBar().getValue(); i > 0; i -= unit) {
+ jScrollPane_updates.getVerticalScrollBar().setValue(jScrollPane_updates.getVerticalScrollBar().getValue() - unit);
+
+ Thread.sleep(15);
+ }
+ } else {
+ Thread.sleep(500);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ new Thread() {
+ public void run() {
+ refreshPod(page_cnt = 30, 0, false);
+ }
+ }.start();
+ }
+
+ public void refreshPod() {
+ refreshPod(0, 1, false);
+ }
+
+ public void refreshPod(int count, int verticals, boolean isForce) {
+ PodRow[] rows = getNewPodRows(isForce);
+
+ if (rows == null || rows.length < 1) {
+ return;
+ }
+
+ final int vertical = verticals == 0 ? 0 : jScrollPane_updates.getVerticalScrollBar().getValue();
+
+ page_cnt = count == 0 ? page_cnt : count;
+
+ JPanel jPanel2 = new JPanel(new GridLayout(page_cnt + 1, 0));
+
+ for (int i = 0; i < rows.length; i++) {
+ jPanel2.add(rows[i]);
+ }
+
+ JButton jButton_next = new JButton("Load More");
+
+ jButton_next.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ page_cnt += 30;
+
+ refreshPod(0, 1, true);
+ }
+ });
+
+ jPanel2.add(jButton_next);
+
+ jPanel = jPanel2;
+
+ jScrollPane_updates.getViewport().setView(jPanel);
+ jScrollPane_updates.getVerticalScrollBar().setValue(vertical);
+
+ try {
+ this.updateUI();
+ } catch (NullPointerException ex) {}
+ }
+
+ public ImageIcon getPodImage() {
+ return podBean.getPodImgIcon(client);
+ }
+
+ private PodRow[] getNewPodRows() {
+ return getNewPodRows(false);
+ }
+
+ private PodRow[] getNewPodRows(boolean isForce) {
+ ArrayList<PodRow> list = new ArrayList<PodRow>();
+
+ synchronized (podBean.getId()) {
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com/pod/" + podBean.getId() + "?n=" + page_cnt);
+ HttpResponse res = BelugaClient.getHttpClient().execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = null;
+ boolean renew = false;
+
+ while ((line = reader.readLine()) != null) {
+ if (line.indexOf("a name") > -1) {
+ if (last_id != null && last_id.equals(line.replaceAll("\">.*", "").replaceAll(".*\"", ""))) {
+ if (!isForce) {
+ break;
+ }
+ } else {
+ if (!renew) {
+ last_id = line.replaceAll("\">.*", "").replaceAll(".*\"", "");
+ }
+
+ renew = true;
+ }
+
+ PodRow pr = new PodRow(frame, podBean, reader, line);
+
+ if (pr.getPodRowBean().getMessage().length() < 1) {
+ continue;
+ }
+
+ pr.setVisibleIcon(isVisible);
+
+ list.add(pr);
+ }
+ }
+
+ if (renew) {
+ PodRowBean podRowBean = list.get(0).getPodRowBean();
+
+ if (!podRowBean.getUname().equals(frame.getConstantMap().get("user_name"))) {
+ frame.displayMessage(podRowBean.getUname() + ":" + podBean.getPodTitle(), podRowBean.getMessage().replaceAll("<br>", System.getProperty("line.separator")), TrayIcon.MessageType.INFO);
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ return list.toArray(new PodRow[list.size()]);
+ }
+
+ public PodRow[] getPodRows() {
+ if (jScrollPane_updates.getViewport().getView() == null) {
+ return null;
+ }
+
+ ArrayList list = new ArrayList(Arrays.asList(jPanel.getComponents()));
+
+ list.remove(list.size() - 1);
+
+ return (PodRow[]) list.toArray(new PodRow[list.size()]);
+ }
+
+ public void setVisibleIcon(boolean isVisible) {
+ this.isVisible = isVisible;
+
+ PodRow[] podRow = getPodRows();
+
+ if (podRow != null) {
+ for (PodRow pr : podRow) {
+ pr.setVisibleIcon(isVisible);
+ }
+
+ this.updateUI();
+ }
+
+ podRow = getMemberRows();
+
+ if (podRow != null) {
+ for (PodRow pr : podRow) {
+ pr.setVisibleIcon(isVisible);
+ }
+
+ this.updateUI();
+ }
+ }
+
+
+ private PodRowBean[] getMembers() {
+ ArrayList<PodRowBean> list = new ArrayList<PodRowBean>();
+
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com/members/" + podBean.getId());
+ HttpResponse res = BelugaClient.getHttpClient().execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = null;
+
+ while ((line = reader.readLine()) != null) {
+ PodRowBean prb = new PodRowBean();
+
+ try {
+ while ((line = reader.readLine()).indexOf("update") < 0);
+ } catch (Exception ex) {
+ break;
+ }
+
+ reader.readLine();
+
+ line = reader.readLine();
+
+ prb.setUserimg(line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+
+ while ((line = reader.readLine()).indexOf("mname") < 0);
+
+ prb.setUname(line.replaceAll("</.*", "").replaceAll(".*>", ""));
+
+ while ((line = reader.readLine()).indexOf("utext") < 0);
+
+ prb.setMessage(line.replaceAll("</span.*", "").replaceAll(".*utext\">", ""));
+
+ if (prb.getUserimg() == null || prb.getUname() == null || prb.getMessage() == null) {
+ continue;
+ }
+
+ list.add(prb);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return list.toArray(new PodRowBean[list.size()]);
+ }
+
+ private PodRow[] getMemberRows() {
+ if (jScrollPane_members.getViewport().getView() == null) {
+ return null;
+ }
+
+ ArrayList list = new ArrayList(Arrays.asList(((JPanel) jScrollPane_members.getViewport().getView()).getComponents()));
+
+ return (PodRow[]) list.toArray(new PodRow[list.size()]);
+ }
+
+ private String getMap() {
+ StringBuffer sb = new StringBuffer();
+
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com/map/" + podBean.getId());
+ HttpResponse res = BelugaClient.getHttpClient().execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+
+ String line = null;
+
+ while ((line = reader.readLine()) != null) {
+ sb.append(line).append(System.getProperty("line.separator"));
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return sb.toString();
+ }
+}
--- /dev/null
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+ <NonVisualComponents>
+ <Container class="javax.swing.JPopupMenu" name="jPopupMenu">
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+ <Property name="useNullLayout" type="boolean" value="true"/>
+ </Layout>
+ <SubComponents>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_copy">
+ <Properties>
+ <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+ <KeyStroke key="Ctrl+C"/>
+ </Property>
+ <Property name="mnemonic" type="int" value="67"/>
+ <Property name="text" type="java.lang.String" value="Copy"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_copyActionPerformed"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_reply">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Reply"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_replyActionPerformed"/>
+ </Events>
+ </MenuItem>
+ <MenuItem class="javax.swing.JMenuItem" name="jMenuItem_quote_reply">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Quote Reply"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem_quote_replyActionPerformed"/>
+ </Events>
+ </MenuItem>
+ </SubComponents>
+ </Container>
+ </NonVisualComponents>
+ <Properties>
+ <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+ <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/>
+ </Property>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
+ <LineBorder>
+ <Color PropertyName="color" blue="f0" green="f0" id="制御" palette="2" red="f0" type="palette"/>
+ </LineBorder>
+ </Border>
+ </Property>
+ <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+ <Color id="Hand Cursor"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[100, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[190, 50]"/>
+ </Property>
+ </Properties>
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,52,0,0,1,-107"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_center">
+ <Properties>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[200, 50]"/>
+ </Property>
+ <Property name="opaque" type="boolean" value="false"/>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[200, 50]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_space1">
+ <Properties>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="West"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Container class="javax.swing.JPanel" name="jPanel_left">
+ <Properties>
+ <Property name="opaque" type="boolean" value="false"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel_top">
+ <Properties>
+ <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+ <Color id="Hand Cursor"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[140, 19]"/>
+ </Property>
+ <Property name="opaque" type="boolean" value="false"/>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="formMouseClicked"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="North"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_user_name">
+ <Properties>
+ <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+ <Font name="MS UI Gothic" size="12" style="1"/>
+ </Property>
+ <Property name="horizontalAlignment" type="int" value="2"/>
+ <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+ <Color id="Hand Cursor"/>
+ </Property>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[200, 19]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[100, 19]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[100, 19]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="formMouseClicked"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Container class="javax.swing.JPanel" name="jPanel_center2">
+ <Properties>
+ <Property name="opaque" type="boolean" value="false"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="East"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+ <Property name="alignment" type="int" value="2"/>
+ <Property name="verticalGap" type="int" value="0"/>
+ <Property name="horizontalGap" type="int" value="0"/>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_uimg">
+ <Properties>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[19, 19]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[19, 19]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[19, 19]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel_uimgMouseClicked"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel_podtime">
+ <Properties>
+ <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+ <Color blue="66" green="66" red="66" type="rgb"/>
+ </Property>
+ <Property name="horizontalAlignment" type="int" value="4"/>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[200, 19]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[19, 19]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[19, 19]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel_podtimeMouseClicked"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JLabel" name="jLabel_message">
+ <Properties>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[32767, 32767]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[140, 31]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[140, 31]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel_messageMouseReleased,formMouseClicked"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel_space2">
+ <Properties>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[5, 0]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="West"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel_west">
+ <Properties>
+ <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+ <Color blue="ff" green="ff" red="ff" type="rgb"/>
+ </Property>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[500, 500]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="West"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel_icon">
+ <Properties>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+ <EtchetBorder bevelType="0"/>
+ </Border>
+ </Property>
+ <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+ <Color id="Hand Cursor"/>
+ </Property>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[50, 50]"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel_iconMouseClicked"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * PodRow.java
+ *
+ * Created on 2011/06/23, 19:03:51
+ */
+
+package beluga;
+
+
+import org.apache.http.*;
+import org.apache.http.client.methods.*;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.*;
+import java.awt.font.*;
+import java.io.*;
+import java.net.*;
+import java.util.*;
+
+
+/**
+ *
+ * @author g9133
+ */
+public class PodRow extends javax.swing.JPanel {
+ private IFBelugaFrame frame = null;
+ private PodRowBean podRowBean = new PodRowBean();
+
+ private PodRow() {
+ initComponents();
+ }
+
+ /** Creates new form PodRow */
+ public PodRow(IFBelugaFrame frame, PodBean podBean, BufferedReader reader, String line) {
+ this();
+
+ this.frame = frame;
+
+ try {
+ initialize(podBean, reader, line);
+
+ displayInitialize();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public PodRow(IFBelugaFrame frame, PodRowBean podRowBean) {
+ this();
+
+ this.frame = frame;
+ this.podRowBean = podRowBean;
+
+ try {
+ displayInitialize();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private void initialize(PodBean pb, BufferedReader reader, String line) throws Exception {
+ podRowBean.setId(line.replaceAll("\">.*", "").replaceAll(".*\"", ""));
+
+ while ((line = reader.readLine()).indexOf("userimg") < 0);
+
+ podRowBean.setUserimg(line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+
+ while ((line = reader.readLine()).indexOf("utitle") < 0);
+
+ line = reader.readLine();
+
+ podRowBean.setUtitle(line.replaceAll("\"></", "").replaceAll(".*\"", ""));
+
+ while ((line = reader.readLine()).indexOf("uname") < 0);
+
+ line = reader.readLine();
+
+ podRowBean.setDetails(line.replaceAll("\">.*", "").replaceAll(".*\"", ""));
+ podRowBean.setUname(line.replaceAll("</.*", "").replaceAll(".*>", ""));
+
+ while (true) {
+ line = reader.readLine();
+
+ if (line.indexOf("uimg") < 0 && line.indexOf("upin") < 0 && line.indexOf("utime") < 0) {
+ continue;
+ }
+
+ if (line.indexOf("uimg") > -1) {
+ podRowBean.setUimg(line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+ }
+
+ if (line.indexOf("upin") > -1) {
+ podRowBean.setUpin(line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+ }
+
+ if (line.indexOf("utime") > -1) {
+ podRowBean.setUtime(getPodTime(line.replaceAll("</.*", "").replaceAll(".*>", "")));
+ break;
+ }
+ }
+
+ while ((line = reader.readLine()).indexOf("utext") < 0);
+
+ podRowBean.setMessage(line.replaceAll("</span.*", "").replaceAll(".*utext\">", ""));
+ }
+
+ private void displayInitialize() {
+ jLabel_uimg.setIcon(getImageIcon(podRowBean.getUimg(), 16));
+ jLabel_podtime.setIcon(getImageIcon(podRowBean.getUpin(), 16));
+ jLabel_icon.setIcon(getImageIcon(podRowBean.getUserimg(), 50));
+ jLabel_user_name.setText(podRowBean.getUname());
+
+ if (podRowBean.getUtime() != null) {
+ jLabel_podtime.setText(podRowBean.getUtime());
+
+ TextLayout tl = new TextLayout(podRowBean.getUtime(), jLabel_podtime.getFont(), ((Graphics2D) ((JFrame) frame).getGraphics()).getFontRenderContext());
+
+ jLabel_podtime.setPreferredSize(new Dimension((int) tl.getAdvance() + (jLabel_podtime.getIcon() != null ? 22 : 0) , 19));
+ }
+
+ jLabel_message.setText("<html>" + podRowBean.getMessage() + "</html>");
+
+ if (podRowBean.getMessage().split("<br>").length > 2) {
+ jLabel_message.setPreferredSize(new Dimension(jLabel_message.getPreferredSize().width, jLabel_message.getPreferredSize().height + ((podRowBean.getMessage().split("<br>").length - 2) * 14)));
+ jLabel_message.setMaximumSize (jLabel_message.getPreferredSize());
+ jLabel_message.setMinimumSize (jLabel_message.getPreferredSize());
+
+ this.setPreferredSize(new Dimension(this.getPreferredSize().width, this.getPreferredSize().height + ((podRowBean.getMessage().split("<br>").length - 2) * 14)));
+ this.setMaximumSize (this.getPreferredSize());
+ this.setMinimumSize (this.getPreferredSize());
+ }
+
+ if (podRowBean.getMessage().indexOf("<a") > -1) {
+ jLabel_message.putClientProperty("url", podRowBean.getMessage().replaceAll(".*href=\"", "").replaceAll("\".+", ""));
+ }
+
+ if (podRowBean.getUimg() != null || podRowBean.getUpin() != null) {
+ new Thread() {
+ public void run() {
+ casheDetail();
+ }
+ }.start();
+ }
+ }
+
+ private String getPodTime(String line) {
+ return line.replaceAll("</.*", "").replaceAll(".*>", "").
+ replaceAll("just now", "\82½\82Á\82½\8d¡").
+ replaceAll("sec", "\95b").replaceAll("min", "\95ª").replaceAll("hr", "\8e\9e\8aÔ").replaceAll("yesterday", "\8dð\93ú").
+ replaceAll("Jan ", "1/").replaceAll("Feb ", "2/").replaceAll("Mar ", "3/").replaceAll("Apr ", "4/").replaceAll("May ", "5/").replaceAll("Jun ", "6/").
+ replaceAll("Jul ", "7/").replaceAll("Aug ", "8/").replaceAll("Sep ", "9/").replaceAll("Oct ", "10/").replaceAll("Nov ", "11/").replaceAll("Dec ", "12/");
+ }
+
+ public ImageIcon getImageIcon(String uri, int size) {
+ if (uri == null) {
+ return null;
+ }
+
+ if (!frame.getImageMap().containsKey(uri)) {
+ frame.getImageMap().put(uri, new ImageIcon(new ImageIcon(getImage(uri)).getImage().getScaledInstance(size, size, Image.SCALE_SMOOTH)));
+ }
+
+ return (ImageIcon) frame.getImageMap().get(uri);
+ }
+
+ private byte[] getImage(String uri) {
+ return getImage(uri, false);
+ }
+
+ private byte[] getImage(String uri, boolean isGoogle) {
+ if (uri == null) {
+ return null;
+ }
+
+ try {
+ HttpGet get = new HttpGet(isGoogle ? uri : "http://belugapods.com" + uri);
+ HttpResponse res = BelugaClient.getHttpClient().execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedInputStream bis = new BufferedInputStream(ent.getContent());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] data = new byte[4096];
+ int len = -1;
+
+ while ((len = bis.read(data, 0, data.length)) != -1) {
+ baos.write(data, 0, len);
+ }
+
+ return baos.toByteArray();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return null;
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPopupMenu = new javax.swing.JPopupMenu();
+ jMenuItem_copy = new javax.swing.JMenuItem();
+ jMenuItem_reply = new javax.swing.JMenuItem();
+ jMenuItem_quote_reply = new javax.swing.JMenuItem();
+ jPanel_center = new javax.swing.JPanel();
+ jLabel_space1 = new javax.swing.JLabel();
+ jPanel_left = new javax.swing.JPanel();
+ jPanel_top = new javax.swing.JPanel();
+ jLabel_user_name = new javax.swing.JLabel();
+ jPanel_center2 = new javax.swing.JPanel();
+ jLabel_uimg = new javax.swing.JLabel();
+ jLabel_podtime = new javax.swing.JLabel();
+ jLabel_message = new javax.swing.JLabel();
+ jLabel_space2 = new javax.swing.JLabel();
+ jPanel_west = new javax.swing.JPanel();
+ jLabel_icon = new javax.swing.JLabel();
+
+ jMenuItem_copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
+ jMenuItem_copy.setMnemonic('C');
+ jMenuItem_copy.setText("Copy");
+ jMenuItem_copy.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_copyActionPerformed(evt);
+ }
+ });
+ jPopupMenu.add(jMenuItem_copy);
+
+ jMenuItem_reply.setText("Reply");
+ jMenuItem_reply.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_replyActionPerformed(evt);
+ }
+ });
+ jPopupMenu.add(jMenuItem_reply);
+
+ jMenuItem_quote_reply.setText("Quote Reply");
+ jMenuItem_quote_reply.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMenuItem_quote_replyActionPerformed(evt);
+ }
+ });
+ jPopupMenu.add(jMenuItem_quote_reply);
+
+ setBackground(java.awt.Color.white);
+ setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.SystemColor.control));
+ setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ setMinimumSize(new java.awt.Dimension(100, 50));
+ setPreferredSize(new java.awt.Dimension(190, 50));
+ setLayout(new java.awt.BorderLayout());
+
+ jPanel_center.setMinimumSize(new java.awt.Dimension(200, 50));
+ jPanel_center.setOpaque(false);
+ jPanel_center.setPreferredSize(new java.awt.Dimension(200, 50));
+ jPanel_center.setLayout(new java.awt.BorderLayout());
+
+ jLabel_space1.setMaximumSize(new java.awt.Dimension(5, 0));
+ jLabel_space1.setMinimumSize(new java.awt.Dimension(5, 0));
+ jLabel_space1.setPreferredSize(new java.awt.Dimension(5, 0));
+ jPanel_center.add(jLabel_space1, java.awt.BorderLayout.WEST);
+
+ jPanel_left.setOpaque(false);
+ jPanel_left.setLayout(new java.awt.BorderLayout());
+
+ jPanel_top.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ jPanel_top.setMinimumSize(new java.awt.Dimension(140, 19));
+ jPanel_top.setOpaque(false);
+ jPanel_top.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ formMouseClicked(evt);
+ }
+ });
+ jPanel_top.setLayout(new java.awt.BorderLayout());
+
+ jLabel_user_name.setFont(new java.awt.Font("MS UI Gothic", 1, 12));
+ jLabel_user_name.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+ jLabel_user_name.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ jLabel_user_name.setMaximumSize(new java.awt.Dimension(200, 19));
+ jLabel_user_name.setMinimumSize(new java.awt.Dimension(100, 19));
+ jLabel_user_name.setPreferredSize(new java.awt.Dimension(100, 19));
+ jLabel_user_name.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ formMouseClicked(evt);
+ }
+ });
+ jPanel_top.add(jLabel_user_name, java.awt.BorderLayout.CENTER);
+
+ jPanel_center2.setOpaque(false);
+ jPanel_center2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 0, 0));
+
+ jLabel_uimg.setMaximumSize(new java.awt.Dimension(19, 19));
+ jLabel_uimg.setMinimumSize(new java.awt.Dimension(19, 19));
+ jLabel_uimg.setPreferredSize(new java.awt.Dimension(19, 19));
+ jLabel_uimg.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ jLabel_uimgMouseClicked(evt);
+ }
+ });
+ jPanel_center2.add(jLabel_uimg);
+
+ jLabel_podtime.setForeground(new java.awt.Color(102, 102, 102));
+ jLabel_podtime.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ jLabel_podtime.setMaximumSize(new java.awt.Dimension(200, 19));
+ jLabel_podtime.setMinimumSize(new java.awt.Dimension(19, 19));
+ jLabel_podtime.setPreferredSize(new java.awt.Dimension(19, 19));
+ jLabel_podtime.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ jLabel_podtimeMouseClicked(evt);
+ }
+ });
+ jPanel_center2.add(jLabel_podtime);
+
+ jPanel_top.add(jPanel_center2, java.awt.BorderLayout.EAST);
+
+ jPanel_left.add(jPanel_top, java.awt.BorderLayout.NORTH);
+
+ jLabel_message.setMaximumSize(new java.awt.Dimension(32767, 32767));
+ jLabel_message.setMinimumSize(new java.awt.Dimension(140, 31));
+ jLabel_message.setPreferredSize(new java.awt.Dimension(140, 31));
+ jLabel_message.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseReleased(java.awt.event.MouseEvent evt) {
+ jLabel_messageMouseReleased(evt);
+ formMouseClicked(evt);
+ }
+ });
+ jPanel_left.add(jLabel_message, java.awt.BorderLayout.CENTER);
+
+ jLabel_space2.setMaximumSize(new java.awt.Dimension(5, 0));
+ jLabel_space2.setMinimumSize(new java.awt.Dimension(5, 0));
+ jLabel_space2.setPreferredSize(new java.awt.Dimension(5, 0));
+ jPanel_left.add(jLabel_space2, java.awt.BorderLayout.WEST);
+
+ jPanel_center.add(jPanel_left, java.awt.BorderLayout.CENTER);
+
+ add(jPanel_center, java.awt.BorderLayout.CENTER);
+
+ jPanel_west.setBackground(new java.awt.Color(255, 255, 255));
+ jPanel_west.setMaximumSize(new java.awt.Dimension(500, 500));
+ jPanel_west.setMinimumSize(new java.awt.Dimension(50, 50));
+ jPanel_west.setPreferredSize(new java.awt.Dimension(50, 50));
+ jPanel_west.setLayout(new java.awt.GridBagLayout());
+
+ jLabel_icon.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+ jLabel_icon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ jLabel_icon.setMaximumSize(new java.awt.Dimension(50, 50));
+ jLabel_icon.setMinimumSize(new java.awt.Dimension(50, 50));
+ jLabel_icon.setPreferredSize(new java.awt.Dimension(50, 50));
+ jLabel_icon.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ jLabel_iconMouseClicked(evt);
+ }
+ });
+ jPanel_west.add(jLabel_icon, new java.awt.GridBagConstraints());
+
+ add(jPanel_west, java.awt.BorderLayout.WEST);
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void formMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mouseClicked
+ JPanel jPanel = (JPanel) SwingUtilities.getAncestorOfClass(JPanel.class, this);
+
+ for (int i = 0; i < jPanel.getComponentCount(); i++) {
+ if (jPanel.getComponent(i) instanceof PodRow) {
+ ((PodRow) jPanel.getComponent(i)).setBorder(BorderFactory.createLineBorder(SystemColor.control));
+ }
+ }
+
+ this.setBorder(BorderFactory.createLineBorder(Color.gray, 2));
+
+ }//GEN-LAST:event_mouseClicked
+
+ private void jLabel_uimgMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel_uimgMouseClicked
+ if (((JLabel) evt.getComponent()).getIcon() == null) {
+ return;
+ }
+
+ showPreviewDialog(evt, podRowBean.getDetailImg(), false);
+ }//GEN-LAST:event_jLabel_uimgMouseClicked
+
+ private void jLabel_podtimeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel_podtimeMouseClicked
+ if (((JLabel) evt.getComponent()).getIcon() == null) {
+ return;
+ }
+
+ showPreviewDialog(evt, podRowBean.getDetailMap(), true);
+ }//GEN-LAST:event_jLabel_podtimeMouseClicked
+
+ private void jLabel_messageMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel_messageMouseReleased
+ if (evt.isPopupTrigger()) {
+ jPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
+ return;
+ }
+
+ if (jLabel_message.getClientProperty("url") == null) {
+ return;
+ }
+
+ try {
+ Desktop.getDesktop().browse(new URI((String) jLabel_message.getClientProperty("url")));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }//GEN-LAST:event_jLabel_messageMouseReleased
+
+ private void jMenuItem_copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_copyActionPerformed
+ Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
+ StringSelection ss = new StringSelection(jLabel_message.getText().replaceAll("</?html>", "").replaceAll("<br>", System.getProperty("line.separator")));
+
+ cb.setContents(ss, null);
+ }//GEN-LAST:event_jMenuItem_copyActionPerformed
+
+ private void jLabel_iconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel_iconMouseClicked
+ showPreviewDialog(evt, podRowBean.getUserimg(), false);
+ }//GEN-LAST:event_jLabel_iconMouseClicked
+
+ private void jMenuItem_replyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_replyActionPerformed
+ frame.setMessage("@" + podRowBean.getUname() + " ");
+ }//GEN-LAST:event_jMenuItem_replyActionPerformed
+
+ private void jMenuItem_quote_replyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_quote_replyActionPerformed
+ frame.setMessage("QT@" + podRowBean.getUname() + " " + podRowBean.getMessage(), true);
+ }//GEN-LAST:event_jMenuItem_quote_replyActionPerformed
+
+ public void setVisibleIcon(boolean isVisible) {
+ if (isVisible) {
+ this.add(jPanel_west, "West");
+ } else {
+ this.remove(jPanel_west);
+ }
+ }
+
+ private void casheDetail() {
+ try {
+ HttpGet get = new HttpGet("http://belugapods.com" + podRowBean.getDetails());
+ HttpResponse res = BelugaClient.getHttpClient().execute(get);
+ HttpEntity ent = res.getEntity();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ent.getContent(), "UTF8"));
+ String line = null;
+
+ while ((line = reader.readLine()) != null) {
+ if (line.indexOf("detailimg") > -1) {
+ podRowBean.setDetailImg(line.replaceAll("\"/>.*", "").replaceAll(".*\"", ""));
+ }
+
+ if (line.indexOf("staticmap") > -1) {
+ podRowBean.setDetailMap(line.replaceAll(".*src=\"", "").replaceAll("\".*", ""));
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private void showPreviewDialog(MouseEvent evt, final String uri, final boolean isGoogle) {
+ if (getImageMap().containsKey(uri)) {
+ return;
+ }
+
+ final JDialog jDialog = new JDialog((JFrame) frame);
+ ImageIcon imageIcon = new ImageIcon(getImage(uri, isGoogle));
+ final JLabel jLabel = new JLabel();
+
+ jDialog.setUndecorated(true);
+ jDialog.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosed(WindowEvent e) {
+ getImageMap().remove(uri);
+ }
+ });
+
+ jDialog.addComponentListener(new ComponentAdapter() {
+ @Override
+ public void componentMoved(ComponentEvent e) {
+ if (jLabel.getClientProperty("window") == null) {
+ return;
+ }
+
+ JWindow jWindow = (JWindow) jLabel.getClientProperty("window");
+
+ jWindow.setLocation(jDialog.getLocationOnScreen().x + jDialog.getWidth() - jWindow.getWidth() - 2, jDialog.getLocationOnScreen().y + jDialog.getHeight() - jWindow.getHeight() - 2);
+ }
+ });
+
+ int width = imageIcon.getImage().getWidth (imageIcon.getImageObserver());
+ int height = imageIcon.getImage().getHeight(imageIcon.getImageObserver());
+
+ if (!isGoogle) {
+ while (width > 320 || height > 240) {
+ width = width / 2;
+ height = height / 2;
+ }
+
+ imageIcon = new ImageIcon(imageIcon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH));
+ }
+
+ jLabel.setIcon(imageIcon);
+ jDialog.setSize(width, height);
+
+ int x = evt.getComponent().getLocationOnScreen().x + evt.getX();
+ int y = evt.getComponent().getLocationOnScreen().y + evt.getY();
+
+ Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
+
+
+ if (x + jDialog.getWidth() > dim.getWidth()) {
+ x = ((int) dim.getWidth()) - jDialog.getWidth();
+ }
+
+ if (y + jDialog.getHeight() > dim.getHeight()) {
+ y = ((int) dim.getHeight()) - jDialog.getHeight();
+ }
+
+ jDialog.setLocation(x, y);
+
+ jLabel.setBorder(BorderFactory.createEtchedBorder());
+ jLabel.setToolTipText("Double Click to close");
+
+ jLabel.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent e) {
+ jLabel.putClientProperty("loc1", jDialog.getLocationOnScreen());
+ jLabel.putClientProperty("loc2", MouseInfo.getPointerInfo().getLocation());
+
+ jLabel.setBorder(BorderFactory.createLineBorder(Color.gray, 2));
+
+ if (e.getButton() == e.BUTTON1 && e.getClickCount() == 2) {
+ jDialog.dispose();
+ }
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ jLabel.setBorder(BorderFactory.createEtchedBorder());
+ }
+ });
+
+ jLabel.addMouseMotionListener(new MouseMotionAdapter() {
+ @Override
+ public void mouseDragged(MouseEvent e) {
+ Point loc1 = (Point) jLabel.getClientProperty("loc1");
+ Point loc2 = (Point) jLabel.getClientProperty("loc2");
+ Point loc3 = MouseInfo.getPointerInfo().getLocation();
+
+ jDialog.setLocation(loc1.x + loc3.x - loc2.x, loc1.y + loc3.y - loc2.y);
+ }
+ });
+
+ jDialog.getContentPane().add(jLabel, "Center");
+ jDialog.setVisible(true);
+
+ final JPopupMenu jPopupMenu = new JPopupMenu();
+ JMenuItem jMenuItem_org = new JMenuItem("Original Size");
+ JMenuItem jMenuItem_tobig = new JMenuItem("Size (+)");
+ JMenuItem jMenuItem_tosml = new JMenuItem("Size (-)");
+ JMenuItem jMenuItem_close = new JMenuItem("Close");
+
+ if (isGoogle) {
+ final JMenuItem jMenuItem_type = new JMenuItem("Type to Satellite");
+
+ jMenuItem_type.setEnabled(false);
+ jMenuItem_type.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (jLabel.getClientProperty("type") == null) {
+ return;
+ }
+
+ if ("map_r_".equals(jLabel.getClientProperty("type"))) {
+ jLabel.putClientProperty("type", "map_s_");
+ jMenuItem_type.setText("Type to Roadmap");
+ } else {
+ jLabel.putClientProperty("type", "map_r_");
+ jMenuItem_type.setText("Type to Satellite");
+ }
+
+ jLabel.setIcon(new ImageIcon(new ImageIcon((byte[]) jLabel.getClientProperty(((String) jLabel.getClientProperty("type")) + jLabel.getClientProperty("zoom"))).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ }
+ });
+
+
+ jLabel.putClientProperty("menu", jMenuItem_type);
+ jPopupMenu.add(jMenuItem_type);
+ }
+
+ jMenuItem_org.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ImageIcon icon = null;
+
+ if (isGoogle) {
+ icon = new ImageIcon((byte[]) jLabel.getClientProperty(((String) jLabel.getClientProperty("type")) + jLabel.getClientProperty("zoom")));
+ } else {
+ icon = new ImageIcon(getImage(uri, isGoogle));
+ }
+
+ jDialog.setSize(icon.getIconWidth(), icon.getIconHeight());
+ jLabel.setIcon(icon);
+ }
+ });
+
+ jMenuItem_tobig.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Dimension dim = jDialog.getSize();
+
+ if (dim.width * 2 > Toolkit.getDefaultToolkit().getScreenSize().width) {
+ return;
+ }
+
+ jDialog.setSize(dim.width * 2, dim.height * 2);
+
+ if (isGoogle) {
+ jLabel.setIcon(new ImageIcon(new ImageIcon((byte[]) jLabel.getClientProperty(((String) jLabel.getClientProperty("type")) + jLabel.getClientProperty("zoom"))).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ } else {
+ jLabel.setIcon(new ImageIcon(new ImageIcon(getImage(uri, isGoogle)).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ }
+ }
+ });
+ jMenuItem_tosml.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Dimension dim = jDialog.getSize();
+
+ if (dim.width / 2 < 50) {
+ return;
+ }
+
+ jDialog.setSize(dim.width / 2, dim.height / 2);
+
+ if (isGoogle) {
+ jLabel.setIcon(new ImageIcon(new ImageIcon((byte[]) jLabel.getClientProperty(((String) jLabel.getClientProperty("type")) + jLabel.getClientProperty("zoom"))).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ } else {
+ jLabel.setIcon(new ImageIcon(new ImageIcon(getImage(uri, isGoogle)).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ }
+ }
+ });
+ jMenuItem_close.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jDialog.dispose();
+ }
+ });
+
+ jPopupMenu.add(jMenuItem_org);
+ jPopupMenu.add(jMenuItem_tobig);
+ jPopupMenu.add(jMenuItem_tosml);
+ jPopupMenu.add(new JSeparator());
+ jPopupMenu.add(jMenuItem_close);
+
+ jLabel.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (!e.isPopupTrigger()) {
+ return;
+ }
+
+ jPopupMenu.show(e.getComponent(), e.getX(), e.getY());
+ }
+ });
+
+ if (isGoogle) {
+ new Thread() {
+ public void run() {
+ final JWindow jWindow = new JWindow(jDialog);
+ final JLabel jLabel2 = new JLabel(" Map Loading ");
+
+ jLabel.putClientProperty("window", jWindow);
+
+ jLabel2.setBorder(BorderFactory.createEtchedBorder());
+ jLabel2.setFont(new Font(jLabel2.getFont().getFamily(), Font.BOLD, jLabel2.getFont().getSize()));
+ jLabel2.setForeground(Color.darkGray);
+
+ jWindow.getContentPane().add(jLabel2, "Center");
+ jWindow.pack();
+ jWindow.setLocation(jDialog.getLocationOnScreen().x + jDialog.getWidth() - jWindow.getWidth() - 2, jDialog.getLocationOnScreen().y + jDialog.getHeight() - jWindow.getHeight() - 2);
+ jWindow.setVisible(true);
+
+ for (int i = 11; i < 20; i++) {
+ jLabel.putClientProperty("map_r_" + i, getImage(uri.replaceAll("zoom=\\d\\d", "zoom=" + i), isGoogle));
+ jLabel2.setForeground(Color.white);
+ jLabel.putClientProperty("map_s_" + i, getImage(uri.replaceAll("zoom=\\d\\d", "zoom=" + i) + "&maptype=satellite", isGoogle));
+ jLabel2.setForeground(Color.darkGray);
+ }
+
+ if (jLabel.getClientProperty("menu") != null) {
+ ((JMenuItem) jLabel.getClientProperty("menu")).setEnabled(true);
+ }
+
+ jLabel.putClientProperty("zoom", "15");
+ jLabel.putClientProperty("type", "map_r_");
+
+ jLabel.addMouseWheelListener(new MouseWheelListener() {
+ @Override
+ public void mouseWheelMoved(MouseWheelEvent e) {
+ String zoom = (String) jLabel.getClientProperty("zoom");
+
+ if (zoom == null) {
+ return;
+ }
+
+ int cnt = Integer.parseInt(zoom);
+
+ if (cnt + e.getWheelRotation() < 11 || cnt + e.getWheelRotation() > 19) {
+ return;
+ }
+
+ cnt += e.getWheelRotation();
+
+ jLabel.putClientProperty("zoom", String.valueOf(cnt));
+ jLabel.setIcon(new ImageIcon(new ImageIcon((byte[]) jLabel.getClientProperty(((String) jLabel.getClientProperty("type")) + cnt)).getImage().getScaledInstance(jDialog.getWidth(), jDialog.getHeight(), Image.SCALE_SMOOTH)));
+ }
+ });
+
+ jWindow.setVisible(false);
+ jLabel.putClientProperty("window", null);
+ }
+ }.start();
+ }
+
+ getImageMap().put(uri, jDialog);
+ }
+
+ private HashMap getImageMap() {
+ if (frame.getStatusBar().getClientProperty("image_cache") == null) {
+ frame.getStatusBar().putClientProperty("image_cache", new HashMap());
+ }
+
+ return (HashMap) frame.getStatusBar().getClientProperty("image_cache");
+ }
+
+ public PodRowBean getPodRowBean() {
+ return podRowBean;
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel_icon;
+ private javax.swing.JLabel jLabel_message;
+ private javax.swing.JLabel jLabel_podtime;
+ private javax.swing.JLabel jLabel_space1;
+ private javax.swing.JLabel jLabel_space2;
+ private javax.swing.JLabel jLabel_uimg;
+ private javax.swing.JLabel jLabel_user_name;
+ private javax.swing.JMenuItem jMenuItem_copy;
+ private javax.swing.JMenuItem jMenuItem_quote_reply;
+ private javax.swing.JMenuItem jMenuItem_reply;
+ private javax.swing.JPanel jPanel_center;
+ private javax.swing.JPanel jPanel_center2;
+ private javax.swing.JPanel jPanel_left;
+ private javax.swing.JPanel jPanel_top;
+ private javax.swing.JPanel jPanel_west;
+ private javax.swing.JPopupMenu jPopupMenu;
+ // End of variables declaration//GEN-END:variables
+}
--- /dev/null
+package beluga;
+
+
+import java.io.*;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: g9133
+ * Date: 11/06/28
+ * Time: 17:23
+ * To change this template use File | Settings | File Templates.
+ */
+public class PodRowBean implements Serializable {
+ private String id = null;
+ private String userimg = null;
+ private String utitle = null;
+ private String uname = null;
+ private String uimg = null;
+ private String upin = null;
+ private String utime = null;
+ private String message = null;
+ private String details = null;
+ private String detailImg = null;
+ private String detailMap = null;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getUserimg() {
+ return userimg;
+ }
+
+ public void setUserimg(String userimg) {
+ this.userimg = userimg;
+ }
+
+ public String getUtitle() {
+ return utitle;
+ }
+
+ public void setUtitle(String utitle) {
+ this.utitle = utitle;
+ }
+
+ public String getUname() {
+ return uname;
+ }
+
+ public void setUname(String uname) {
+ this.uname = uname;
+ }
+
+ public String getUimg() {
+ return uimg;
+ }
+
+ public void setUimg(String uimg) {
+ this.uimg = uimg;
+ }
+
+ public String getUpin() {
+ return upin;
+ }
+
+ public void setUpin(String upin) {
+ this.upin = upin;
+ }
+
+ public String getUtime() {
+ return utime;
+ }
+
+ public void setUtime(String utime) {
+ this.utime = utime;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getDetails() {
+ return details;
+ }
+
+ public void setDetails(String details) {
+ this.details = details;
+ }
+
+ public String getDetailImg() {
+ return detailImg;
+ }
+
+ public void setDetailImg(String detailImg) {
+ this.detailImg = detailImg;
+ }
+
+ public String getDetailMap() {
+ return detailMap;
+ }
+
+ public void setDetailMap(String detailMap) {
+ this.detailMap = detailMap;
+ }
+}