Index: release-kits/shared/uninstaller/Uninstaller.java
===================================================================
--- release-kits/shared/uninstaller/Uninstaller.java	(revision 17679)
+++ release-kits/shared/uninstaller/Uninstaller.java	(revision 17685)
@@ -27,5 +27,5 @@
 	public static int SCREEN_HEIGHT = 450;
 
-	public static final ResourceBundle bundle = ResourceBundle.getBundle("Uninstaller");
+	public static final ResourceBundle bundle = ResourceBundle.getBundle("resources.LanguagePack");
 
 	public static final File gs2InstallProps = new File("etc/installation.properties");
@@ -39,10 +39,16 @@
 	JCheckBox keepCollectionsCheckbox;
 	//JCheckBox keepModifiedFilesCheckbox;
+
+	//panels
 	JPanel progressPanel;
 	JPanel introPanel;
+
+	//toolbars	
+	JPanel initialToolbar;
+	JPanel finishToolbar;
+
+
 	JTextArea log;
 	JButton uninstallButton;
-	JPanel initialToolbar;
-	JPanel finishToolbar;
 	
 
@@ -57,4 +63,11 @@
 		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 		frame.setLocation(screenSize.width/2 - frame.getWidth()/2, screenSize.height/2 - frame.getHeight()/2);
+
+		//The panel to introduce and ask for options
+		introPanel = new JPanel(new BorderLayout());
+		JPanel innerPanel = new JPanel();
+		innerPanel.setLayout( new BoxLayout(innerPanel,BoxLayout.Y_AXIS) );
+		innerPanel.setBorder( new EmptyBorder(10, 10, 5, 10) );
+		introPanel.add( BorderLayout.WEST, innerPanel );
 
 		//The panel to be displayed while the uninstall is happening
@@ -67,30 +80,19 @@
 		progressPanel.add( BorderLayout.CENTER, logPane );
 
-		//The panel to introduce and ask for options
-		introPanel = new JPanel(new BorderLayout());
-		frame.getContentPane().add( BorderLayout.NORTH, introPanel );
-
-		JPanel innerPanel = new JPanel();
-		innerPanel.setLayout( new BoxLayout(innerPanel,BoxLayout.Y_AXIS) );
-		innerPanel.setBorder( new EmptyBorder(10, 10, 5, 10) );
-		introPanel.add( BorderLayout.WEST, innerPanel );
-
 		//initial toolbar
 		initialToolbar = new JPanel();
-		JButton cancelButton = new JButton(bundle.getString("cancel"));
+		uninstallButton = new JButton(bundle.getString("uninstaller.uninstall"));
+		uninstallButton.addActionListener( new StartUninstallListener() );
+		JButton cancelButton = new JButton(bundle.getString("uninstaller.cancel"));
 		cancelButton.addActionListener( new CancelListener() );
-
-		uninstallButton = new JButton(bundle.getString("uninstall"));
-		uninstallButton.addActionListener( new StartUninstallListener() );
-
+		initialToolbar.add(uninstallButton);
 		initialToolbar.add(cancelButton);
-		initialToolbar.add(uninstallButton);
-		frame.getContentPane().add( BorderLayout.SOUTH, initialToolbar );
 
 		//finish toolbar
 		finishToolbar = new JPanel();
-		JButton finishButton = new JButton(bundle.getString("finish"));
+		JButton finishButton = new JButton(bundle.getString("uninstaller.finish"));
 		finishButton.addActionListener( new FinishListener() );
 		finishToolbar.add( finishButton );
+
 
 		String pwd = (new File(".")).getAbsolutePath();
@@ -101,5 +103,5 @@
 		JLabel l;		
 
-		l = new JLabel(bundle.getString("will.uninstall.from"));
+		l = new JLabel(bundle.getString("uninstaller.will.uninstall.from"));
 		innerPanel.add( l );
 		innerPanel.add( Box.createRigidArea(new Dimension(5,5)) );
@@ -110,8 +112,8 @@
 		innerPanel.add( Box.createRigidArea(new Dimension(5,20)) );
 
-		l = new JLabel(bundle.getString("uninstall.options"));
+		l = new JLabel(bundle.getString("uninstaller.uninstall.options"));
 		innerPanel.add( l );
 
-		keepCollectionsCheckbox = new JCheckBox(bundle.getString("keep.collections"));
+		keepCollectionsCheckbox = new JCheckBox(bundle.getString("uninstaller.keep.collections"));
 		keepCollectionsCheckbox.setSelected(true);
 		innerPanel.add( keepCollectionsCheckbox );
@@ -120,6 +122,11 @@
 		//innerPanel.add( keepModifiedFilesCheckbox );
 
-		frame.setTitle( bundle.getString("greenstone.uninstaller") );
+		frame.setTitle( bundle.getString("uninstaller.greenstone.uninstaller") );
 		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+		//the initial screen
