Index: /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ConfPane.java
===================================================================
--- /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ConfPane.java	(revision 10792)
+++ /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ConfPane.java	(revision 10793)
@@ -43,4 +43,6 @@
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Enumeration;
 import java.lang.Object;
 import javax.swing.*;
@@ -55,4 +57,6 @@
 import org.greenstone.admin.GAIManager;
 import org.greenstone.admin.gui.ThreadControl;
+//import org.greenstone.admin.gui.ConfSettingTableModel;
+import org.greenstone.admin.gui.SiteConfSetting;
 import org.greenstone.core.Configuration;
 import org.greenstone.core.Dictionary;
@@ -67,5 +71,5 @@
     extends JPanel
     implements ActionListener {
-    
+
     /* The pane to demonstrate Configuration information, including the build property file
      * being monitored and their content, and control functions */
@@ -73,4 +77,5 @@
     
     protected JPanel main_contentPane = null;
+    public Hashtable conf_table;
     
     /** The panel that contains a Conf_list */
@@ -80,11 +85,8 @@
     private JPanel confContent_pane =  null;
     private JScrollPane conf_table_pane = null;
-
+    
     /** The List showing all the Configuration files concerned. */
     private JList conf_list=null;
     private JTree conf_tree = null;
-
-    /** The pane area into which the Configuration content is placed. */
-    //private JScrollPane conf_content = null;
 
     /** The label at the top of the confList_pane. */
@@ -94,6 +96,4 @@
 
     // The control buttons used to manipulate Configuration Pane
-    protected JPanel outter_button_pane = null;
-    protected JPanel outter_control_pane = null;
     protected JPanel inner_button_pane = null;
     protected JPanel inner_control_pane = null;
@@ -109,15 +109,12 @@
     private JButton shutdown_mysql_button = null;
     private JButton restart_mysql_button = null;
-      
+
     private JButton save_button = null;
-
-    /** Buttons in outter button pane*/
-    //private JButton reload_button = null;
-    //private JButton delete_button = null;
-    //private JButton exit_button = null;
 
     private JLabel conf_label = null;
     private JLabel conf_setting_label = null;
-    private JTextField conf_field = null;
+    
+    /* ConfPane empty AREA to show XML configuration file*/
+    //private JTextArea conf_xml_area = null;
 
     //control tomcat and mysql server running status
@@ -127,9 +124,15 @@
     private String mysql_server;
     private String mysql_port;
+    private String conf_pane_name;
+  
     private boolean tomcat_server_up = false;
     private boolean mysql_server_up = false;
 
-    protected JTextArea text_area = null;
-      
+    /** The scrollable area into which the configuration content is placed. */
+    //private JScrollPane conf_xml_content = null;
+    
+    public SiteConfSetting site_conf = null;
+    public SiteConfSetting interface_conf = null;
+
     /** The various sizes for the screen layout*/
     static private Dimension MIN_SIZE = new Dimension( 90,  90);
@@ -137,11 +140,12 @@
     static private Dimension CONTENT_SIZE = new Dimension (600,450);
     static private Dimension TABLE_SIZE = new Dimension(500,200);
+    static private int MINIMUM_TABLE_HEADER_SIZE = 15;
     
     private JTable conf_setting_table = null;
 
     private int num_of_setting;
-    private int num_of_change = 0;
 
     //The details display in the table
+    int display_row_count = 5;
     int rowLength = 20;
     int colLength = 3;
@@ -152,12 +156,14 @@
     private ArrayList conf_array;
     
-    // all the relevant details from the build.properties
-    private static boolean valueChanged =false;
-    
-    ConfTableModel conf_table_model;
+    //Site configuration
+    public File site_conf_file = GAI.site_conf;
+    public File interface_conf_file = GAI.interface_conf;
+    public boolean  project_conf_changed = false;
+
+    ConfSettingTableModel conf_table_model = null;
     DefaultMutableTreeNode top = new DefaultMutableTreeNode("Configuration Files");
-
     //Constructor
     public ConfPane() {
+	conf_table = new Hashtable();
 	// create all the control button panes
 	inner_control_pane = new JPanel();
@@ -165,19 +171,25 @@
 	tomcat_button_pane = new JPanel();
 	mysql_button_pane = new JPanel();
-	outter_control_pane = new JPanel();
-	outter_button_pane = new JPanel();
+	
+	/*the class for showing the site configurations including
+	 * siteConfig.xml and interfaceConfig.xml
+	 */
+	site_conf = new SiteConfSetting("siteConfig", site_conf_file);
+	interface_conf =  new SiteConfSetting("interfaceConfig", interface_conf_file);
 	
 	// Main Configuration Pane
 	main_conf_pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
-       
-	// Main pane for Configuration Content Pane
+       	// Main pane for Configuration Content Pane
 	main_contentPane = new JPanel();
 	
 	//Create a tree for a list Configuration files we are interested
-	DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Build");
+	//DefaultMutableTreeNode child1 = new DefaultMutableTreeNode();
+	DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Project Configuration");
+	//Dictionary.get(child1,"Tree.ProjectConf");
+
 	DefaultMutableTreeNode compile = new DefaultMutableTreeNode("Compile");
 	DefaultMutableTreeNode tomcat = new DefaultMutableTreeNode("Tomcat");
 	DefaultMutableTreeNode proxy = new DefaultMutableTreeNode("Proxy");
-	DefaultMutableTreeNode mysql = new DefaultMutableTreeNode("Mysql");	
+	DefaultMutableTreeNode mysql = new DefaultMutableTreeNode("MySQL");	
 	DefaultMutableTreeNode gsdl = new DefaultMutableTreeNode("GSDL");
 	child1.add(compile);
@@ -187,11 +199,16 @@
 	child1.add(gsdl);
 
-	DefaultMutableTreeNode child2 =
-	    new DefaultMutableTreeNode("Conf 2");
-	DefaultMutableTreeNode child3 =
-	    new DefaultMutableTreeNode("Conf 3");
+	DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("Site Configuration");
+	//DefaultMutableTreeNode child2 = new DefaultMutableTreeNode();	
+	//Dictionary.registerText(child2,"Tree.SiteConf");
+	DefaultMutableTreeNode siteConf = new DefaultMutableTreeNode("SiteConfig");
+	DefaultMutableTreeNode interfaceConf = new DefaultMutableTreeNode("InterfaceConfig");
+	child2.add(siteConf);
+	child2.add(interfaceConf);
+
+	//DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("Conf 3");
 	top.add(child1);
 	top.add(child2);
-	top.add(child3);
+	//top.add(child3);
 	conf_tree = new JTree(top);
 	conf_tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
@@ -206,99 +223,55 @@
 	ShutdownMysqlButtonListener smdbl = new ShutdownMysqlButtonListener();
 	RestartMysqlButtonListener rmbl = new RestartMysqlButtonListener();
-	
-	//save button
-	SaveButtonListener sabl = new SaveButtonListener();
-	
-	//outter button_pane Buttons
-	//ReloadButtonListener rbl = new ReloadButtonListener();
-	//DeleteButtonListener dbl = new DeleteButtonListener();
-	//ExitButtonListener ebl = new ExitButtonListener();
-	//ImageIcon reloadButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/Refresh16.gif");
-	//ImageIcon deleteButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/Delete16.gif");
-	//ImageIcon exitButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/exit16.gif");
-
-	ImageIcon startupTomcatButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/redo16.gif");
-	ImageIcon shutdownTomcatButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/stop16.gif");
-	ImageIcon restartTomcatButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/stop16.gif");
-	
-	ImageIcon startupMysqlButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/redo16.gif");
-	ImageIcon shutdownMysqlButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/stop16.gif");
-	ImageIcon restartMysqlButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/stop16.gif");
-	ImageIcon saveButtonIcon = new ImageIcon(GAI.admin_path  + "images/toolbarButtonGraphics/general/Save16.gif");
-
-	startup_tomcat_button = new JButton("Startup Tomcat", startupTomcatButtonIcon);
+		
+	ImageIcon startupTomcatButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/redo16.gif");
+	ImageIcon shutdownTomcatButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/stop16.gif");
+	ImageIcon restartTomcatButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/stop16.gif");
+	
+	ImageIcon startupMysqlButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/redo16.gif");
+	ImageIcon shutdownMysqlButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/stop16.gif");
+	ImageIcon restartMysqlButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/stop16.gif");
+	ImageIcon saveButtonIcon = new ImageIcon(GAI.images_path  + "toolbarButtonGraphics/general/Save16.gif");
+
+	startup_tomcat_button = new JButton();	
 	startup_tomcat_button.addActionListener(stbl);
 	startup_tomcat_button.setMnemonic(KeyEvent.VK_S);
-	startup_tomcat_button.setToolTipText("Click this button to startup the Tomcat server");
 	startup_tomcat_button.setEnabled(false);
-
-	shutdown_tomcat_button = new JButton("Shutdown Tomcat", shutdownTomcatButtonIcon);
+	Dictionary.registerBoth(startup_tomcat_button,"ConfPane.Tomcat_Startup", "ConfPane.Tomcat_Startup_Tooltip");
+
+	shutdown_tomcat_button = new JButton();
 	shutdown_tomcat_button.addActionListener(stdbl);
 	shutdown_tomcat_button.setEnabled(false);
-	//shutdown_button.setMnemonic(KeyEvent.VK_h);
-	shutdown_tomcat_button.setToolTipText("Click this button to shutdown the Tomcat server");
-	
-	restart_tomcat_button = new JButton("Restart Tomcat",restartTomcatButtonIcon);
+	Dictionary.registerBoth(shutdown_tomcat_button,"ConfPane.Tomcat_Shutdown", "ConfPane.Tomcat_Shutdown_Tooltip");
+		
+	restart_tomcat_button = new JButton();
 	restart_tomcat_button.addActionListener(rtbl);
 	restart_tomcat_button.setEnabled(false);
-	//shutdown_button.setMnemonic(KeyEvent.VK_h);
-	restart_tomcat_button.setToolTipText("Click this button to restart the Tomcat server(which will shutdown Tomcat server and restart it again");
-	
-	startup_mysql_button = new JButton("Startup MYSQL", startupMysqlButtonIcon);
+	Dictionary.registerBoth(restart_tomcat_button,"ConfPane.Tomcat_Restart", "ConfPane.Tomcat_Restart_Tooltip");
+
+	startup_mysql_button = new JButton();
 	startup_mysql_button.addActionListener(smbl);
 	startup_mysql_button.setMnemonic(KeyEvent.VK_S);
-	startup_mysql_button.setToolTipText("Click this button to startup the MYSQL server");
 	startup_mysql_button.setEnabled(false);
-
-	shutdown_mysql_button = new JButton("Shutdown MYSQL", shutdownMysqlButtonIcon);
+	Dictionary.registerBoth(startup_mysql_button,"ConfPane.MySQL_Startup", "ConfPane.MySQL_Startup_Tooltip");
+
+	shutdown_mysql_button = new JButton();
 	shutdown_mysql_button.addActionListener(smdbl);
 	shutdown_mysql_button.setEnabled(false);
-	//shutdown_button.setMnemonic(KeyEvent.VK_h);
-	shutdown_mysql_button.setToolTipText("Click this button to shutdown the MYSQL server");
-	
-	restart_mysql_button = new JButton("Restart MYSQL",restartMysqlButtonIcon);
+	Dictionary.registerBoth(shutdown_mysql_button,"ConfPane.MySQL_Shutdown", "ConfPane.MySQL_Shutdown_Tooltip");
+	
+	restart_mysql_button = new JButton();
 	restart_mysql_button.addActionListener(rmbl);
 	restart_mysql_button.setEnabled(false);
-	//shutdown_button.setMnemonic(KeyEvent.VK_h);
-	restart_tomcat_button.setToolTipText("Click this button to restart the MYSQL server(which will shutdown MYSQL server and restart it again");
-
-	save_button = new JButton("Save Change", saveButtonIcon);
-	save_button.addActionListener(sabl);
-	//save_button.setMnemonic(KeyEvent.VK_a);
-	save_button.setEnabled(false);
-	save_button.setToolTipText("Click this button to save the change of build property file");
-	
-	/*reload_button = new JButton("Reload", reloadButtonIcon);
-	reload_button.addActionListener(rbl);
-	reload_button.setMnemonic(KeyEvent.VK_R);
-	reload_button.setToolTipText("Click this button to reload the build properties file");*/
-	//Dictionary.registerBoth(build_button, "CreatePane.Build_Collection", "CreatePane.Build_Collection_Tooltip");
-
-	/*delete_button = new JButton("Delete", deleteButtonIcon);
-	 delete_button.addActionListener(dbl);
-	delete_button.setEnabled(false);
-	delete_button.setMnemonic(KeyEvent.VK_D);
-	delete_button.setToolTipText("Click this button to delete the Configuration file");*/
-	//Dictionary.registerBoth(cancel_button, "CreatePane.Cancel_Build", "CreatePane.Cancel_Build_Tooltip");*/
-
-	/*exit_button = new JButton("Exit", exitButtonIcon);
-	exit_button.setToolTipText("Click this button to exit the viewing");	
-	exit_button.addActionListener(ebl);
-	exit_button.setEnabled(true);
-	exit_button.setMnemonic(KeyEvent.VK_E);*/
-
-	//tomcat buttons
+	Dictionary.registerBoth(restart_mysql_button,"ConfPane.MySQL_Restart", "ConfPane.MySQL_Restart_Tooltip");
+
+	//tomcat control buttons
 	stbl = null;
 	stdbl = null;
 	rtbl = null;
-
-	//restart mysql button
+	
+	//mysql control button
 	smbl = null;
 	smdbl = null;
 	rmbl = null;
-
-	//rbl = null;
-	//dbl = null;
-	//ebl = null;
 	
 	//read in build properties
@@ -308,9 +281,9 @@
     /** Any implementation of ActionListener requires this method so that when an 
      **action is performed the appropriate effect can occur.*/
-
     public void actionPerformed(ActionEvent event) {
     }
-
-    /** This method is callsed to actually layout the components.*/
+    
+    
+    /** This method is called to actually layout the components.*/
     public void display() {
 	//Create Components.
@@ -318,30 +291,32 @@
 	//MouseListenerImpl mouse_listener = new MouseListenerImpl();
 	//this.addKeyListener(key_listener);
-
-	// confList_Pane
+	
+	//confList_Pane
 	confList_pane = new JPanel();
 	confList_pane.setBorder(BorderFactory.createLoweredBevelBorder());
 	confList_pane.setPreferredSize(LIST_SIZE);
 	confList_pane.setSize(LIST_SIZE);
-	confList_label = new JLabel("Configuration Files");
+	confList_pane.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
+	confList_pane.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
+	
+	confList_label = new JLabel();
 	confList_label.setOpaque(true);
-	confList_label.setBackground(Configuration.getColor("coloring.workspace_heading_background", false));
-	confList_label.setForeground(Configuration.getColor("coloring.workspace_heading_foreground", false));
-	//Dictionary.registerText(logList_label, "Log.List");
+	confList_label.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
+	confList_label.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
+	Dictionary.registerText(confList_label, "ConfPane.Conf_List");
 
 	// confContent_Pane
 	confContent_pane = new JPanel();
-	//confContent_pane.setBorder(BorderFactory.createLoweredBevelBorder());
 	confContent_pane.setBorder(BorderFactory.createEmptyBorder(10,20,10,20));
 	confContent_pane.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
 	confContent_pane.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
 
-	confContent_label = new JLabel("Configuration Content");
+	confContent_label = new JLabel();
 	confContent_label.setOpaque(true);
-	confContent_label.setBackground(Configuration.getColor("coloring.workspace_heading_background", false));
-	confContent_label.setForeground(Configuration.getColor("coloring.workspace_heading_foreground", false));
-	//Dictionary.registerText(logContent_label, "Log.Content");
-	
-	conf_table_model = new ConfTableModel();
+	confContent_label.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
+	confContent_label.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
+	Dictionary.registerText(confContent_label, "ConfPane.Conf_Content");
+	
+	conf_table_model = new ConfSettingTableModel();
 	conf_setting_table = new JTable(conf_table_model){
 		public String getToolTipText(MouseEvent e){
@@ -352,5 +327,5 @@
 		    int realColumnIndex = convertColumnIndexToModel(colIndex);
 		    if (realColumnIndex == 0){
-			tip = conf_display[rowIndex][0].toString();
+			tip = conf_display[rowIndex][realColumnIndex].toString();
 		    } else {
 			tip = super.getToolTipText(e);
@@ -358,13 +333,70 @@
 		    return tip;
 		}
+		public Component prepareRenderer (TableCellRenderer renderer, 
+						  int rowIndex, int colIndex){
+		    Component c = super.prepareRenderer(renderer, rowIndex, colIndex);
+		    if (colIndex == 0) {
+			c.setBackground(Configuration.getColor("coloring.table_noneditable_background",false));
+		    } else {
+			c.setBackground(Configuration.getColor("coloring.table_editable_background",false));
+		    }
+		    return c;
+		}
 	    };
-			
+	
+	//When the MySQL and TOMCAT servers are still running and detect double-clicking occuring (editing mode)
+	conf_setting_table.addMouseListener(new MouseAdapter(){
+		public void mouseClicked(MouseEvent e){
+		    if (e.getClickCount() == 2){ 
+			if (conf_pane_name.matches("MYSQL")){
+			    mysql_server_up = false;
+			    mysql_server_up = checkMysqlServer();
+			    if (mysql_server_up) {
+				JOptionPane.showMessageDialog((Component) null,"MySQL is running, shutdown the MySQL server before making any changes");
+			    }
+			}
+			if (conf_pane_name.matches("TOMCAT")){
+			    tomcat_server_up = false;
+			    tomcat_server_up = checkTomcatServer();
+			    if (tomcat_server_up) {
+				JOptionPane.showMessageDialog((Component) null,"TOMCAT is running, shutdown the TOMCAT server before making any changes");
+			    }
+			}	
+		    }
+		}
+	    });
+	conf_setting_table.addKeyListener(new KeyAdapter(){
+		public void keyPressed(KeyEvent ke){
+		    if (ke.getKeyCode() == KeyEvent.VK_F2){ 
+			if (conf_pane_name.matches("MYSQL")){
+			    mysql_server_up = checkMysqlServer();
+			    if (mysql_server_up) {
+				JOptionPane.showMessageDialog((Component) null,"MySQL is running, shutdown the MySQL server before making any changes");
+			    }
+			}
+			if (conf_pane_name.matches("TOMCAT")){
+			    tomcat_server_up = checkTomcatServer();
+			    if (tomcat_server_up) {
+				JOptionPane.showMessageDialog((Component) null,"TOMCAT is running, shutdown the TOMCAT server before making any changes");
+			    }
+			}
+		    }
+		}
+	    });
+	
 	//Set up tableHeader
-	JTableHeader header = conf_setting_table.getTableHeader();
-	header.setFont(new Font("Arial", Font.BOLD, 14));
-	
+	JTableHeader table_header = conf_setting_table.getTableHeader();
+	Dimension table_header_preferred_size = table_header.getPreferredSize();
+	if (table_header_preferred_size.height < MINIMUM_TABLE_HEADER_SIZE) {
+	    table_header_preferred_size.setSize(table_header_preferred_size.width, MINIMUM_TABLE_HEADER_SIZE);
+	    table_header.setPreferredSize(table_header_preferred_size);
+	}
+
+	table_header.setFont(new Font("Arial", Font.BOLD, 13));
 	conf_setting_table.setRowHeight(30);
 	conf_table_pane = new JScrollPane(conf_setting_table);
-
+	conf_table_pane.setVisible(false);
+	conf_table_pane.getViewport().setBackground(Configuration.getColor("coloring.collection_tree_background", false));
+	
 	// Layout Components
 	confList_pane.setLayout(new BorderLayout());
@@ -372,8 +404,8 @@
 	confList_pane.add(conf_treeView, BorderLayout.CENTER);
 	confList_pane.add(confList_label, BorderLayout.NORTH);
-	
 	confContent_pane.setLayout(new BorderLayout());
 	confContent_pane.add(conf_table_pane, BorderLayout.CENTER);
 	
+	inner_button_pane.setLayout(new GridLayout(1,2));
 	inner_control_pane.setLayout (new BorderLayout());
 	inner_control_pane.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
@@ -382,16 +414,4 @@
 	inner_control_pane.add (inner_button_pane, BorderLayout.CENTER);
 	
-	// Outter Button Layout 
-	//outter_button_pane.setLayout (new GridLayout(1,2));
-	//outter_button_pane.add(reload_button);
-	//outter_button_pane.add(delete_button);
-	//outter_button_pane.add(exit_button);
-	
-	/*outter_control_pane.setLayout (new BorderLayout());
-	outter_control_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-	outter_control_pane.setPreferredSize(new Dimension(50,50));
-	outter_control_pane.setSize(new Dimension(50,50));
-	outter_control_pane.add (outter_button_pane, BorderLayout.CENTER);*/
-
 	main_contentPane.setLayout (new BorderLayout());
 	main_contentPane.add(confContent_label, BorderLayout.NORTH);
@@ -400,5 +420,5 @@
 	main_conf_pane.add(confList_pane, JSplitPane.LEFT);
 	main_conf_pane.add(main_contentPane, JSplitPane.RIGHT);
-	main_conf_pane.setDividerLocation(LIST_SIZE.width - 10);	
+	main_conf_pane.setDividerLocation(LIST_SIZE.width - 10);
 	
 	this.setLayout(new BorderLayout());
@@ -406,38 +426,28 @@
     }
     
-    /*private class ExitButtonListener
-	implements ActionListener {
-	// Exit the Adminstration tool 
-	public void actionPerformed(ActionEvent event) {
-	    if (valueChanged) {
-		int result = JOptionPane.showConfirmDialog((Component) null, "The value of configuration has been changed,do you really want to exit?", "Exit Confirmation", JOptionPane.YES_NO_OPTION);
-		if ( result == JOptionPane.YES_OPTION) {
-		    System.exit(1);
-		} else if (result == JOptionPane.NO_OPTION) {
-		    JOptionPane.showMessageDialog((Component) null,"Press Save Change button to save the change!");
-		}
-	    } else {
-		System.exit(1);
-	    }
-	}
-	}*/
-
     private class StartupTomcatButtonListener
 	implements ActionListener {
 	public void actionPerformed(ActionEvent event) {
+	    /*before startup Tomcat server, we want to make sure project and Site configuration 
+	     * files are saved*/
+	    if (project_conf_changed) {
+		saveProjectConf(GAI.build_file);
+	    }
+	    /*boolean site_conf_changed = site_conf.confChanged();
+	    boolean interface_conf_changed=interface_conf.confChanged();
+	    if (site_conf_changed) {
+		site_conf.saveFile(site_conf_file);
+	    }
+	    if (interface_conf_changed) {
+		interface_conf.saveFile(interface_conf_file);
+		}*/
 	    tomcat_server_up = checkTomcatServer();
 	    if (!tomcat_server_up) {
-		//ParsingProgress progressBar = new ParsingProgress("Startup Tomcat Server", "Starting up the Tomcat Server", 10);
 		ThreadControl threadControl = new ThreadControl();
 		Runnable startupTomcatThread = threadControl.new startupTomcatServer("start-tomcat");
 		new Thread(startupTomcatThread).start();
-		//if over two seconds
-		// activae progress bar
-		/*progressBar.dispose();
-		progressBar.destroy();
-		progressBar = null;*/
 		threadControl.destroy();
 		tomcat_server_up = true;
-		JOptionPane.showMessageDialog((Component) null,"The Tomcat server has been Startup successfully!");  
+		JOptionPane.showMessageDialog((Component) null,"Tomcat server has been Startup successfully!");  
 	    } else {
 		JOptionPane.showMessageDialog((Component) null,"Tomcat server is running");
@@ -452,21 +462,12 @@
 	    tomcat_server_up = checkTomcatServer();
 	    if (tomcat_server_up){
-		int result = JOptionPane.showConfirmDialog((Component) null, "Are you sure that you want to shutdown the Tomcat server?", "Shutdown Confirmation", JOptionPane.YES_NO_OPTION);
-		if (result == JOptionPane.YES_OPTION) {
-		    // ParsingProgress progressBar = new ParsingProgress("Shutdown Tomcat Server", "Shutting down the Tomcat Server", 10);
-		    ThreadControl threadControl = new ThreadControl();
-		    Runnable shutdownTomcatThread = threadControl.new shutdownTomcatServer("stop-tomcat");
-		    new Thread(shutdownTomcatThread).start();
-		    /*progressBar.dispose();
-		    progressBar.destroy();
-		    progressBar = null;*/
-		    threadControl.destroy();
-		    tomcat_server_up = false;			    
-		    JOptionPane.showMessageDialog((Component) null,"The Tomcat server has been Shutdown successfully !");
-		} else if (result == JOptionPane.NO_OPTION) {
-		    JOptionPane.showMessageDialog((Component) null,"Cancel to Shutdown the Tomcat server!");
-		}	
+		ThreadControl threadControl = new ThreadControl();
+		Runnable shutdownTomcatThread = threadControl.new shutdownTomcatServer("stop-tomcat");
+		new Thread(shutdownTomcatThread).start();
+		threadControl.destroy();
+		tomcat_server_up = false;
+		JOptionPane.showMessageDialog((Component) null, "Tomcat server has been shutted down !");
 	    } else {
-		JOptionPane.showMessageDialog((Component) null,"The Tomcat server was not running!");
+		JOptionPane.showMessageDialog((Component) null,"Tomcat server was not running!");
 	    }
 	    changeTomcatButtonPane2();
@@ -477,12 +478,24 @@
 	implements ActionListener {
 	public void actionPerformed(ActionEvent event) {
+	    //before we restart Tomcat server, we want to make sure the conf_pane settings are saved
+	    if (project_conf_changed) {
+		saveProjectConf(GAI.build_file);
+	    }
+	    /*boolean site_conf_changed = site_conf.confChanged();
+	    boolean interface_conf_changed=interface_conf.confChanged();
+	    if (site_conf_changed) {
+		site_conf.saveFile(site_conf_file);
+	    }
+	    if (interface_conf_changed) {
+		interface_conf.saveFile(interface_conf_file);
+		}*/
 	    tomcat_server_up = checkTomcatServer();
 	    if (tomcat_server_up) {
 		ThreadControl threadControl = new ThreadControl();
 		Runnable restartTomcatThread = threadControl.new restartTomcatServer("restart-tomcat");
-		new Thread(restartTomcatThread).start();
+ 		new Thread(restartTomcatThread).start();
 		threadControl.destroy();
 		tomcat_server_up = true;
-		JOptionPane.showMessageDialog((Component) null,"The Tomcat server has been Restarted successfully!"); 
+		JOptionPane.showMessageDialog((Component) null,"Tomcat server has been Restarted successfully!"); 
 	    } else {
 		JOptionPane.showMessageDialog((Component) null,"Tomcat server was not running!"); 
@@ -490,9 +503,10 @@
 	}
     }
-
-
+    
     private class StartupMysqlButtonListener
 	implements ActionListener {
 	public void actionPerformed(ActionEvent event) {
+	    //before we startup the MySQL server, we want to make sure the Conf_pane settings are saved
+	    saveProjectConf(GAI.build_file);
 	    mysql_server_up = checkMysqlServer();
 	    if (!mysql_server_up) {
@@ -501,6 +515,6 @@
 		new Thread(startupMysqlThread).start();
 		threadControl.destroy();
-		JOptionPane.showMessageDialog((Component) null,"The MYSQL server has been Startup successfully!");  
 		mysql_server_up = true;
+		JOptionPane.showMessageDialog((Component) null,"MYSQL server has been Startup successfully!");  
 	    } else {
 		JOptionPane.showMessageDialog((Component) null,"MYSQL server has been running");  	
@@ -515,25 +529,21 @@
 	    mysql_server_up = checkMysqlServer();
 	    if (mysql_server_up){
-		int result = JOptionPane.showConfirmDialog((Component) null, "Are you sure that you want to shutdown the MYSQL server?", "Shutdown Confirmation", JOptionPane.YES_NO_OPTION);
-		if (result == JOptionPane.YES_OPTION) {
-		    ThreadControl threadControl = new ThreadControl();
-		    Runnable shutdownMysqlThread = threadControl.new shutdownMysqlServer("stop-mysql");
-		    new Thread(shutdownMysqlThread).start();
-		    threadControl.destroy();
-		    JOptionPane.showMessageDialog((Component) null,"The MYSQL server has been Shutdown successfully !");
-		    mysql_server_up = false;
-		} else if (result == JOptionPane.NO_OPTION) {
-		    JOptionPane.showMessageDialog((Component) null,"Cancel to Shutdown the MYSQL server!");
-		}	
+		ThreadControl threadControl = new ThreadControl();
+		Runnable shutdownMysqlThread = threadControl.new shutdownMysqlServer("stop-mysql");
+		new Thread(shutdownMysqlThread).start();
+		threadControl.destroy();
+		JOptionPane.showMessageDialog((Component) null,"MYSQL server has been Shutdown successfully !");
+		mysql_server_up = false;
 	    } else {
-		JOptionPane.showMessageDialog((Component) null,"The MYSQL server was not running!");
+		JOptionPane.showMessageDialog((Component) null,"MYSQL server was not running!");
 	    }
 	    changeMysqlButtonPane2();
 	}
     }
-
+    
     private class RestartMysqlButtonListener
 	implements ActionListener {
 	public void actionPerformed(ActionEvent event) {
+	    saveProjectConf(GAI.build_file);
 	    mysql_server_up = checkMysqlServer();
 	    if (mysql_server_up) {
@@ -545,47 +555,27 @@
 		mysql_server_up = true;
 	    } else { 
-		JOptionPane.showMessageDialog((Component) null,"MYSQL server was not running, use startup button to start the MYSQL server!"); 
-	    }
-	}
-    }
-
-    private class SaveButtonListener
-	implements ActionListener {
-	public void actionPerformed(ActionEvent event) {
-	    
-	    if (!valueChanged) {
-		JOptionPane.showMessageDialog((Component) null,"The configuration value has not been changed!"); 
-	    } else {
-		int result = JOptionPane.showConfirmDialog((Component) null, "Do you really want to save the change", "Save Confirmation", JOptionPane.YES_NO_OPTION);
-		if ( result == JOptionPane.YES_OPTION) {
-		    saveNewConfSetting();
-		    writeConfFile(GAI.build_file);
-		    valueChanged = false;
-		} else if (result == JOptionPane.NO_OPTION) {
-		    valueChanged = true;
-		}
-	    }
-	    
-	}
-    }
-    
-    public void saveNewConfSetting(){
-	String new_string;
-	for (int i=0; i < conf_display.length; i++){
-	    if (!conf_display[i][1].toString().matches("^\\s*$")){
-		for (int j=0; j < conf_array.size(); j++){
-		    if (((String)conf_array.get(j)).startsWith(conf_display[i][1].toString().toLowerCase())){
-			new_string = conf_display[i][1].toString()+"="+conf_display[i][2].toString();
-			conf_array.set(j, new_string.toLowerCase());
-		    }
-		}
-	    }
-	}
-	
-    }
-    
-
-    public void writeConfFile(File file){
+		JOptionPane.showMessageDialog((Component) null,"MYSQL server was not running!"); 
+	    }
+	}
+    }
+
+    // Save the configuration file globally,when click File->Save or restart (or startup) Tomcat and MySQl server
+    public void saveProjectConf(File file){
+    	String new_string;
+	Enumeration keys = conf_table.keys();
+	String key;
+	String value;
 	String filename = file.getPath();
+	while (keys.hasMoreElements()) {
+	    key = (String) keys.nextElement();
+	    value = (String) conf_table.get(key);
+	    for (int j=0 ; j < conf_array.size(); j++){
+		if (((String)conf_array.get(j)).startsWith(key.toLowerCase())){
+		    new_string = key+"="+value; 
+		    conf_array.set(j, new_string.toLowerCase());
+		}
+	    }
+	}
+
 	try {
 	    BufferedWriter conf_out = new BufferedWriter(new FileWriter(filename));
@@ -596,4 +586,5 @@
 	    conf_out.close();
 	    getConfContent();
+	    project_conf_changed = false;
 	} catch (Exception e) {
 	    e.printStackTrace();
@@ -601,23 +592,24 @@
     }
 
+    public boolean ProjectConfChanged() {
+	return project_conf_changed;
+    }
 
     public void getConfContent(){
-	System.err.println("GAI Build file:" + GAI.build_file);
-
 	String filename = GAI.build_file.getPath();
-
 	if (!GAI.build_file.exists()){ 
 	    JOptionPane.showMessageDialog((Component) null,"Build property file does not exist");  
-	    //reload_button.setEnabled(false);
 	} else {
-	    readFile(filename);
-	}
-	save_button.setEnabled(true);
-    }
-    
-    public void readFile (String filename) {
+	    readProjectConf(filename);
+	}
+    }
+    
+    /* Read build.properties file 
+     * @param
+     */
+    public void readProjectConf (String filename) {
 	String fileLine;
 	/*inside the array will store, the conf_setting[i][0]:Comment, 
-	 *conf_setting[i][1]:Para and conf_setting[i][2]:Value
+	 * conf_setting[i][1]:Para and conf_setting[i][2]:Value
 	 * conf_array[] store all the details from the build.properties*/
 	conf_array = new ArrayList();
@@ -626,5 +618,4 @@
 	    BufferedReader conf_in = new BufferedReader(new FileReader(filename));
 	    int i = 0;
-	    int j = 0;
 	    while ((fileLine = conf_in.readLine()) != null) {
 		// This is an empty line
@@ -642,5 +633,6 @@
 		    int end_index = fileLine.indexOf("=");
 		    conf_setting[i][1] = fileLine.substring(0,end_index).toUpperCase();
-		    conf_setting[i][2] = fileLine.substring(end_index+1); 
+		    conf_setting[i][2] = fileLine.substring(end_index+1);
+		    conf_table.put(conf_setting[i][1], conf_setting[i][2]);
 		    i++; //calculat the number of settings
 		    conf_array.add(fileLine);
@@ -650,4 +642,21 @@
 	    }
 	    num_of_setting = i;
+	    for (int j=0; j<num_of_setting; j++){
+		if (conf_setting[j][1].toString().matches("TOMCAT.SERVER")){
+		    tomcat_server = conf_setting[j][2].toString();
+		}
+		if (conf_setting[j][1].toString().matches("TOMCAT.PORT")){
+		    tomcat_port = conf_setting[j][2].toString();
+		}
+		if (conf_setting[j][1].toString().matches("MYSQL.ADMIN.USER")){
+		    mysql_adminuser = conf_setting[j][2].toString();
+		}
+		if (conf_setting[j][1].toString().matches("MYSQL.SERVER")){
+		    mysql_server = conf_setting[j][2].toString();
+		}
+		if (conf_setting[j][1].toString().matches("MYSQL.PORT")){
+		    mysql_port = conf_setting[j][2].toString();
+		}	
+	    }
 	    conf_in.close();
 	} catch (Exception e) {
@@ -656,32 +665,5 @@
     }
     
-    public void showConfSetting(String conf_param) {
-	clearTable();
-	int j=0;
-	for (int i=0; i< num_of_setting; i++){
-	    if (conf_setting[i][1].toString().matches("^("+ conf_param +").+")) {
-		if (conf_setting[i][1].toString().matches("TOMCAT.SERVER")){
-		    tomcat_server = conf_setting[i][2].toString();
-		}
-		if (conf_setting[i][1].toString().matches("TOMCAT.PORT")){
-		    tomcat_port = conf_setting[i][2].toString();
-		}
-		if (conf_setting[i][1].toString().matches("MYSQL.ADMIN.USER")){
-		    mysql_adminuser = conf_setting[i][2].toString();
-		}
-		if (conf_setting[i][1].toString().matches("MYSQL.SERVER")){
-		    mysql_server = conf_setting[i][2].toString();
-		}
-		if (conf_setting[i][1].toString().matches("MYSQL.PORT")){
-		    mysql_port = conf_setting[i][2].toString();
-		}	
-		conf_display[j][0] = conf_setting[i][0];
-	    	conf_display[j][1] = conf_setting[i][1];
-	   	conf_display[j][2] = conf_setting[i][2];
-		j++;
-	    }
-	}
-    }
-    
+
     public void clearTable (){
 	for (int i=0; i< rowLength; i++){
@@ -709,7 +691,8 @@
 		}  
 	    } else {
-		System.err.println("Etiher tomcat server or tomcat port was not set properly");
+		System.err.println("Either Tomcat server or Tomcat port was not set properly");
 	    }
 	} catch (Exception ex) {
+	    tomcat_server_up = false;
 	    System.err.println(ex.getMessage());
 	}
@@ -723,10 +706,8 @@
 	    String mysql_password = ""; 
 	    String mysql_url ="jdbc:mysql://"+mysql_server+":"+mysql_port+"/localsite_gs3mgdemo";
-	    System.err.println("what is Mysql_URL:" + mysql_url);
+	    //System.err.println("what is Mysql_URL:" + mysql_url);
 	    Class.forName("com.mysql.jdbc.Driver").newInstance();
 	    conn = DriverManager.getConnection(mysql_url, mysql_userName, mysql_password);
-	    System.err.println("MYSQL Server connection:" + conn);
 	    if (conn == null) {
-		//System.err.println("Connection is failed");
 		mysql_server_up =false;
 	    } else {
@@ -734,25 +715,29 @@
 	    }
 	} catch (Exception e) {
+	    mysql_server_up = false;
 	    System.err.println("Cannot connect to database server");
 	}
 	return mysql_server_up;
     }
-	
-    class ConfTableModel extends AbstractTableModel {
+    
+    public class ConfSettingTableModel 
+	extends AbstractTableModel
+	{
 	String[] columnNames = {"Configuration Parameter",
-				"Configuration Value"};
+	"Configuration Value"};
 	
 	public int getColumnCount(){
-	    return columnNames.length;
-	}
-
+	return columnNames.length;
+	}
+	
 	public int getRowCount() {
-	    return conf_display.length;
+	return display_row_count;
 	}
 	
 	public String getColumnName(int col){
+	    
 	    return columnNames[col];
 	}
-
+	
 	public Object getValueAt(int row,int col){
 	    return conf_display[row][col+1];
@@ -760,103 +745,125 @@
 	
 	public boolean isCellEditable(int row, int col){
-	    if (col == 0){
+	    if (col==0){
 		return false;
-	    } else {
-		return true;
-	    }
-	}
-
+	    } else if (conf_display[row][col].toString().matches("MYSQL.+")){
+		mysql_server_up = checkMysqlServer();
+		if (mysql_server_up) {
+		    return false;
+		}
+	    } else if (conf_display[row][col].toString().matches("TOMCAT.+")){
+	   	tomcat_server_up = checkTomcatServer();
+		if (tomcat_server_up) {
+		   return false;
+		}
+	    }
+	    return true;
+	}
+	
 	public void setValueAt(Object value, int row, int col){
+	    if (!isCellEditable(row, col))
+		return;
 	    conf_display[row][col+1] = value;
+	    project_conf_changed = true;
+	    //System.err.println("**ConfDisplay:" + conf_display[row][col].toString());
+	    conf_table.put(conf_display[row][col].toString(), value);
 	    fireTableCellUpdated(row,col+1);
-	    valueChanged = true;
-	}
-    }
-
+	    updateUI();
+	}
+    }
+
+    public int showProjectConf(String conf_param) {
+	conf_table_pane.setVisible(true);
+	clearPrevConfPane();
+	confContent_pane.add(conf_table_pane, BorderLayout.CENTER);
+	confContent_pane.revalidate();	
+	clearTable();
+	int j=0;
+	int row_count = 0;
+	for (int i=0; i< num_of_setting; i++){
+	    if (conf_setting[i][1].toString().matches("^("+ conf_param +").+")) {
+		row_count = row_count +1;
+		conf_display[j][0] = conf_setting[i][0];
+	    	conf_display[j][1] = conf_setting[i][1];
+	   	conf_display[j][2] = conf_table.get(conf_setting[i][1]);
+		j++;
+	    }
+	}
+	return row_count;
+    }
+      
+    public void displaySiteConf(SiteConfSetting site_conf_tmp){
+	clearPrevConfPane();
+	confContent_pane.add(site_conf_tmp, BorderLayout.CENTER);
+	try {
+	    site_conf_tmp.showText();
+	    site_conf_tmp.goTop();
+	    confContent_pane.revalidate();
+	} catch (Exception e) {
+	    e.printStackTrace();
+	}    
+     }
+    
+    public void clearPrevConfPane() {
+	confContent_pane.remove(conf_table_pane);
+	confContent_pane.remove(site_conf);
+	confContent_pane.remove(interface_conf);
+    }
+	
+   
     private class ConfTreeListener implements TreeSelectionListener{
-	String conf_param;
 	public void valueChanged (TreeSelectionEvent e){
 	    String option = conf_tree.getLastSelectedPathComponent().toString();
+	    conf_table_pane.setVisible(true);
 	    if (option == "Compile"){
-		if (valueChanged){
-		    JOptionPane.showMessageDialog((Component) null,"The configuration setting has been changed, please save the change");
+		conf_pane_name = "COMPILE";
+		display_row_count = showProjectConf(conf_pane_name);
+		inner_button_pane.removeAll();
+		inner_button_pane.setLayout(new GridLayout(1,3));
+	    } else if (option == "Tomcat"){
+		conf_pane_name ="TOMCAT";
+		display_row_count = showProjectConf(conf_pane_name);
+		//Setup Tomcat button control pane
+		inner_button_pane.removeAll();
+		inner_button_pane.setLayout(new GridLayout(1,3));
+		if (checkTomcatServer()) {
+		    changeTomcatButtonPane1();
 		} else {
-		    conf_param = "COMPILE";
-		    //conf_tree.setToolTipText("The Configuration Setting for the Compilation ");
-		    inner_button_pane.removeAll();
-		    inner_button_pane.setLayout(new GridLayout(1,3));
-		    inner_button_pane.add(save_button);
-		    save_button.setEnabled(true);
-		    showConfSetting(conf_param);
-		    updateUI();
-		}
-	    } else if (option == "Tomcat"){
-		if (valueChanged) {
-		    JOptionPane.showMessageDialog((Component) null,"The configuration setting has been changed, please save the change");
+		    changeTomcatButtonPane2();
+		}
+	    } else if (option =="Proxy"){
+		conf_pane_name="PROXY";
+		display_row_count = showProjectConf(conf_pane_name);
+		//Setup Proxy button control pane
+		inner_button_pane.removeAll();
+		inner_button_pane.setLayout(new GridLayout(1,3));
+	    } else if (option == "MySQL"){
+		conf_pane_name="MYSQL";
+		display_row_count = showProjectConf(conf_pane_name);
+		// Setup MySQL button control pane
+		inner_button_pane.removeAll();
+		inner_button_pane.setLayout(new GridLayout(1,3));
+		if (checkMysqlServer()) {
+		    changeMysqlButtonPane1();
 		} else {
-		    conf_param ="TOMCAT";
-		    showConfSetting(conf_param);
-		    //Setup Tomcat button control pane
-		    inner_button_pane.removeAll();
-		    inner_button_pane.setLayout(new GridLayout(1,3));
-		    if (checkTomcatServer()) {
-			changeTomcatButtonPane1();
-		    } else {
-			changeTomcatButtonPane2();
-		    }
-		    updateUI();
-		}
-	    } else if (option =="Proxy"){
-		if (valueChanged) {
-		    JOptionPane.showMessageDialog((Component) null,"The configuration setting has been changed, please save the change");
-		} else {	
-		    conf_param="PROXY";
-		    showConfSetting(conf_param);
-		    //conf_tree.setToolTipText("The Configuration Setting for the Proxy Server");
-		    inner_button_pane.removeAll();
-		    inner_button_pane.setLayout(new GridLayout(1,3));
-		    inner_button_pane.add(save_button);
-		    save_button.setEnabled(true);
-		    updateUI();
-		}
-	    } else if (option == "Mysql"){
-		if (valueChanged) {
-		    JOptionPane.showMessageDialog((Component) null,"The configuration setting has been changed, please save the change");
-		} else {
-		    conf_param="MYSQL";
-		    showConfSetting(conf_param);
-		    //conf_tree.setToolTipText("The Configuration Setting for the MYSQL Server");
-		    // Setup MySQL button control pane
-		    inner_button_pane.removeAll();
-		    inner_button_pane.setLayout(new GridLayout(1,3));
-		    if (checkMysqlServer()) {
-			changeMysqlButtonPane1();
-		    } else {
-			changeMysqlButtonPane2();
-		    }
-		    updateUI();
+		    changeMysqlButtonPane2();
 		}
 	    } else if (option == "GSDL"){
-		if (valueChanged) {
-		    JOptionPane.showMessageDialog((Component) null,"The configuration setting has been changed, please save the change");
-		} else {
-		    showConfSetting(conf_param);
-		    //conf_tree.setToolTipText("The Configuration Setting for the GSDL");
-		    inner_button_pane.removeAll();
-		    inner_button_pane.setLayout(new GridLayout(1,3));
-		    inner_button_pane.add(save_button);
-		    save_button.setEnabled(true);		
-		    conf_param ="GSDL";
-		    updateUI();
-		}
-	    } else if (option == "Conf 2"){
-		//MysqlInstall mysql = 
-		JOptionPane.showMessageDialog((Component) null,"This has not been defined yet!"); 		
-	    } else if (option == "Conf 3") {
-		clearTable();
-		JOptionPane.showMessageDialog((Component) null,"This has not been defined yet!"); 
-	    }
-	}
-    }
+		conf_pane_name ="GSDL";
+		display_row_count = showProjectConf(conf_pane_name);
+		inner_button_pane.removeAll();
+	    } else if (option == "SiteConfig"){
+		conf_pane_name = "SiteConfig";
+		inner_button_pane.removeAll();
+		displaySiteConf(site_conf);
+	    } else if (option == "InterfaceConfig") {
+		conf_pane_name = "InterfaceConfig";
+		inner_button_pane.removeAll();
+		displaySiteConf(interface_conf);
+	    }
+	    updateUI();
+	}
+    }
+
     public void modeChanged (int mode){
 	return;
@@ -869,47 +876,41 @@
     public void changeTomcatButtonPane1 (){
 	inner_button_pane.removeAll();
-	inner_button_pane.setLayout(new GridLayout(1,3));
+	inner_button_pane.setLayout(new GridLayout(1,2));
 	inner_button_pane.add(restart_tomcat_button);
 	inner_button_pane.add(shutdown_tomcat_button);
-	inner_button_pane.add(save_button);
 	restart_tomcat_button.setEnabled (true);
 	shutdown_tomcat_button.setEnabled (true);
-	save_button.setEnabled (true);	
 	updateUI();
     }
     public void changeTomcatButtonPane2 (){
 	inner_button_pane.removeAll();
-	inner_button_pane.setLayout(new GridLayout(1,3));
+	inner_button_pane.setLayout(new GridLayout(1,2));
 	inner_button_pane.add(startup_tomcat_button);
 	inner_button_pane.add(shutdown_tomcat_button);
-	inner_button_pane.add(save_button);
-	shutdown_tomcat_button.setEnabled (true);
 	startup_tomcat_button.setEnabled (true);
-	save_button.setEnabled (true);
+	shutdown_tomcat_button.setEnabled (false);
 	updateUI();
     }	
     public void changeMysqlButtonPane1 (){
 	inner_button_pane.removeAll();
-	inner_button_pane.setLayout(new GridLayout(1,3));
+	inner_button_pane.setLayout(new GridLayout(1,2));
 	inner_button_pane.add(restart_mysql_button);
 	inner_button_pane.add(shutdown_mysql_button);
-	inner_button_pane.add(save_button);
 	restart_mysql_button.setEnabled (true);
 	shutdown_mysql_button.setEnabled (true);
-	save_button.setEnabled (true);	
 	updateUI();
     }
     public void changeMysqlButtonPane2 (){
 	inner_button_pane.removeAll();
-	inner_button_pane.setLayout(new GridLayout(1,3));
+	inner_button_pane.setLayout(new GridLayout(1,2));
 	inner_button_pane.add(startup_mysql_button);
 	inner_button_pane.add(shutdown_mysql_button);
-	inner_button_pane.add(save_button);
-	shutdown_mysql_button.setEnabled (true);
 	startup_mysql_button.setEnabled (true);
-	save_button.setEnabled (true);
+	shutdown_mysql_button.setEnabled (false);
 	updateUI();
     }	
-}
-       
-
+    public void afterDisplay(){
+	return;
+    }
+} 
+
Index: /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/LogPane.java
===================================================================
--- /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/LogPane.java	(revision 10792)
+++ /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/LogPane.java	(revision 10793)
@@ -46,9 +46,9 @@
 import javax.swing.tree.*;
 
