Fixes for a number of issues:
382803 externalises strings for translation (English strings included)
382802 adds category for view (temporarily "M2M")
392742 fix naming, now MQTT Tester View
382801 fix icon to remove previous corporate branding
Also fixes tooltip help on some fields
TODO: still need to complete tooltip help
Moves README.txt to Markdown format for nicer formatting
Removes binary class files from the repository
Removes required Java runtime version from manifest
diff --git a/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF b/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
index 04d83cb..6dad7af 100644
--- a/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
+++ b/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
@@ -1,11 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse Paho Client View
+Bundle-Name: MQTT Tester View
 Bundle-SymbolicName: org.eclipse.paho.client.eclipse.view;singleton:=true
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.1
 Bundle-Activator: org.eclipse.paho.client.eclipse.view.Activator
 Bundle-Vendor: ESF
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.jface.action,
  org.eclipse.jface.resource,
@@ -21,4 +20,5 @@
  org.eclipse.ui,
  org.eclipse.ui.part,
  org.eclipse.ui.plugin,
+ org.eclipse.osgi.util,
  org.osgi.framework
diff --git a/org.eclipse.paho.client.eclipse.view/README.md b/org.eclipse.paho.client.eclipse.view/README.md
new file mode 100644
index 0000000..416db3a
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/README.md
@@ -0,0 +1,116 @@
+**Project**  Eclipse Paho MQTT Tester View
+
+**Version**  1.0.1
+
+**Date**     09-11-2012
+
+**Author**   Eurotech Inc.
+
+
+# Overview
+
+The Eclipse Paho MQTT Tester View is an Eclipse plug-in that provides a user interface for performing MQTT-based messaging tasks within Eclipse.  
+
+
+# Installation
+
+The plug-in can be installed using the included update site:
+
+ update_site/update.site.zip
+ 
+1) Unzip the file onto your local machine.  
+
+2) In Eclipse, browse to Help -> Install New Software.
+
+3) Add a new local repository by clicking on the "Add..." button and browsing to the directory that you unzipped above (should contain a site.xml file).  Make sure to name the repository and then click "Ok".  You should now be able to select the repository in the "Work with:" drop down menu and the plug-in should appear in the list.  
+
+4) Select the plug-in:
+
+ Paho Client Eclipse View Feature
+	
+5) Click "Next" and follow the remaining instructions for installing the plug-in.
+
+# Usage
+
+The view can be accessed by navigating to Window -> Show View -> Other..., then expand the "M2M" folder and select "MQTT Tester View".  This will open the interface for the 
+Paho MQTT client.  The interface consists of three tabs: Connection, Publish, and Subscribe.
+
+- Connection Tab
+
+This tab is used to connect the MQTT client to a broker.  A connection must be established in order to publish and subscribe in the remaining tabs.  Here is a brief description of the fields:
+
+Broker Address: (Required) The IP address or URL of the broker
+
+Broker Port:    (Required) The port number of the broker
+
+Client ID:      (Required) A unique identifier to connect with.
+
+Username:       A username, if required by the broker.
+
+Password:       A password, if required by the broker.
+
+Keep Alive:     (Required) The number of seconds between keep alive pings sent to the broker.
+
+Clean Start:    Whether or not to maintain subscriptions across disconnects.
+
+LWT Enable:     Whether to enable Last Will and Testament (LWT).
+
+LWT Topic:      The topic that the broker will publish the LWT on.
+
+LWT Message:    The message that the broker will publish for the LWT.
+
+LWT QoS:	The quality of service that the LWT will be published on.
+
+LWT Retain:	Whether to retain the LWT message.
+
+- Publish Tab
+
+Used to publish messages to the broker.  A message may be a string or a File.  Here is a brief description of the fields:
+
+Topic:	 The topic to publish on.
+
+QoS:     The quality of service to publish on.
+
+Payload: The payload to publish (if publishing a string).
+
+File:    The file to publish (if publishing a file).
+
+- Subscribe Tab
+
+Used to subscribe and unsubscribe on topics.  Once the client is subscribed to a topic, all messages recieved will be displayed to the log below.  Here is a brief description of the fields:
+
+Topic: The topic to subscribe on.
+
+QoS:   The quality of service to subscribe on.
+
+
+# Building
+
+The project requires the Plug-in Development Environment (PDE) in order to build. Information about installing the PDE tools can be found at: 
+
+ www.eclipse.org/pde
+	
+The source for the project itself can be found at:
+
+ http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/
+	
+Once the project is imported into Eclipse, it can be build by right clicking on the project
+and navigating to Export -> Plug-in Developement -> Deployable plug-ins and fragments.
+
+
+## Copyright
+
+Copyright (c) 2012 Eurotech Inc. All rights reserved.
+
+
+## License
+
+This project is released under the Eclipse Public License (EPL) version 1.0
+
+
+## Additional Resources
+
+* [Eclipse Paho project](http://www.eclipse.org/paho/)
+
+* [MQTT Community](http://www.mqtt.org)
+
diff --git a/org.eclipse.paho.client.eclipse.view/README.txt b/org.eclipse.paho.client.eclipse.view/README.txt
deleted file mode 100644
index 302d7f0..0000000
--- a/org.eclipse.paho.client.eclipse.view/README.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-Project:  Eclipse Paho MQTT Client View
-Version:  1.0.0
-Date:     06-06-2012
-Author:   Eurotech Inc.
-
-
-**************
-** Overview **
-**************
-
-The Eclipse Paho MQTT Client View is an Eclipse plug-in that provides a 
-user interface for managing an MQTT client within Eclipse.  
-
-
-******************
-** Installation **
-******************
-
-The plug-in can be installed using the included update site:
-
- update_site/update.site.zip
- 
-1) Unzip the file onto your local machine.  
-
-2) In Eclipse, browse to Help -> Install New Software.
-
-3) Add a new local repository by clicking on the "Add..." button and browsing to the directory
-that you unzipped above (should contain a site.xml file).  Make sure to name the repository
-and then click "Ok".  You should now be able to select the repository in the "Work with:" 
-drop down menu and the plug-in should appear in the list.  
-
-4) Select the plug-in:
-
- Paho Client Eclipse View Feature
-	
-5) Click "Next" and follow the remaining instructions for installing the plug-in.
-
-
-***********
-** Usage **
-***********
-
-The view can be accessed by navigating to Window -> Show View -> Other..., then expand the 
-"Others" folder and select "Eclipse Paho Client View".  This will open the interface for the 
-Paho MQTT client.  The interface consists of three tabs: Connection, Publish, and Subscribe.
-
--Connection Tab
-
-This tab is used to connect the MQTT client to a broker.  A connection
-must be established in order to publish and subscribe in the remaining
-tabs.  Here is a brief description of the fields:
-
-Broker Address: (Required) The IP address or URL of the broker
-Broker Port:    (Required) The port number of the broker
-Client ID:      (Required) A unique identifier to connect with.
-Username:       A username, if required by the broker.
-Password:       A password, if required by the broker.
-Keep Alive:     (Required) The number of seconds between keep alive pings sent to the broker.
-Clean Start:    Whether or not to maintain subscriptions across disconnects.
-LWT Enable:     Whether to enable Last Will and Testament (LWT).
-LWT Topic:      The topic that the broker will publish the LWT on.
-LWT Message:    The message that the broker will publish for the LWT.
-LWT QoS:	The quality of service that the LWT will be published on.
-LWT Retain:	Whether to retain the LWT message.
-
--Publish Tab
-
-Used to publish messages to the broker.  A message may be a string or a File.  Here is a 
-brief description of the fields:
-
-Topic:	 The topic to publish on.
-QoS:     The quality of service to publish on.
-Payload: The payload to publish (if publishing a string).
-File:    The file to publish (if publishing a file).
-
--Subscribe Tab
-
-Used to subscribe and unsubscribe on topics.  Once the client is subcribed to a topic, all 
-messages recieved will be displayed to the log below.  Here is a brief description of the 
-fields:
-
-Topic: The topic to subscribe on.
-QoS:   The quality of service to subscribe on.
-
-
-**************
-** Building **
-**************
-
-The project requires the Plug-in Development Environment (PDE) in order to build. 
-Information about installing the PDE tools can be found at: 
-
- www.eclipse.org/pde
-	
-The source for the project itself can be found at:
-
- http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/
-	
-Once the project is imported into Eclipse, it can be build by rigt clicking on the project
-and navigating to Export -> Plug-in Developement -> Deployable plug-ins and fragments.
-
-
-***************
-** Copyright **
-***************
-
-Copyright (c) 2012 Eurotech Inc. All rights reserved.
-
-
-*************
-** License **
-*************
-
-This project is released under the Eclipse Public License (EPL) version 1.0
-
-
-******************************
-** Additional Documentation **
-******************************
-
-Eclipse Paho:  http://www.eclipse.org/paho/
-MQTT:          http://www.mqtt.org
-
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class
deleted file mode 100644
index 62cd3b2..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class
deleted file mode 100644
index c6dae5a..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class
deleted file mode 100644
index c62c24f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class
deleted file mode 100644
index 6b45fab..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class
deleted file mode 100644
index 151547c..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class
deleted file mode 100644
index cc88085..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class
deleted file mode 100644
index ec4899d..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class
deleted file mode 100644
index 6b7ab6b..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class
deleted file mode 100644
index e55f83f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class
deleted file mode 100644
index abd667e..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class
deleted file mode 100644
index 8cc4b41..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class
deleted file mode 100644
index c609f41..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class
deleted file mode 100644
index 244d4a9..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class
deleted file mode 100644
index a7bf33f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/build.properties b/org.eclipse.paho.client.eclipse.view/build.properties
index 0d2f5cd..ddd2f47 100644
--- a/org.eclipse.paho.client.eclipse.view/build.properties
+++ b/org.eclipse.paho.client.eclipse.view/build.properties
@@ -3,10 +3,10 @@
 bin.includes = META-INF/,\

                .,\

                plugin.xml,\