+		frame.getContentPane().add( BorderLayout.NORTH, introPanel );
+		frame.getContentPane().add( BorderLayout.SOUTH, initialToolbar );
+
 		frame.setVisible(true);
 		
@@ -147,9 +154,9 @@
 
 			//The dialog to ask "are you sure"
-			Object[] options = { bundle.getString("cancel"), bundle.getString("uninstall") };
+			Object[] options = { bundle.getString("uninstaller.uninstall"), bundle.getString("uninstaller.cancel") };
 			int n = JOptionPane.showOptionDialog(
 				frame,
-				bundle.getString("are.you.sure"),
-				bundle.getString("confirmation"),
+				bundle.getString("uninstaller.are.you.sure"),
+				bundle.getString("uninstaller.confirmation"),
 			    JOptionPane.YES_NO_CANCEL_OPTION,
 			    JOptionPane.QUESTION_MESSAGE,
@@ -158,5 +165,5 @@
 			    options[0]
 			);
-			if ( n == 0 ) {
+			if ( n == 1 ) {
 				return;
 			}
@@ -167,10 +174,10 @@
 			//confirm delete of collections
 			if ( !keepCollections ) {
-				options[0] = bundle.getString("cancel");
-				options[1] = bundle.getString("continue");
+				options[0] = bundle.getString("uninstaller.continue");
+				options[1] = bundle.getString("uninstaller.cancel");
 				n = JOptionPane.showOptionDialog(
 					frame,
-					bundle.getString("are.you.sure.collections"),
-					bundle.getString("confirmation"),
+					bundle.getString("uninstaller.are.you.sure.collections"),
+					bundle.getString("uninstaller.confirmation"),
 				    JOptionPane.YES_NO_CANCEL_OPTION,
 				    JOptionPane.WARNING_MESSAGE,
@@ -179,17 +186,28 @@
 				    options[0]
 				);
-				if ( n == 0 ) {
+				if ( n == 1 ) {
 					return;
 				}
 			}
 
-			//swap to the progress panel
-			introPanel.setVisible(false);
+			
+			introPanel.setVisible( false );
 			frame.getContentPane().remove(introPanel);
-			frame.getContentPane().add( BorderLayout.CENTER, progressPanel);
-			frame.setVisible(true);
+			frame.getContentPane().add( BorderLayout.CENTER, progressPanel );
 
 			//disable the uninstall button
 			uninstallButton.setEnabled( false );
+				options = new Object[1];
+				options[0] = "OK";
+				n = JOptionPane.showOptionDialog(
+					frame,
+					"repainting",
+					"repainting",
+				    JOptionPane.OK_OPTION,
+				    JOptionPane.INFORMATION_MESSAGE,
+				    null,
+				    options,
+				    options[0]
+				);
 
 
@@ -205,6 +223,6 @@
 
 		if ( !gs2InstallProps.exists() && !gs3InstallProps.exists() ) {
-			log.append( bundle.getString("error.couldnt.find.install.props") + "\n" );
-			JOptionPane.showMessageDialog(frame, bundle.getString("error.couldnt.find.install.props"), bundle.getString("error"), 0);
+			log.append( bundle.getString("uninstaller.error.couldnt.find.install.props") + "\n" );
+			JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.error.couldnt.find.install.props"), bundle.getString("uninstaller.error"), 0);
 			return false;
 		}
@@ -241,5 +259,5 @@
 
 		if ( startMenuPath == null ) {
-			log.append( bundle.getString("info.no.startmenu") + "\n" );
+			log.append( bundle.getString("uninstaller.info.no.startmenu") + "\n" );
 		} else {
 			log.append( "StartMenu Path: " + startMenuPath.getAbsolutePath() + "\n" );
@@ -247,7 +265,7 @@
 				recursiveDelete( startMenuPath, null );
 			} catch ( CancelledException ce ) {
-				log.append( bundle.getString("cancelled") + "\n" );
+				log.append( bundle.getString("uninstaller.cancelled") + "\n" );
 				changeToFinishToolbar();
-				JOptionPane.showMessageDialog(frame, bundle.getString("cancelled"), bundle.getString("complete"), 1);
+				JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.cancelled"), bundle.getString("uninstaller.complete"), 1);
 				return;
 			}
@@ -276,5 +294,5 @@
 				cd = new File( new File(".").getCanonicalPath() );
 			} catch ( Exception e ) {
-				JOptionPane.showMessageDialog(frame, bundle.getString("failed.to.figure.cd"), bundle.getString("error") , 0);
+				JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.failed.to.figure.cd"), bundle.getString("uninstaller.error") , 0);
 				System.exit(0);
 			}
@@ -287,6 +305,6 @@
 			recursiveDelete( cd , ex );
 		} catch ( CancelledException ce ) {
-			log.append( bundle.getString("cancelled") + "\n" );
-			JOptionPane.showMessageDialog(frame, bundle.getString("cancelled"), bundle.getString("complete"), 1);
+			log.append( bundle.getString("uninstaller.cancelled") + "\n" );
+			JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.cancelled"), bundle.getString("uninstaller.complete"), 1);
 			changeToFinishToolbar();
 			return;
@@ -297,9 +315,9 @@
 			(new File("uninst.flag")).createNewFile();
 		} catch (Exception e) {
-			log.append( bundle.getString("couldnt-create-flagfile") + "\n" );
+			log.append( bundle.getString("uninstaller.couldnt-create-flagfile") + "\n" );
 		}
 
 		changeToFinishToolbar();