+import org.greenstone.admin.GAIManager;
+import org.greenstone.admin.GAI;
 import org.greenstone.core.Configuration;
 import org.greenstone.core.Dictionary;
 import org.greenstone.core.util.Utility;
-import org.greenstone.admin.GAIManager;
-import org.greenstone.admin.GAI;
 
 /** The Log pane is to view the status of relevant log files in GSIII
@@ -60,7 +60,4 @@
     implements ActionListener {
 
-    // Main Pane
-    //protected JSplitPane main_pane = null;
-
     /* The pane to demonstrate log information, including  the log files being 
      *monitored and their content*/
@@ -93,6 +90,5 @@
     /** Buttons */
     private JButton reload_button = null;
-    private JButton delete_button = null;
-    private JButton exit_button = null;
+    private JButton clear_button = null;
 
     /*The pane which contains the controls for log files */
@@ -108,5 +104,5 @@
     //Constructor
     public LogPane() {
-
+	
 	// create all the necessary panes
 	control_pane = new JPanel();
@@ -134,32 +130,23 @@
 	// Buttons
 	ReloadButtonListener rbl = new ReloadButtonListener();
-	DeleteButtonListener dbl = new DeleteButtonListener();
-	//ExitButtonListener ebl = new ExitButtonListener();
-	ImageIcon reloadButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/Refresh16.gif");
-	ImageIcon deleteButtonIcon = new ImageIcon(GAI.admin_path + "images/toolbarButtonGraphics/general/Delete16.gif");
-	ImageIcon exitButtonIcon = new ImageIcon(GAI.admin_path + "images/exit16.gif");
-	
-	reload_button = new JButton("Reload", reloadButtonIcon);
+	ClearButtonListener dbl = new ClearButtonListener();
+	ImageIcon reloadButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/Refresh16.gif");
+	ImageIcon clearButtonIcon = new ImageIcon(GAI.images_path + "toolbarButtonGraphics/general/Delete16.gif");
+
+	//reload_button = new JButton("Reload", reloadButtonIcon);
+	reload_button = new JButton();
 	reload_button.addActionListener(rbl);
+	reload_button.setEnabled(false);
 	reload_button.setMnemonic(KeyEvent.VK_R);
-	reload_button.setToolTipText("Click this button to reload the log file");
-	//Dictionary.registerBoth(build_button, "CreatePane.Build_Collection", "CreatePane.Build_Collection_Tooltip");
-
-	delete_button = new JButton("Delete", deleteButtonIcon);
-	delete_button.addActionListener(dbl);
-	delete_button.setEnabled(false);
-	delete_button.setMnemonic(KeyEvent.VK_D);
-	delete_button.setToolTipText("Click this button to delete the log file");
-	//Dictionary.registerBoth(cancel_button, "CreatePane.Cancel_Build", "CreatePane.Cancel_Build_Tooltip");*/
-
-	/*exit_button = new JButton("Exit", exitButtonIcon);
-	exit_button.setToolTipText("Click this button to exit the viewing");	
-	exit_button.addActionListener(ebl);
-	exit_button.setEnabled(true);
-	exit_button.setMnemonic(KeyEvent.VK_E);*/
+	Dictionary.registerBoth(reload_button, "LogPane.Reload_Log", "LogPane.Reload_Log_Tooltip");
+
+	clear_button = new JButton();
+	clear_button.addActionListener(dbl);
+	clear_button.setEnabled(false);
+	clear_button.setMnemonic(KeyEvent.VK_C);
+	Dictionary.registerBoth(clear_button, "LogPane.Clear_Log", "LogPane.Clear_Log_Tooltip");
 
 	rbl = null;
 	dbl = null;
-	//ebl = null;	
     }
 