-               icons/

+               icons/,\

+               README.md

 additional.bundles = org.eclipse.swt,\

                      org.eclipse.ui,\

                      org.eclipse.core.runtime,\

-                     org.eclipse.core.boot,\

                      org.eclipse.core.resources,\

                      org.eclipse.paho.client.mqttv3

diff --git a/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif b/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif
deleted file mode 100644
index 92732e4..0000000
--- a/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png b/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png
new file mode 100755
index 0000000..a66fac5
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/icons/paho.png b/org.eclipse.paho.client.eclipse.view/icons/paho.png
new file mode 100755
index 0000000..344f1f1
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/icons/paho.png
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/plugin.xml b/org.eclipse.paho.client.eclipse.view/plugin.xml
index b8616b0..729b400 100644
--- a/org.eclipse.paho.client.eclipse.view/plugin.xml
+++ b/org.eclipse.paho.client.eclipse.view/plugin.xml
@@ -2,9 +2,15 @@
 <?eclipse version="3.4"?>

 <plugin>

 	<extension point="org.eclipse.ui.views">

+	     <category 

+           id="org.eclipse.ui.paho"

+           name="M2M">

+        </category>

+        

     	<view id="org.eclipse.paho.client.eclipse.view.mqttclientview"

-			name="Eclipse Paho Client View"