-		JOptionPane.showMessageDialog(frame, bundle.getString("finished"), bundle.getString("complete"), 1);
+		JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.finished"), bundle.getString("uninstaller.complete"), 1);
 	}
 
@@ -348,5 +366,5 @@
 		// Make sure the file or directory exists
 		if (!f.exists()) {
-			log.append( Strings.replaceAll( bundle.getString("warning.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
+			log.append( Strings.replaceAll( bundle.getString("uninstaller.warning.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
 			return;
 		}
@@ -358,5 +376,5 @@
 				try {
 					if ( f.equals( exceptions[i] ) || f.getCanonicalPath().equals(exceptions[i].getCanonicalPath()) ) {
-						log.append( Strings.replaceAll( bundle.getString("info.skipping"), "{file}", f.getAbsolutePath() ) + "\n" );
+						log.append( Strings.replaceAll( bundle.getString("uninstaller.info.skipping"), "{file}", f.getAbsolutePath() ) + "\n" );
 						return;
 					}
@@ -370,5 +388,5 @@
 		//check existance
 		if ( !f.exists() ) {
-			log.append( Strings.replaceAll( bundle.getString("error.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
+			log.append( Strings.replaceAll( bundle.getString("uninstaller.error.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
 			return;
 		}
@@ -397,7 +415,7 @@
 		if ( doDelete ) {
 
-			log.append( Strings.replaceAll( bundle.getString("deleting"), "{file}", f.getAbsolutePath() ) + "\n" );
+			log.append( Strings.replaceAll( bundle.getString("uninstaller.deleting"), "{file}", f.getAbsolutePath() ) + "\n" );
 			while ( !f.delete() ) {
-				log.append( Strings.replaceAll( bundle.getString("warning.couldnt.delete"), "{file}", f.getAbsolutePath() ) + "\n" );
+				log.append( Strings.replaceAll( bundle.getString("uninstaller.warning.couldnt.delete"), "{file}", f.getAbsolutePath() ) + "\n" );
 
 				if ( ignoreReadOnlys ) {
@@ -405,9 +423,9 @@
 				}
 
-				Object[] options = { bundle.getString("cancel"), bundle.getString("retry"), bundle.getString("skip"), bundle.getString("skip.all") };
+				Object[] options = { bundle.getString("uninstaller.retry"), bundle.getString("uninstaller.skip"), bundle.getString("uninstaller.skip.all"), bundle.getString("uninstaller.cancel") };
 				int n = JOptionPane.showOptionDialog(
 					frame,
-					Strings.replaceAll( bundle.getString("warning.readonly"), "{file}", f.getAbsolutePath() ),
-					bundle.getString("readonly"),
+					Strings.replaceAll( bundle.getString("uninstaller.warning.readonly"), "{file}", f.getAbsolutePath() ),
+					bundle.getString("uninstaller.readonly"),
 				    JOptionPane.YES_NO_CANCEL_OPTION,
 				    JOptionPane.QUESTION_MESSAGE,
@@ -417,9 +435,9 @@
 				);
 
-				if ( n == 0 ) {
+				if ( n == 3 ) {
 					throw new CancelledException();
+				} else if ( n == 1 ) {
+					return;
 				} else if ( n == 2 ) {
-					return;
-				} else if ( n == 3 ) {
 					ignoreReadOnlys = true;
 					return;
Index: release-kits/shared/uninstaller/compile.sh
===================================================================
--- release-kits/shared/uninstaller/compile.sh	(revision 17679)
+++ release-kits/shared/uninstaller/compile.sh	(revision 17685)
@@ -1,4 +1,18 @@
-javac Uninstaller.java
-jar -cmf manifest.mf gsdl-template/uninst.jar *.class *.properties
+rk_home=$1
+if [ "$rk_home" = "" ]; then
+	echo "usage: ./compile.sh <rk_home>"
+	exit
+fi
+
+#setup language string bundle
+rm -rf resources
+mkdir resources
+cp $rk_home/language-strings/*.properties resources
+
+#java compile
+javac Uninstaller.java -Xlint:unchecked
+jar -cmf manifest.mf gsdl-template/uninst.jar *.class resources
+
+#setup a fake greenstone installation
 cp Uninstall.bat gsdl-template
 cp Uninstall.sh gsdl-template