@@ -181,9 +168,9 @@
 	logList_pane = new JPanel();
 	logList_pane.setBorder(BorderFactory.createLoweredBevelBorder());
-	logList_label = new JLabel("Log Files");
+	logList_label = new JLabel();
 	logList_label.setOpaque(true);
 	logList_label.setBackground(Configuration.getColor("coloring.workspace_heading_background", false));
 	logList_label.setForeground(Configuration.getColor("coloring.workspace_heading_foreground", false));
-	//Dictionary.registerText(logList_label, "Log.List");
+	Dictionary.registerText(logList_label, "LogPane.Log_List");
 
 	// logContent_Pane
@@ -192,9 +179,9 @@
 	logContent_pane.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
 	logContent_pane.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
-	logContent_label = new JLabel("Log Content");
+	logContent_label = new JLabel();
 	logContent_label.setOpaque(true);
-	logContent_label.setBackground(Configuration.getColor("coloring.workspace_heading_background", false));
-	logContent_label.setForeground(Configuration.getColor("coloring.workspace_heading_foreground", false));
-	//Dictionary.registerText(logContent_label, "Log.Content");
+	logContent_label.setBackground(Configuration.getColor("coloring.workspace_selection_background", false));
+	logContent_label.setForeground(Configuration.getColor("coloring.workspace_selection_foreground", false));
+	Dictionary.registerText(logContent_label, "LogPane.Log_Content");
 
 	// TEXTAREA Layout