-			class="org.eclipse.paho.client.eclipse.view.MqttClientView"

-			icon="icons/eurotech.gif"/>

+			name="MQTT Tester"

+			category="org.eclipse.ui.paho" 

+	        class="org.eclipse.paho.client.eclipse.view.MqttClientView" 

+			icon="icons/mqtt_view.png"/>

 	</extension>

-</plugin>
\ No newline at end of file
+</plugin>

diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
index 19d4eda..5c8a08c 100644
--- a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
@@ -22,7 +22,7 @@
 public class Activator extends AbstractUIPlugin {

 

 	// The plug-in ID

-	public static final String PLUGIN_ID = "com.esf.eclipse.mqtt.client";

+	public static final String PLUGIN_ID = "org.eclipse.paho.client.eclipse.view";

 

 	// The shared instance

 	private static Activator plugin;

diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java
new file mode 100755
index 0000000..96b43e6
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java
@@ -0,0 +1,92 @@
+package org.eclipse.paho.client.eclipse.view;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.paho.client.eclipse.view.messages"; //$NON-NLS-1$
+	public static String MqttClientView_10;
+	public static String MqttClientView_100;
+	public static String MqttClientView_101;
+	public static String MqttClientView_102;
+	public static String MqttClientView_103;
+	public static String MqttClientView_104;
+	public static String MqttClientView_105;
+	public static String MqttClientView_106;
+	public static String MqttClientView_11;
+	public static String MqttClientView_110;
+	public static String MqttClientView_111;
+	public static String MqttClientView_15;
+	public static String MqttClientView_16;
+	public static String MqttClientView_17;
+	public static String MqttClientView_19;
+	public static String MqttClientView_20;
+	public static String MqttClientView_21;
+	public static String MqttClientView_22;
+	public static String MqttClientView_23;
+	public static String MqttClientView_24;
+	public static String MqttClientView_25;
+	public static String MqttClientView_26;
+	public static String MqttClientView_28;
+	public static String MqttClientView_29;
+	public static String MqttClientView_30;
+	public static String MqttClientView_32;
+	public static String MqttClientView_34;
+	public static String MqttClientView_36;
+	public static String MqttClientView_38;
+	public static String MqttClientView_39;
+	public static String MqttClientView_41;
+	public static String MqttClientView_42;
+	public static String MqttClientView_43;
+	public static String MqttClientView_45;
+	public static String MqttClientView_47;
+	public static String MqttClientView_48;
+	public static String MqttClientView_49;
+	public static String MqttClientView_50;
+	public static String MqttClientView_51;
+	public static String MqttClientView_52;
+	public static String MqttClientView_54;
+	public static String MqttClientView_56;
+	public static String MqttClientView_6;
+	public static String MqttClientView_62;
+	public static String MqttClientView_63;
+	public static String MqttClientView_64;
+	public static String MqttClientView_65;
+	public static String MqttClientView_66;
+	public static String MqttClientView_67;
+	public static String MqttClientView_68;
+	public static String MqttClientView_69;
+	public static String MqttClientView_7;
+	public static String MqttClientView_70;
+	public static String MqttClientView_71;
+	public static String MqttClientView_72;
+	public static String MqttClientView_73;
+	public static String MqttClientView_74;
+	public static String MqttClientView_75;
+	public static String MqttClientView_76;
+	public static String MqttClientView_77;
+	public static String MqttClientView_78;
+	public static String MqttClientView_79;
+	public static String MqttClientView_8;
+	public static String MqttClientView_80;
+	public static String MqttClientView_81;
+	public static String MqttClientView_82;
+	public static String MqttClientView_83;
+	public static String MqttClientView_87;
+	public static String MqttClientView_88;
+	public static String MqttClientView_89;
+	public static String MqttClientView_9;
+	public static String MqttClientView_90;
+	public static String MqttClientView_91;
+	public static String MqttClientView_92;
+	public static String MqttClientView_93;
+	public static String MqttClientView_94;
+	public static String MqttClientView_95;
+	public static String MqttClientView_99;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
index 7743003..b625da9 100644
--- a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
@@ -55,7 +55,7 @@
 
 /**
  * An MQTT client view.  The top half provides three tabs for Connecting to an MQTT broker, publishing messages,
- * and subscribing on topics.  The bottom half of the view contains a log of all MQTT connections, publishes, and
+ * and subscribing on topics.  The bottom half of the view contains a log of all MQTT connections, publications, and
  * subscription events.
  */

 public class MqttClientView extends ViewPart implements MqttCallback {

@@ -67,20 +67,20 @@
 	// MQTT connection parameters with defaults

 	private static MqttClient mqttClient		= null;

 	private static MqttConnectOptions connOpts	= null;
-	private static String connectAddress 		= "";

+	private static String connectAddress 		= ""; //$NON-NLS-1$

 	private static int connectPort 				= 1883;

-	private static String clientId 				= "";

+	private static String clientId 				= ""; //$NON-NLS-1$

 	private static short keepAlive 				= 30;

 	private static boolean cleanStart 			= true;

 	private static boolean firstConnect 		= true;

 	private static Boolean connected 			= new Boolean(false);

 	private static String tmpMsg 				= null;

-	private static String willTopic 			= "";

-	private static String willMessage 			= "";

+	private static String willTopic 			= ""; //$NON-NLS-1$

+	private static String willMessage 			= ""; //$NON-NLS-1$

 	private static int willQos 					= 0;

 	private static boolean willRetain 			= false;

-	private static String username 				= "";

-	private static String password 				= "";

+	private static String username 				= ""; //$NON-NLS-1$

+	private static String password 				= ""; //$NON-NLS-1$

 	
 	// Current publish parameters with defaults

 	private String publishTopic = null;

@@ -156,24 +156,24 @@
 	    // Create each tab and set its text, tool tip text, image, and control
 		// Connection tab

 	    TabItem one = new TabItem(tabFolder, SWT.NONE);

-	    one.setText("Connection");

-	    one.setToolTipText("Connect to a Broker");

+	    one.setText(Messages.MqttClientView_6);

+	    one.setToolTipText(Messages.MqttClientView_7);

 	    one.setControl(getConnectionControl(tabFolder));

 
 	    // Publish tab

 	    TabItem two = new TabItem(tabFolder, SWT.NONE);

-	    two.setText("Publish");

-	    two.setToolTipText("Publish messages");

+	    two.setText(Messages.MqttClientView_8);

+	    two.setToolTipText(Messages.MqttClientView_9);

 	    two.setControl(getPublishControl(tabFolder));

 
 	    // Subscribe tab

 	    TabItem three = new TabItem(tabFolder, SWT.NONE);

-	    three.setText("Subscribe");

-	    three.setToolTipText("Subscribe and unsubscribe to topics");

+	    three.setText(Messages.MqttClientView_10);

+	    three.setToolTipText(Messages.MqttClientView_11);

 	    three.setControl(getSubscribeControl(tabFolder));

 		

 		messageLog = new Text(sashform, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);

-	    messageLog.setFont(new Font(display, new FontData("Courier New", 10, SWT.NORMAL)));

+	    messageLog.setFont(new Font(display, new FontData("Courier New", 10, SWT.NORMAL))); //$NON-NLS-1$

 

 		sashform.setWeights(new int[]{2,1});

 	}

@@ -306,9 +306,9 @@
 			// Update connection information

 			updateInfo();
 			// Build connection string

-			String connectString = "tcp://" + connectAddress + ":" + connectPort;

+			String connectString = "tcp://" + connectAddress + ":" + connectPort; //$NON-NLS-1$ //$NON-NLS-2$

 			if(clientId == null || clientId.length() < 1) {

-				out(getDate() + "Error connecting to " + connectString + ", please enter a valid client ID.");

+				out(getDate() + Messages.MqttClientView_15 + connectString + Messages.MqttClientView_16);

 				return;

 			}
 			// Instantiate client
@@ -319,7 +319,7 @@
 					firstConnect = false;
 				}
 			} catch (MqttException e) {
-				out(getDate() + "Failed to connect to broker: " + e.getMessage());
+				out(getDate() + Messages.MqttClientView_17 + e.getMessage());
 				e.printStackTrace();
 			}
 			