@@ -204,6 +191,5 @@
 	button_pane.setLayout (new GridLayout(1,3));
 	button_pane.add(reload_button);
-	button_pane.add(delete_button);
-	//button_pane.add(exit_button);
+	button_pane.add(clear_button);
 	
 	control_pane.setLayout (new BorderLayout());
@@ -251,5 +237,5 @@
 	repaint();
 	}*/
-
+    
     /** Implementation side-effect, not used in any way.
      * @param event A <strong>FocusEvent</strong> containing details about the focus action performed.
@@ -257,5 +243,5 @@
     /*public void focusLost(FocusEvent event) {
       }*/
-
+    
     /** Called to inform this control panel that it has just gained focus as an effect of the user clicking on its tab.
      */
@@ -273,47 +259,4 @@
 	workspace_filter.setEditable(mode > Configuration.LIBRARIAN_MODE);
 	}*/
-
-
-    /** Refresh this pane, depending on what has just happened (refresh_reason). */
-    /*public void refresh(int refresh_reason, boolean collection_loaded)
-    {
-	if (collection_loaded) {
-	    // Update collection label
-	    Dictionary.registerText(collection_label, "Collection.Collection");
-	    collection_label.setBackground(Configuration.getColor("coloring.collection_heading_background", false));
-	    collection_label.setForeground(Configuration.getColor("coloring.collection_heading_foreground", false));
-
-	    // Update collection tree
-	    if (refresh_reason == Gatherer.COLLECTION_OPENED) {
-		collection_tree.setModel(Gatherer.c_man.getCollectionTreeModel());
-	    }
-	    // Update collection filter
-	    collection_filter.setBackground(Configuration.getColor("coloring.collection_heading_background", false));
-	}
-	else {
-	    // Update collection label
-	    String[] args = new String[1];
-	    args[0] = Dictionary.get("Collection.No_Collection");
-	    Dictionary.registerText(collection_label, "Collection.Collection", args);
-	    collection_label.setBackground(Color.lightGray);
-	    collection_label.setForeground(Color.black);
-
-	    // Update collection tree
-	    collection_tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("Error")));
-
-	    // Update collection filter
-	    collection_filter.setBackground(Color.lightGray);
-	}
-
-	// Enable or disable the controls
-	workspace_tree.setEnabled(true);
-	collection_tree.setEnabled(collection_loaded);
-	collection_filter.setEnabled(collection_loaded);
-	bin_button.setEnabled(collection_loaded);
-	new_folder.setEnabled(collection_loaded);
-	
-	// Ensure that this collection tree view is synchronized with all others
-	collection_tree_sync.add(collection_tree);
-	}*/
     
     private class KeyListenerImpl
@@ -322,10 +265,8 @@
 	public void keyReleased(KeyEvent event) {
 	}
-	
 	// we need to watch for left clicks on an unopened folder - should shift the focus to the
 	//parent folder. But because there is some other mysterious key listener that does opening and 
 	//closing folders on right and left clicks, we must detect the situation before the other handler 
 	//has done its job, and process it after.*/
-	
 	public void keyPressed(KeyEvent event) {
 	    if (event.getKeyCode() == KeyEvent.VK_LEFT) {
@@ -343,9 +284,8 @@
 	 *registered components, and start an external application if someone double clicks on a certain 
 	 *file record. */
-	
-	/*public void mouseReleased(MouseEvent e) {}
-	  public void mouseExited(MouseEvent e) {}
+	public void mouseReleased(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
 	public void mousePressed(MouseEvent e) {}
-	public void mouseEntered(MouseEvent e) {}*/
+	public void mouseEntered(MouseEvent e) {}
 	
     }
@@ -359,40 +299,31 @@
 	    // Remember that for lower thresholds the above doesn't work, so try this instead
 	    reload_button.setEnabled(true);
-	    delete_button.setEnabled(true);
+	    clear_button.setEnabled(true);
 	    updateLogsContent(log_file.getPath());
 	}
     }
     