@@ -333,25 +333,25 @@
 				connOpts.setUserName(username);
 			}
 			if (useWill) {
-				if(willTopic == null || willTopic.equals("")) {
-					out("Error connecting:  Please enter a LWT topic.");
+				if(willTopic == null || willTopic.equals("")) { //$NON-NLS-1$
+					out(Messages.MqttClientView_19);
 					return;
 				}
 				connOpts.setWill(mqttClient.getTopic(willTopic), willMessage.getBytes(), willQos, willRetain);
 			}
 			// Attempt to connect
 			try {

-				out(getDate() + "Attempting to connect to broker:  " + connectString);
+				out(getDate() + Messages.MqttClientView_20 + connectString);
 				mqttClient.connect(connOpts);

 			

 				connected = true;

-				out(getDate() + "CONNECTED - Client ID: " + clientId);

+				out(getDate() + Messages.MqttClientView_21 + clientId);

 			} catch (MqttException e) {

-				out(getDate() + "Failed to connect to broker: " + e.getMessage());

+				out(getDate() + Messages.MqttClientView_22 + e.getMessage());

 				e.printStackTrace();

 			}

 		} else {

-			out("Error connecting:  Client is currently connected.");

+			out(Messages.MqttClientView_23);

 		}

 	}

 	
@@ -362,12 +362,12 @@
 		try {

 			if(connected) {

 				mqttClient.disconnect();

-				out(getDate() + "DISCONNECTED");

+				out(getDate() + Messages.MqttClientView_24);

 			} else {

-				out(getDate() + "Error disconnecting:  Client was not connected.");

+				out(getDate() + Messages.MqttClientView_25);

 			}

 		} catch (MqttException e) {

-			out(getDate() + "Error disconnecting:  " + e.getMessage());

+			out(getDate() + Messages.MqttClientView_26 + e.getMessage());

 		}

 		connected = false;

 	}