-    private class DeleteButtonListener
+    private class ClearButtonListener
 	implements ActionListener {
 	public void actionPerformed(ActionEvent event) {
-	    //log_file.
 	    if (!log_file.exists()){
 		JOptionPane.showMessageDialog((Component) null,log_file.getPath() + " log file does not exist");
 		return;
 	    } else {
-		DeleteLogFilePrompt dfp  = new DeleteLogFilePrompt();
-		boolean file_deleted = dfp.display(log_file);
-		if (file_deleted) {
+		ClearLogFilePrompt cfp  = new ClearLogFilePrompt();
+		boolean file_cleared = cfp.display(log_file);
+		if (file_cleared) {
 		    log_textarea.setText("");
 		}
 	    }
-	    delete_button.setEnabled(true);
-	}
-    }
-    
-    /*    private class ExitButtonListener
-	implements ActionListener {
-	// Exit the Adminstration tool 
-	public void actionPerformed(ActionEvent event) {
-	    System.exit(1);
-	}
-	}*/
-
+	    clear_button.setEnabled(false);
+	}
+    }
+    
     public void updateLogsContent(String filename){
 	if (!log_file.exists()){ 
 	    log_textarea.setText("");
 	    JOptionPane.showMessageDialog((Component) null, filename+" log file does not exist");  
-	    delete_button.setEnabled(false);
+	    clear_button.setEnabled(false);
 	} else {
 	    readFile(filename);
@@ -403,5 +334,4 @@
 	log_textarea.setText("");
 	String fileLine;
-	int line_number = 0;
 	try {
 	    BufferedReader in = new BufferedReader(new FileReader(filename));
@@ -409,5 +339,4 @@
 		log_textarea.append(fileLine);
 		log_textarea.append("\n");
-		line_number =line_number + 1;
 	    }
 	} catch (Exception e) {
@@ -426,18 +355,14 @@
 		    updateLogsContent(filename);
 		    reload_button.setEnabled(true);
-		    delete_button.setEnabled(true);
+		    clear_button.setEnabled(true);
 		} else if (log_list.getSelectedIndex () == 1) {
-		    /*log_file = new File (GAI.gsdl3_path+"/ant_out.log");
-		    String filename = log_file.getPath();
-		    updateLogsContent(filename);
-		    delete_button.setEnabled(true);*/
 		    log_textarea.setText("");
 		    JOptionPane.showMessageDialog((Component) null,"This file has not been defined yet");	
-		    delete_button.setEnabled(false);
+		    clear_button.setEnabled(false);
 		    reload_button.setEnabled(false);
 		} else if (log_list.getSelectedIndex () == 2) {
 		    log_textarea.setText("");
 		    JOptionPane.showMessageDialog((Component) null,"This file has not been defined yet");	
-		    delete_button.setEnabled(false);
+		    clear_button.setEnabled(false);
 		    reload_button.setEnabled(false);
 		}
@@ -448,3 +373,6 @@
 	return;
     }
+    public void afterDisplay() {
+	return;
+    }
 }
Index: /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/MenuBar.java
===================================================================
--- /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/MenuBar.java	(revision 10792)
+++ /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/MenuBar.java	(revision 10793)
@@ -2,5 +2,5 @@
  *#########################################################################
  *
- * A component of the Gatherer application, part of the Greenstone digital
+ * A component of the GAI application, part of the Greenstone digital
  * library suite from the New Zealand Digital Library Project at the
  * University of Waikato, New Zealand.
@@ -43,4 +43,6 @@
 
 import org.greenstone.admin.GAI;
+import org.greenstone.core.Configuration;
+import org.greenstone.core.Dictionary;
 import org.greenstone.core.util.Utility;
 
@@ -49,5 +51,4 @@
  * @version
  */
-
 public class MenuBar
     extends JMenuBar {
@@ -58,188 +59,96 @@
     private JMenu edit = null;
     public JMenu help  = null;
-    //public JMenuItem file_associations;
     // public JMenuItem file_cdimage    = null;
     // public JMenuItem file_close      = null;
     //public JMenuItem file_delete     = null;
-    public JMenuItem file_exit       = null;
-    // public JMenuItem file_exportas   = null;
-    // public JMenuItem file_new        = null;
-    //public JMenuItem file_open       = null;
-    //public JMenuItem file_options    = null;
-    // public JMenuItem file_save       = null;
-    // public JMenuItem edit_copy;
-    //public JMenuItem edit_cut;
-    // public JMenuItem edit_paste;
+    public JMenuItem file_exit = null;
+    public JMenuItem file_save = null;
+    public JMenuItem help_general;
     public JMenuItem help_conf;
     public JMenuItem help_ext;
     public JMenuItem help_monitor;
     public JMenuItem help_log;
-    //public JMenuItem help_gather;
-    //public JMenuItem help_enrich;
-    //public JMenuItem help_design;
-    //public JMenuItem help_create;
     public JMenuItem help_about;
 
-    //public static String imagePath = "/research/chi/gsdl3/src/java/org/greenstone/admin/images/";
-    public static String imagePath = "/research/chi/gsdl3-test/gsdl3/src/java/org/greenstone/admin/images/";
-    
     static public ImageIcon HELP_ICON = null; 
 
     //    public MenuBar(MenuListener Menu_listener)
-    public MenuBar()
+    public MenuBar(MenuListener menu_listener)
     {
-	HELP_ICON = new ImageIcon("images/help.gif");
-	file = new JMenu("File");
+	HELP_ICON = new ImageIcon(GAI.images_path +"help.gif");
+	//file = new JMenu("File");
+	file = new JMenu();
 	file.setMnemonic(KeyEvent.VK_F);
-	//Dictionary.registerText(file, "Menu.File");
-
-	/*file_associations = new JMenuItem();
-	file_associations.addActionListener(Gatherer.g_man);	  
-	file_associations.setMnemonic(KeyEvent.VK_A);
-	Dictionary.registerText(file_associations, "Menu.File_Associations");
-
-	file_cdimage = new JMenuItem();
-	file_cdimage.addActionListener(Gatherer.g_man);
-	file_cdimage.setMnemonic(KeyEvent.VK_I);
-	Dictionary.registerText(file_cdimage, "Menu.File_CDimage");
-
-	file_close = new JMenuItem();
-	file_close.addActionListener(Gatherer.g_man);
-	file_close.setEnabled(false);
-	file_close.setMnemonic(KeyEvent.VK_C);
-	Dictionary.registerText(file_close, "Menu.File_Close");
-
-	file_delete = new JMenuItem();
-	file_delete.addActionListener(Gatherer.g_man);
-	file_delete.setMnemonic(KeyEvent.VK_D);
-	Dictionary.registerText(file_delete, "Menu.File_Delete");*/
-
-	file_exit = new JMenuItem("Exit");
+	Dictionary.registerText(file, "Menu.File");
+	
+	//file_save = new JMenuItem("Save");
+	file_save = new JMenuItem();
+	file_save.addActionListener(GAI.ga_man);
+	file_save.setMnemonic(KeyEvent.VK_S);
+	Dictionary.registerText(file_save, "Menu.File_Save");
+
+	//file_exit = new JMenuItem("Exit");
+	file_exit = new JMenuItem();
 	file_exit.addActionListener(GAI.ga_man);
 	file_exit.setMnemonic(KeyEvent.VK_X);
-	//Dictionary.registerText(file_exit, "Menu.File_Exit");
-
-	/*file_exportas = new JMenuItem();
-	file_exportas.addActionListener(Gatherer.g_man);
-	file_exportas.setMnemonic(KeyEvent.VK_E);
-	Dictionary.registerText(file_exportas, "Menu.File_ExportAs");*/
-
-	/*file_new = new JMenuItem();
-	file_new.addActionListener(Gatherer.g_man);
-	file_new.setMnemonic(KeyEvent.VK_N);
-	Dictionary.registerText(file_new, "Menu.File_New");
-
-	file_open = new JMenuItem();
-	file_open.addActionListener(Gatherer.g_man);
-	file_open.setMnemonic(KeyEvent.VK_O);
-	Dictionary.registerText(file_open, "Menu.File_Open");
-
-	file_options = new JMenuItem();
-	file_options.addActionListener(Gatherer.g_man);
-	file_options.setMnemonic(KeyEvent.VK_P);
-	Dictionary.registerText(file_options, "Menu.File_Options");
-
-	file_save = new JMenuItem();
-	file_save.addActionListener(Gatherer.g_man);
-	file_save.setEnabled(false);
-	file_save.setMnemonic(KeyEvent.VK_S);
-	Dictionary.registerText(file_save, "Menu.File_Save");*/
-
-	// Layout (file menu)
-	/*file.add(file_new);
-	file.add(file_open);
+	Dictionary.registerText(file_exit, "Menu.File_Exit");
+	//Layout (File menu)
 	file.add(file_save);
-	file.add(file_close);*/
 	file.add(new JSeparator());
-	/*file.add(file_delete);
-	file.add(file_exportas);
-	file.add(file_cdimage);
-	file.add(new JSeparator());
-	file.add(file_associations);
-	file.add(file_options);
-	file.add(new JSeparator());*/
 	file.add(file_exit);
 
 	// Edit menu
-	edit = new JMenu("Edit");
+	//edit = new JMenu("Edit");
+	edit = new JMenu();
 	edit.setMnemonic(KeyEvent.VK_E);
-	//Dictionary.registerText(edit, "Menu.Edit");
+	Dictionary.registerText(edit, "Menu.Edit");
 		  
-	/*edit_cut = new JMenuItem();
-	edit_cut.addActionListener(Gatherer.g_man);
-	edit_cut.setMnemonic(KeyEvent.VK_X);
-	Dictionary.registerText(edit_cut, "Menu.Edit_Cut");
-
-	edit_copy = new JMenuItem();
-	edit_copy.addActionListener(Gatherer.g_man);
-	edit_copy.setMnemonic(KeyEvent.VK_C);
-	Dictionary.registerText(edit_copy, "Menu.Edit_Copy");
-
-	edit_paste = new JMenuItem();
-	edit_paste.addActionListener(Gatherer.g_man);
-	edit_paste.setMnemonic(KeyEvent.VK_V);
-	Dictionary.registerText(edit_paste, "Menu.Edit_Paste");
-
-	// Layout (edit menu)
-	edit.add(edit_cut);
-	edit.add(edit_copy);
-	edit.add(edit_paste);*/
-
 	// Help menu
-	help = new JMenu("Help");
+	//help = new JMenu("Help");
+	help = new JMenu();
 	help.setMnemonic(KeyEvent.VK_H);
 	help.setIcon(HELP_ICON);
-	//Dictionary.setText(help, "Menu.Help");
-
-	help_conf = new JMenuItem("Configuration");
-	//help_log.addActionListener(Gatherer.g_man);
-	//Dictionary.registerText(help_general, "Source.General");
-
-	help_ext = new JMenuItem("Ext");
-	help_monitor = new JMenuItem("Monitor");
-	help_log = new JMenuItem("Log");
-
-	/*help_gather = new JMenuItem(Utility.BLANK_ICON);
-	help_gather.addActionListener(Gatherer.g_man);
-	Dictionary.registerText(help_gather, "GUI.Gather");
-
-	help_enrich = new JMenuItem(Utility.BLANK_ICON);
-	help_enrich.addActionListener(Gatherer.g_man);
-	Dictionary.registerText(help_enrich, "GUI.Enrich");
-
-	help_design = new JMenuItem(Utility.BLANK_ICON);
-	help_design.addActionListener(Gatherer.g_man);
-	Dictionary.registerText(help_design, "GUI.Design");
-
-	help_create = new JMenuItem(Utility.BLANK_ICON);
-	help_create.addActionListener(Gatherer.g_man);
-	Dictionary.registerText(help_create, "GUI.Create");*/
-
-	help_about = new JMenuItem("About");
-	//help_about.addActionListener(Gatherer.g_man);
-	//Dictionary.registerText(help_about, "Menu.Help_About");
-
+	Dictionary.setText(help, "Menu.Help");
+
+	help_general = new JMenuItem();
+	help_general.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_general,"Source.General");
+	
+	help_conf = new JMenuItem();
+	help_conf.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_conf,"GAI.Configuration");
+	
+	help_ext = new JMenuItem();
+	help_ext.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_ext,"GAI.Ext");
+
+	help_monitor = new JMenuItem();
+	help_monitor.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_monitor,"GAI.Monitor");
+
+	help_log = new JMenuItem();
+	help_log.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_log,"GAI.Log");
+
+	help_about = new JMenuItem();
+	help_about.addActionListener(GAI.ga_man);
+	Dictionary.registerText(help_about,"Menu.Help_About");
+		
+	
 	// Layout (help menu)