@@ -378,18 +378,18 @@
 	private void publish() {

 		

 		if(mqttClient != null) {
-			if(publishTopic == null || publishTopic.equals("")) {
-				out("Error publishing:  Please enter a topic to publish on.");
+			if(publishTopic == null || publishTopic.equals("")) { //$NON-NLS-1$
+				out(Messages.MqttClientView_28);
 				return;
 			}

 			try {
 				MqttTopic topic = mqttClient.getTopic(publishTopic);
 				topic.publish(payload, publishQos, retain);

-				out(getDate() + "PUBLISH");

-				out(" Topic:   \"" + publishTopic + "\"\n" + 

-				    " QOS:     " + publishQos +  "\n" +

-				    " Retain:  " + retain + "\n" +

-				    " Payload: \"" + new String(payload) + "\"");

+				out(getDate() + Messages.MqttClientView_29);

+				out(Messages.MqttClientView_30 + publishTopic + "\"\n" +  //$NON-NLS-2$

+				    Messages.MqttClientView_32 + publishQos +  "\n" + //$NON-NLS-2$

+				    Messages.MqttClientView_34 + retain + "\n" + //$NON-NLS-2$

+				    Messages.MqttClientView_36 + new String(payload) + "\""); //$NON-NLS-2$

 			} catch (MqttPersistenceException e) {

 				e.printStackTrace();

 			} catch (NullPointerException e) {

@@ -409,9 +409,9 @@
 				String [] topicArray = {subscribeTopic};

 				int [] qosArray = {subscribeQos};

 				mqttClient.subscribe(topicArray, qosArray);

-				out(getDate() + "SUBSCRIBE");

-				out(" Topic:   \"" + subscribeTopic + "\"\n" + 

-				    " QOS:     " + subscribeQos);

+				out(getDate() + Messages.MqttClientView_38);

+				out(Messages.MqttClientView_39 + subscribeTopic + "\"\n" +  //$NON-NLS-2$

+				    Messages.MqttClientView_41 + subscribeQos);

 			} catch (MqttPersistenceException e) {

 				e.printStackTrace();

 			} catch (NullPointerException e) {

@@ -430,8 +430,8 @@
 			try {

 				String [] topicArray = {subscribeTopic};

 				mqttClient.unsubscribe(topicArray);

-				out(getDate() + "UNSUBSCRIBE");

-				out(" Topic:   \"" + subscribeTopic + "\"");

+				out(getDate() + Messages.MqttClientView_42);

+				out(Messages.MqttClientView_43 + subscribeTopic + "\""); //$NON-NLS-2$

 			} catch (MqttPersistenceException e) {

 				e.printStackTrace();

 			} catch (NullPointerException e) {

@@ -447,17 +447,17 @@
 	 */

 	public void connectionLost(Throwable cause) {

 		connected = false;

-		syncOut(getDate() + "CONNECTION LOST!");

-		String connectString = connectAddress + ":" + connectPort;

-		syncOut(getDate() + "Attempting to reconnect to broker:  " + connectString);

+		syncOut(getDate() + Messages.MqttClientView_45);

+		String connectString = connectAddress + ":" + connectPort; //$NON-NLS-1$

+		syncOut(getDate() + Messages.MqttClientView_47 + connectString);

 		try {

 			mqttClient.connect(connOpts);

 		} catch (Exception e) {

-			syncOut(getDate() + "Failed to reconnect.");

-			syncOut(getDate() + "DISCONNECTED");

+			syncOut(getDate() + Messages.MqttClientView_48);

+			syncOut(getDate() + Messages.MqttClientView_49);

 		}

 		connected = true;

-		syncOut(getDate() + "CONNECTED - Client ID: " + clientId);

+		syncOut(getDate() + Messages.MqttClientView_50 + clientId);

 	}
 
 	/**
@@ -465,16 +465,16 @@
 	 */
 	public void messageArrived(MqttTopic topic, MqttMessage message)
 			throws Exception {
-		syncOut(getDate() + "PUBLISH ARRIVED");
-		syncOut(" Topic:   \"" + topic + "\"");
-		syncOut(" Payload: \"" + new String(message.getPayload()) + "\"");
+		syncOut(getDate() + Messages.MqttClientView_51);
+		syncOut(Messages.MqttClientView_52 + topic + "\""); //$NON-NLS-2$
+		syncOut(Messages.MqttClientView_54 + new String(message.getPayload()) + "\""); //$NON-NLS-2$
 	}
 
 	/**
 	 * Logs that a publish has completed (an acknowledgement has been received from the broker
 	 */
 	public void deliveryComplete(MqttDeliveryToken token) {
-		syncOut(getDate() + "PUBLISH COMPLETE");
+		syncOut(getDate() + Messages.MqttClientView_56);
 	}

 	
 	/**
@@ -493,7 +493,7 @@
 	 * Returns a hex string representation of the byte array
 	 */

 	public static String getHexString(byte[] b) {

-		  String result = "";

+		  String result = ""; //$NON-NLS-1$

 		  for (int i=0; i < b.length; i++) {

 		    result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );

 		  }

@@ -504,7 +504,7 @@
 	 * Writes a message to the log
 	 */

 	private void out(String message) {

-		messageLog.append(message + "\n");

+		messageLog.append(message + "\n"); //$NON-NLS-1$

 	}

 	
 	/**
@@ -512,10 +512,10 @@
 	 */

 	private String getDate() {

 		System.currentTimeMillis();

-		SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd hh:mm:ss.SS");

+		SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd hh:mm:ss.SS"); //$NON-NLS-1$

 		Date currentTime_1 = new Date();

 		String dateString = formatter.format(currentTime_1);

-		return "[" + dateString + "] ";

+		return "[" + dateString + "] "; //$NON-NLS-1$ //$NON-NLS-2$

 	}

 
 	/**
@@ -529,115 +529,115 @@
 		connectionGroup = new Group(composite, SWT.NONE);

 	    connectionGroup.setLayout(new GridLayout(2, false));

 	    connectionGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));

-	    connectionGroup.setText("Connection");

+	    connectionGroup.setText(Messages.MqttClientView_62);

 		
 	    // Broker address

 		Label brokerAddressLabel = new Label(connectionGroup, SWT.NULL);

-		brokerAddressLabel.setText("Broker Address: ");

+		brokerAddressLabel.setText(Messages.MqttClientView_63);

 		brokerAddressValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		brokerAddressValue.setLayoutData(new GridData(120,13));

 		brokerAddressValue.setText(connectAddress);
-		brokerAddressValue.setToolTipText("IP address or URL of the broker");

+		brokerAddressValue.setToolTipText(Messages.MqttClientView_64);

 		
 		// Broker port

 		Label brokerPortLabel = new Label(connectionGroup, SWT.NULL);

-		brokerPortLabel.setText(   "Broker Port:    ");

+		brokerPortLabel.setText(   Messages.MqttClientView_65);

 		brokerPortValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		brokerPortValue.setLayoutData(new GridData(30,13));

 		brokerPortValue.setText(Integer.toString(connectPort));
-		brokerPortValue.setToolTipText("Port that the broker is listening on");

+		brokerPortValue.setToolTipText(Messages.MqttClientView_66);

 		
 		// Client ID

 		Label clientIdLabel = new Label(connectionGroup, SWT.NULL);

-		clientIdLabel.setText(     "Client ID:      ");

+		clientIdLabel.setText(     Messages.MqttClientView_67);

 		clientIdValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		clientIdValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));

 		clientIdValue.setText(clientId);
-		clientIdValue.setToolTipText("Client ID to connect with (must be unique)");

+		clientIdValue.setToolTipText(Messages.MqttClientView_68);

 
 		// Username

 		Label usernameLabel = new Label(connectionGroup, SWT.NULL);

-		usernameLabel.setText(     "Username:       ");

+		usernameLabel.setText(     Messages.MqttClientView_69);

 		usernameValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		usernameValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));

 		usernameValue.setText(username);
-		usernameValue.setToolTipText("Username to connect with (optional)");

+		usernameValue.setToolTipText(Messages.MqttClientView_70);

 		
 		// Password

 		Label passwordLabel = new Label(connectionGroup, SWT.NULL);

-		passwordLabel.setText(     "Password:       ");

+		passwordLabel.setText(     Messages.MqttClientView_71);

 		passwordValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		passwordValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));

 		passwordValue.setText(password);
-		usernameValue.setToolTipText("Password to connect with (optional)");

+		passwordValue.setToolTipText(Messages.MqttClientView_72);

 		
 		// Keep alive value in seconds

 		Label keepAliveLabel = new Label(connectionGroup, SWT.NULL);

-		keepAliveLabel.setText(    "Keep Alive:     ");

+		keepAliveLabel.setText(    Messages.MqttClientView_73);

 		keepAliveValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		keepAliveValue.setLayoutData(new GridData(30,13));

 		keepAliveValue.setText(Short.toString(keepAlive));
-		keepAliveValue.setToolTipText("Number of seconds between keep alive pings with the broker");

+		keepAliveValue.setToolTipText(Messages.MqttClientView_74);

 
 		// Clean start

 		Label cleanStartLabel = new Label(connectionGroup, SWT.NULL);

-		cleanStartLabel.setText("Clean Start:  ");

+		cleanStartLabel.setText(Messages.MqttClientView_75);

 		cleanStartCheckBox = new Button(connectionGroup, SWT.CHECK);

 		cleanStartCheckBox.setSelection(cleanStart);
-		cleanStartCheckBox.setToolTipText("Select to enable a clean start");

+		cleanStartCheckBox.setToolTipText(Messages.MqttClientView_76);

 		
 		// LWT checkbox

 		Label useWillLabel = new Label(connectionGroup, SWT.NULL);

-		useWillLabel.setText("LWT Enable:  ");

+		useWillLabel.setText(Messages.MqttClientView_77);

 		willCheckBox = new Button(connectionGroup, SWT.CHECK);

 		willCheckBox.setSelection(false);
-		willCheckBox.setToolTipText("Select to enable the Last Will and Testament (LWT)");

+		willCheckBox.setToolTipText(Messages.MqttClientView_78);

 		
 		// LWT topic

 		Label willTopicLabel = new Label(connectionGroup, SWT.NULL);

-		willTopicLabel.setText("LWT Topic: ");

+		willTopicLabel.setText(Messages.MqttClientView_79);

 		willTopicValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		willTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

 		willTopicValue.setText(willTopic);

 		willTopicValue.setEnabled(useWill);
-		willTopicValue.setToolTipText("Topic that the LWT message is publish on");

+		willTopicValue.setToolTipText(Messages.MqttClientView_80);

 		
 		// LWT message

 		Label willMessageLabel = new Label(connectionGroup, SWT.NULL);

-		willMessageLabel.setText("LWT Message: ");

+		willMessageLabel.setText(Messages.MqttClientView_81);

 		willMessageValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);

 		willMessageValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

 		willMessageValue.setText(willMessage);

 		willMessageValue.setEnabled(useWill);
-		willMessageValue.setToolTipText("LWT message to publish");

+		willMessageValue.setToolTipText(Messages.MqttClientView_82);

 		
 		// LWT quality of service

 		Label willQosLabel = new Label(connectionGroup, SWT.NULL);

-		willQosLabel.setText("LWT QoS: ");

+		willQosLabel.setText(Messages.MqttClientView_83);

 		willQosDrop = new Combo(connectionGroup, SWT.DROP_DOWN | SWT.BORDER);

-		willQosDrop.add("0");

-		willQosDrop.add("1");

-		willQosDrop.add("2");

+		willQosDrop.add("0"); //$NON-NLS-1$

+		willQosDrop.add("1"); //$NON-NLS-1$

+		willQosDrop.add("2"); //$NON-NLS-1$

 		willQosDrop.select(0);

 		
 		// LWT retained flag

 		Label willRetainedLabel = new Label(connectionGroup, SWT.NULL);

-		willRetainedLabel.setText("LWT Retain:  ");

+		willRetainedLabel.setText(Messages.MqttClientView_87);

 		willRetainCheckBox = new Button(connectionGroup, SWT.CHECK);

 		willRetainCheckBox.setSelection(false);
-		willRetainCheckBox.setToolTipText("Select to retain the last LWT message");

+		willRetainCheckBox.setToolTipText(Messages.MqttClientView_88);

 		
 		// Connect button

 		connectButton = new Button(connectionGroup, SWT.PUSH);

 		connectButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		connectButton.setText("Connect");
-		connectButton.setToolTipText("Press to connect to the broker");

+		connectButton.setText(Messages.MqttClientView_89);
+		connectButton.setToolTipText(Messages.MqttClientView_90);

 		
 		// Disconnect button

 		disconnectButton = new Button(connectionGroup, SWT.PUSH);

 		disconnectButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		disconnectButton.setText("Disconnect");
-		disconnectButton.setToolTipText("Press to disconnect from the broker");

+		disconnectButton.setText(Messages.MqttClientView_91);
+		disconnectButton.setToolTipText(Messages.MqttClientView_92);

 		
 		// A modify listeners for modifications to textual parameters

 		ModifyListener listener = new ModifyListener() {

@@ -672,6 +672,7 @@
 

 	/**
 	 * Creates the publish composite and populates it with all the widgets needed to make an MQTT publish.
+	 * TODO: add tooltips for input fields and controls
 	 */

 	private Control getPublishControl(TabFolder tabFolder) {
 		@SuppressWarnings("unused")
@@ -684,31 +685,31 @@
 		publishGroup = new Group(composite, SWT.NONE);

 		publishGroup.setLayout(new GridLayout(3, false));

 		publishGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));

-		publishGroup.setText("Publish");

+		publishGroup.setText(Messages.MqttClientView_93);

 		
 		// Publish topic

 		Label publishTopicLabel = new Label(publishGroup, SWT.NULL);

-		publishTopicLabel.setText("Topic: ");

+		publishTopicLabel.setText(Messages.MqttClientView_94);

 		publishTopicValue = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);

 		publishTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

-		publishTopicValue.setSize(110, 1);

+		publishTopicValue.setSize(110, 1);
 		

 		tmpNullLabel = new Label(publishGroup, SWT.NULL);

 		
 		// Publish quality of service

 		Label publishQosLabel = new Label(publishGroup, SWT.NULL);

-		publishQosLabel.setText("QoS: ");

+		publishQosLabel.setText(Messages.MqttClientView_95);

 		publishQosDrop = new Combo(publishGroup, SWT.DROP_DOWN | SWT.BORDER);

-		publishQosDrop.add("0");

-		publishQosDrop.add("1");

-		publishQosDrop.add("2");

+		publishQosDrop.add("0"); //$NON-NLS-1$

+		publishQosDrop.add("1"); //$NON-NLS-1$

+		publishQosDrop.add("2"); //$NON-NLS-1$

 		publishQosDrop.select(0);

 		

 		tmpNullLabel = new Label(publishGroup, SWT.NULL);

 		
 		// Publish payload (text)

 		Label publishPayloadLabel = new Label(publishGroup, SWT.NULL);

-		publishPayloadLabel.setText("Payload: ");

+		publishPayloadLabel.setText(Messages.MqttClientView_99);

 		publishPayloadValue = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);

 		publishPayloadValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

 		publishPayloadValue.setSize(110, 1);

@@ -718,27 +719,27 @@
 		

 		Button publishPayloadButton = new Button(publishGroup, SWT.PUSH);

 		publishPayloadButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		publishPayloadButton.setText("Publish Payload");

+		publishPayloadButton.setText(Messages.MqttClientView_100);

 		

 		tmpNullLabel = new Label(publishGroup, SWT.NULL);

 		
 		// Publish payload (file)

 		Label publishFileLabel = new Label(publishGroup, SWT.NULL);

-		publishFileLabel.setText("File: ");

+		publishFileLabel.setText(Messages.MqttClientView_101);

 		publishFileName = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);

 		publishFileName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

 		publishFileName.setSize(100, 1);

 
 		// Browse button for selecting a filename

 		Button browseButton = new Button(publishGroup, SWT.PUSH);

-		browseButton.setText("Browse");

+		browseButton.setText(Messages.MqttClientView_102);

 		

 		tmpNullLabel = new Label(publishGroup, SWT.NULL);

 
 		// Publish file button

 		Button publishFileButton = new Button(publishGroup, SWT.PUSH);

 		publishFileButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		publishFileButton.setText("Publish File");

+		publishFileButton.setText(Messages.MqttClientView_103);

 
 		// Set selection listeners

 		publishPayloadButton.addSelectionListener(publishListener);

@@ -770,6 +771,7 @@
 
 	/**
 	 * Creates the subscribe composite and populates it with all the widgets needed to make an MQTT subscription.
+	 * TODO: add tooltips for input fields and controls
 	 */

 	private Control getSubscribeControl(TabFolder tabFolder) {

 		Composite composite = new Composite(tabFolder, SWT.NONE);

@@ -779,33 +781,33 @@
 		subscribeGroup = new Group(composite, SWT.NONE);

 		subscribeGroup.setLayout(new GridLayout(2, false));

 		subscribeGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

-		subscribeGroup.setText("Subscribe");

+		subscribeGroup.setText(Messages.MqttClientView_104);

 		
 		// Subscribe topic

 		Label subscribeTopicLabel = new Label(subscribeGroup, SWT.NULL);

-		subscribeTopicLabel.setText("Topic: ");

+		subscribeTopicLabel.setText(Messages.MqttClientView_105);

 		subscribeTopicValue = new Text(subscribeGroup, SWT.SINGLE | SWT.BORDER);

 		subscribeTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));

 		subscribeTopicValue.setSize(80, 1);

 		
 		// Subscribe quality of service

 		Label subscribeQosLabel = new Label(subscribeGroup, SWT.NULL);