-	help.add(help_conf);
-	help.add(help_ext);
-	help.add(help_monitor);
-	help.add(help_log);
+	help.add(help_general);
 	help.add(new JSeparator());
-
-	/*if (Configuration.get("workflow.download", true)) {
-	    help.add(help_download);
-	}
-	if (Configuration.get("workflow.gather", true)) {
-	    help.add(help_gather);
-	}
-	if (Configuration.get("workflow.enrich", true)) {
-	    help.add(help_enrich);
-	}
-	if (Configuration.get("workflow.design", true)) {
-	    help.add(help_design);
-	}
-	if (Configuration.get("workflow.create", true)) {
-	    help.add(help_create);
-	    }*/
+	if (Configuration.get("admin.conf", true)) {
+	    help.add(help_conf);
+	}
+	if (Configuration.get("admin.ext", true)) {
+	    help.add(help_ext);
+	}
+	if (Configuration.get("admin.monitor", true)) {
+	    help.add(help_monitor);
+	}
+	if (Configuration.get("admin.log", true)) {
+	    help.add(help_log);
+	}
 	
 	help.add(new JSeparator());
Index: /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/SaveChangePrompt.java
===================================================================
--- /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/SaveChangePrompt.java	(revision 10792)
+++ /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/SaveChangePrompt.java	(revision 10793)
@@ -79,18 +79,18 @@
     /** This method causes the Save Change Confirmation Dialog to be displayed.
      * returns true if it has save the change file that is currently open */
-    public boolean display(File file) {
-	int result = JOptionPane.showConfirmDialog((Component) null, "Do you really want to save the change", "Save Confirmation", JOptionPane.YES_NO_OPTION);
-	if ( result == JOptionPane.YES_OPTION) {
-	    ConfPane confPane = new ConfPane();
-	    confPane.saveNewConfSetting();
-	    confPane.writeConfFile(file);
-	    current_change_saved = true;
-	} else if (result == JOptionPane.NO_OPTION) {
+    // public boolean display(File file) {
+	/*int result = JOptionPane.showConfirmDialog((Component) null, "Do you really want to save the change", "Save Confirmation", JOptionPane.YES_NO_OPTION);
+	  if ( result == JOptionPane.YES_OPTION) {
+	  ConfPane confPane = new ConfPane();
+	  confPane.saveNewConfSetting();
+	  confPane.writeConfFile(file);
+	  current_change_saved = true;
+	  } else if (result == JOptionPane.NO_OPTION) {
 	    current_change_saved = false;
 	    prompt.dispose();
-	}
-	resultPrompt(current_change_saved);
-	return current_change_saved;
-    }
+	    }
+	    resultPrompt(current_change_saved);
+	    return current_change_saved;*/
+    //}
     
     /** Shows a save complete prompt. 
Index: /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ThreadControl.java
===================================================================
--- /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ThreadControl.java	(revision 10792)
+++ /branches/ant-install-branch/gsdl3/src/java/org/greenstone/admin/gui/ThreadControl.java	(revision 10793)
@@ -45,4 +45,5 @@
 
 import org.greenstone.admin.GAI;
+import org.greenstone.admin.GAIManager;
 import org.greenstone.admin.gui.LogPane;
 import org.greenstone.core.ParsingProgress;
@@ -51,8 +52,9 @@
 
 
+
 public class ThreadControl 
     extends Thread {
     
-    //boolean ant_success = false;
+    private GAIManager gai_man;
 
     public ThreadControl(){
@@ -159,5 +161,5 @@
 	
 	public void run() {
-	    try { 
+	    try {
 		executeAntTarget(this.command_string);
 	    } catch(Exception e) { 
@@ -210,5 +212,4 @@
 	    try { 
 		executeAntTarget(this.command_string);
-		// ant_success;
 	    } catch(Exception e) { 
 		System.out.println(e.getMessage()); 
@@ -248,4 +249,24 @@
 	}
     }
+
+    public class installGS3 
+	implements Runnable {
+	private String command_string = null;
+
+	/* Install GSDL3 through ant program*/
+	public installGS3(String command_string) {
+	    this.command_string = command_string;
+	}
+	public void run() {
+	    try {
+     
+		executeAntTarget(this.command_string);
+		// ant_success;
+	    } catch(Exception e) { 
+		System.out.println(e.getMessage()); 
+	    }
+	}
+    }
+
     
     public void destroy(){