-		subscribeQosLabel.setText("QoS: ");

+		subscribeQosLabel.setText(Messages.MqttClientView_106);

 		subscribeQosDrop = new Combo(subscribeGroup, SWT.DROP_DOWN | SWT.BORDER);

-		subscribeQosDrop.add("0");

-		subscribeQosDrop.add("1");

-		subscribeQosDrop.add("2");

+		subscribeQosDrop.add("0"); //$NON-NLS-1$

+		subscribeQosDrop.add("1"); //$NON-NLS-1$

+		subscribeQosDrop.add("2"); //$NON-NLS-1$

 		subscribeQosDrop.select(0);

 		
 		// Subscribe button

 		Button subscribeButton = new Button(subscribeGroup, SWT.PUSH);

 		subscribeButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		subscribeButton.setText("Subscribe");

+		subscribeButton.setText(Messages.MqttClientView_110);

 		
 		// Unsubscribe button
 		Button unsubscribeButton = new Button(subscribeGroup, SWT.PUSH);

 		unsubscribeButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));

-		unsubscribeButton.setText("Unsubscribe");
+		unsubscribeButton.setText(Messages.MqttClientView_111);
 		
 		// Set selection listeners

 		subscribeButton.addSelectionListener(subscribeListener);

diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties
new file mode 100755
index 0000000..cd97912
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties
@@ -0,0 +1,78 @@
+MqttClientView_10=Subscribe
+MqttClientView_100=Publish Payload
+MqttClientView_101=File: 
+MqttClientView_102=Browse
+MqttClientView_103=Publish File
+MqttClientView_104=Subscribe
+MqttClientView_105=Topic: 
+MqttClientView_106=QoS: 
+MqttClientView_11=Subscribe and unsubscribe to topics
+MqttClientView_110=Subscribe
+MqttClientView_111=Unsubscribe
+MqttClientView_15=Error connecting to 
+MqttClientView_16=, please enter a valid client ID.
+MqttClientView_17=Failed to connect to broker: 
+MqttClientView_19=Error connecting:  Please enter a LWT topic.
+MqttClientView_20=Attempting to connect to broker:  
+MqttClientView_21=CONNECTED - Client ID: 
+MqttClientView_22=Failed to connect to broker: 
+MqttClientView_23=Error connecting:  Client is currently connected.
+MqttClientView_24=DISCONNECTED
+MqttClientView_25=Error disconnecting:  Client was not connected.
+MqttClientView_26=Error disconnecting:  
+MqttClientView_28=Error publishing:  Please enter a topic to publish on.
+MqttClientView_29=PUBLISH
+MqttClientView_30=\ Topic:   "
+MqttClientView_32=\ QOS:     
+MqttClientView_34=\ Retain:  
+MqttClientView_36=\ Payload: "
+MqttClientView_38=SUBSCRIBE
+MqttClientView_39=\ Topic:   "
+MqttClientView_41=\ QOS:     
+MqttClientView_42=UNSUBSCRIBE
+MqttClientView_43=\ Topic:   "
+MqttClientView_45=CONNECTION LOST\!
+MqttClientView_47=Attempting to reconnect to broker:  
+MqttClientView_48=Failed to reconnect.
+MqttClientView_49=DISCONNECTED
+MqttClientView_50=CONNECTED - Client ID: 
+MqttClientView_51=PUBLICATION ARRIVED
+MqttClientView_52=\ Topic:   "
+MqttClientView_54=\ Payload: "
+MqttClientView_56=PUBLISH COMPLETE
+MqttClientView_6=Connection
+MqttClientView_62=Connection
+MqttClientView_63=Broker address: 
+MqttClientView_64=IP address or URL of the broker
+MqttClientView_65=Broker port:    
+MqttClientView_66=Port that the broker is listening on
+MqttClientView_67=Client ID:      
+MqttClientView_68=Client ID to connect with (must be unique)
+MqttClientView_69=Username:       
+MqttClientView_7=Connect to a broker
+MqttClientView_70=Username to connect with (optional)
+MqttClientView_71=Password:       
+MqttClientView_72=Password to connect with (optional)
+MqttClientView_73=Keep Alive:     
+MqttClientView_74=Number of seconds between keep alive pings with the broker
+MqttClientView_75=Clean Start:  
+MqttClientView_76=Select to enable a clean start
+MqttClientView_77=LWT Enable:  
+MqttClientView_78=Select to enable the Last Will and Testament (LWT)
+MqttClientView_79=LWT Topic: 
+MqttClientView_8=Publish
+MqttClientView_80=Topic that the LWT message is published on
+MqttClientView_81=LWT Message: 
+MqttClientView_82=LWT message to publish
+MqttClientView_83=LWT QoS: 
+MqttClientView_87=LWT Retain:  
+MqttClientView_88=Select to retain the last LWT message
+MqttClientView_89=Connect
+MqttClientView_9=Publish messages
+MqttClientView_90=Press to connect to the broker
+MqttClientView_91=Disconnect
+MqttClientView_92=Press to disconnect from the broker
+MqttClientView_93=Publish
+MqttClientView_94=Topic: 
+MqttClientView_95=QoS: 
+MqttClientView_99=Payload: