Index: main/trunk/gli/src/org/greenstone/gatherer/cdm/DatabaseTypeManager.java
===================================================================
--- main/trunk/gli/src/org/greenstone/gatherer/cdm/DatabaseTypeManager.java	(revision 25773)
+++ main/trunk/gli/src/org/greenstone/gatherer/cdm/DatabaseTypeManager.java	(revision 25776)
@@ -13,280 +13,339 @@
 import org.greenstone.gatherer.gui.ModalDialog;
 
-public class DatabaseTypeManager {
-
-    /** The size of this new collection dialog box. */
-    static private Dimension DIALOG_SIZE = new Dimension(600, 280);
-
-    static final public String DATABASE_TYPE_GDBM = "gdbm";
-    static final public String DATABASE_TYPE_JDBM = "jdbm";
-    static final public String DATABASE_TYPE_SQLITE = "sqlite";
-
-    static final public String DATABASE_TYPE_GDBM_STR = "GDBM";
-    static final public String DATABASE_TYPE_JDBM_STR = "JDBM";
-    static final public String DATABASE_TYPE_SQLITE_STR = "SQLITE";
-    
-    static final public String[] DATABASE_TYPES = {  DATABASE_TYPE_GDBM, DATABASE_TYPE_JDBM, DATABASE_TYPE_SQLITE  };
-
-    private EventListenerList listeners = null;
-    /** the databasetype element in the config file - uses CollectionMeta */
-    public CollectionMeta database_type_meta = null;
-    private Control controls = null;
-
-    protected DatabaseTypeManager manager = null;
-    public DatabaseTypeManager() {
-	database_type_meta = new CollectionMeta(CollectionDesignManager.collect_config.getDatabaseType());
-	if (getDatabaseType().equals("")) {
-	    database_type_meta.setValue(DATABASE_TYPE_GDBM);
-	    // must have an old collection, assume MG
-	}
-	listeners = new EventListenerList();
-	manager = this;
-    }
-
-    public void addDatabaseTypeListener(DatabaseTypeListener listener) {
-	listeners.add(DatabaseTypeListener.class, listener);
-    }
-    
-    protected void notifyListeners(String new_database_type) {
-	Object[] concerned = listeners.getListenerList();
-	for(int i = 0; i < concerned.length ; i++) {
-	    if(concerned[i] == DatabaseTypeListener.class) {
-		((DatabaseTypeListener)concerned[i+1]).databaseTypeChanged(new_database_type);
-	    }
-	}
-	concerned = null;
-    }
-    
-	
-    public void promptForNewDatabaseType() {
-
-	DatabaseTypePrompt dtp = new DatabaseTypePrompt(database_type_meta.getValue(CollectionMeta.TEXT));	
-    }
-
-    public boolean isGDBM () {
-
-	return getDatabaseType().equals(DATABASE_TYPE_GDBM);
-    }
-    public boolean isJDBM () {
-
-	return getDatabaseType().equals(DATABASE_TYPE_JDBM);
-    }
-    public boolean isSQLITE () {
-
-	return getDatabaseType().equals(DATABASE_TYPE_SQLITE);
-    }
-
-    
-    public String getDatabaseType() {
-	return database_type_meta.getValue(CollectionMeta.TEXT);
-    }
-
-    public Control getControls() {
-	if (controls == null) {
-	    controls = new DatabaseTypeControl();
-	}
-	return controls;
-    }
-
-    public interface DatabaseTypeListener
-	extends EventListener {
-	public void databaseTypeChanged(String new_database_type);
-    }
-
-    private class DatabaseTypeControl 
-	extends JPanel
-	implements Control, DatabaseTypeListener {
-
-	JLabel label = null;
-	JButton change_button = null;
-	
-	public DatabaseTypeControl() {
-	    super();
-	    this.setComponentOrientation(Dictionary.getOrientation());
-            
-	    JPanel spacer_panel = new JPanel();
-	    spacer_panel.setComponentOrientation(Dictionary.getOrientation());
-            
-	    JPanel main_panel = new JPanel();
-            main_panel.setComponentOrientation(Dictionary.getOrientation());
-	    /* may be CDM.DatabaseTypeManager.gdbm, CDM.DatabaseTypeManager.jdbm, CDM.DatabaseTypeManager.sqlite */
-	    label = new JLabel(Dictionary.get("CDM.DatabaseTypeManager.Current_Type", getDatabaseTypeString(getDatabaseType())));
-            label.setComponentOrientation(Dictionary.getOrientation());
-	    
-            change_button = new GLIButton(Dictionary.get("CDM.DatabaseTypeManager.Change"), Dictionary.get("CDM.DatabaseTypeManager.Change_Tooltip"));
-	    	    
-	    change_button.addActionListener(new ActionListener() {
-		    public void actionPerformed(ActionEvent event) {
-			promptForNewDatabaseType();
-		    }
-		});
-
-	    main_panel.setLayout(new BorderLayout(10,10));
-	    main_panel.add(label, BorderLayout.CENTER);
-	    main_panel.add(change_button, BorderLayout.LINE_END);
-
-	    setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
-	    setLayout(new BorderLayout());
-	    add(spacer_panel, BorderLayout.CENTER);
-	    add(main_panel, BorderLayout.LINE_END);
-
-	    manager.addDatabaseTypeListener(this);
-	}
-
-	public void loseFocus() {}
-	public void gainFocus() {}
-	public void destroy() {}
-
-	private String getDatabaseTypeString(String database_type) {
-	    if (database_type.equals(DATABASE_TYPE_GDBM)) {
-		return DATABASE_TYPE_GDBM_STR;
-	    }
-	    if (database_type.equals(DATABASE_TYPE_JDBM)) {
-		return DATABASE_TYPE_JDBM_STR;
-	    }
-	    if (database_type.equals(DATABASE_TYPE_SQLITE)) {
-		return DATABASE_TYPE_SQLITE_STR;
-	    }
-	    return "";
-	}
-
-		
-	public void databaseTypeChanged(String new_database_type) {
-	    label.setText(Dictionary.get("CDM.DatabaseTypeManager.Current_Type", getDatabaseTypeString(new_database_type)));
-	}
-    }
-    
-    private class DatabaseTypePrompt 
-	extends ModalDialog {
-	
-	private JDialog self;
-	
-	private JRadioButton gdbm_button = null;
-	private JRadioButton jdbm_button = null;
-	private JRadioButton sqlite_button = null;
-
-	private JTextArea description_textarea = null;
-	
-	JButton ok_button = null;
-	JButton cancel_button = null;
-	
-	public DatabaseTypePrompt(String current_database_type) {
-	    super(Gatherer.g_man, true);
-	    this.self = this;
-	    setSize(DIALOG_SIZE);
-	    setTitle(Dictionary.get("CDM.DatabaseTypeManager.Title"));
-            this.setComponentOrientation(Dictionary.getOrientation());
-            gdbm_button = new JRadioButton(DATABASE_TYPE_GDBM_STR);
-            gdbm_button.setComponentOrientation(Dictionary.getOrientation());
-	    gdbm_button.setActionCommand(DATABASE_TYPE_GDBM);
-            jdbm_button = new JRadioButton(DATABASE_TYPE_JDBM_STR);
-            jdbm_button.setComponentOrientation(Dictionary.getOrientation());
-            jdbm_button.setActionCommand(DATABASE_TYPE_JDBM);
-            sqlite_button = new JRadioButton(DATABASE_TYPE_SQLITE_STR);
-            sqlite_button.setComponentOrientation(Dictionary.getOrientation());
-            sqlite_button.setActionCommand(DATABASE_TYPE_SQLITE);
-	    
-	    DatabaseTypeButtonListener dtbl = new DatabaseTypeButtonListener();
-	    gdbm_button.addActionListener(dtbl);
-	    jdbm_button.addActionListener(dtbl);
-	    sqlite_button.addActionListener(dtbl);
-
-	    ButtonGroup database_type_group = new ButtonGroup();
-	    database_type_group.add(gdbm_button);
-	    database_type_group.add(jdbm_button);
-	    database_type_group.add(sqlite_button);
-            
-	    if (current_database_type != null) {
-		if (current_database_type.equals(DATABASE_TYPE_GDBM)) {
-		    gdbm_button.setSelected(true);
-		} else if (current_database_type.equals(DATABASE_TYPE_JDBM)) {
-		    jdbm_button.setSelected(true);
-		} else if (current_database_type.equals(DATABASE_TYPE_SQLITE)) {
-		    sqlite_button.setSelected(true);
-		} 
-	    }
-	    
-	    JPanel radio_pane = new JPanel();
-	    radio_pane.setLayout(new GridLayout(3,1));
-	    radio_pane.add(gdbm_button);
-	    radio_pane.add(jdbm_button);
-	    radio_pane.add(sqlite_button);
-            radio_pane.setComponentOrientation(Dictionary.getOrientation());
-            
-	    description_textarea = new JTextArea();
-	    description_textarea.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-	    /* may be CDM.DatabaseTypeManager.gdbm_Description, CDM.DatabaseTypeManager.jdbm_Description, CDM.DatabaseTypeManager.sqlite_Description */
-	    description_textarea.setText(Dictionary.get("CDM.DatabaseTypeManager."+current_database_type+"_Description"));
-	    description_textarea.setLineWrap(true);
-	    description_textarea.setWrapStyleWord(true);
-	    description_textarea.setComponentOrientation(Dictionary.getOrientation());
-            
-            cancel_button = new GLIButton(Dictionary.get("General.Cancel"), Dictionary.get("General.Cancel_Tooltip"));
-	    
-	    cancel_button.addActionListener(new ActionListener() {
-		    public void actionPerformed(ActionEvent event) {
-			self.dispose();
-		    }
-		});
-	    
-	    ok_button = new GLIButton(Dictionary.get("General.OK"), Dictionary.get("General.OK_Tooltip"));
-	    
-	    ok_button.addActionListener(new ActionListener() {
-		    public void actionPerformed(ActionEvent event) {
-			String new_database_type = DATABASE_TYPE_GDBM;
-			if (gdbm_button.isSelected()) {
-			    new_database_type = DATABASE_TYPE_GDBM;
-			} else if (jdbm_button.isSelected()) {
-			    new_database_type = DATABASE_TYPE_JDBM;
-			} else if (sqlite_button.isSelected()) {
-			    new_database_type = DATABASE_TYPE_SQLITE;
-			}
-			if (!database_type_meta.getValue(CollectionMeta.TEXT).equals(new_database_type)) {
-			    manager.notifyListeners(new_database_type);
-			    database_type_meta.setValue(new_database_type);
-			}
-			self.dispose();
-		    }
-		});
-	    // tell the CDM that we have (possibly) changed
-	    ok_button.addActionListener(CollectionDesignManager.databasecol_change_listener);
-	    JPanel button_pane = new JPanel();
-	    button_pane.setLayout(new GridLayout(1,2));
-	    button_pane.add(ok_button);
-	    button_pane.add(cancel_button);
-            button_pane.setComponentOrientation(Dictionary.getOrientation());
-            
-	    JPanel content_pane = (JPanel) getContentPane();
-	    content_pane.setOpaque(true);
-	    content_pane.setLayout(new BorderLayout());
-	    content_pane.add(radio_pane, BorderLayout.NORTH);
-	    content_pane.add(new JScrollPane(description_textarea), BorderLayout.CENTER);
-	    content_pane.add(button_pane, BorderLayout.SOUTH);
-            content_pane.setComponentOrientation(Dictionary.getOrientation());
-            
-	    // Center and display.
-	    Dimension screen_size = Configuration.screen_size;
-	    this.setLocation((screen_size.width - DIALOG_SIZE.width) / 2, (screen_size.height - DIALOG_SIZE.height) / 2);
-	    this.setVisible(true); // blocks until the dialog is killed
-	       
-	}
-
-	public void loseFocus() {
-
-	}
-	public void gainFocus() {
-
-	}
-	public void destroy() {
-
-	}
-	
-	private class DatabaseTypeButtonListener
-	    implements ActionListener {
-
-	    public void actionPerformed(ActionEvent event) {
-		description_textarea.setText(Dictionary.get("CDM.DatabaseTypeManager."+event.getActionCommand()+"_Description"));
-	    }
-	}
-    }
+public class DatabaseTypeManager
+{
+
+	/** The size of this new collection dialog box. */
+	static private Dimension DIALOG_SIZE = new Dimension(600, 280);
+
+	static final public String DATABASE_TYPE_GDBM = "gdbm";
+	static final public String DATABASE_TYPE_JDBM = "jdbm";
+	static final public String DATABASE_TYPE_SQLITE = "sqlite";
+
+	static final public String DATABASE_TYPE_GDBM_STR = "GDBM";
+	static final public String DATABASE_TYPE_JDBM_STR = "JDBM";
+	static final public String DATABASE_TYPE_SQLITE_STR = "SQLITE";
+
+	static final public String[] DATABASE_TYPES = { DATABASE_TYPE_GDBM, DATABASE_TYPE_JDBM, DATABASE_TYPE_SQLITE };
+
+	private EventListenerList listeners = null;
+	/** the databasetype element in the config file - uses CollectionMeta */
+	public CollectionMeta database_type_meta = null;
+	private Control controls = null;
+
+	protected DatabaseTypeManager manager = null;
+
+	public DatabaseTypeManager()
+	{
+		database_type_meta = new CollectionMeta(CollectionDesignManager.collect_config.getDatabaseType());
+		if (getDatabaseType().equals(""))
+		{
+			database_type_meta.setValue(DATABASE_TYPE_GDBM);
+			// must have an old collection, assume MG
+		}
+		listeners = new EventListenerList();
+		manager = this;
+	}
+
+	public void addDatabaseTypeListener(DatabaseTypeListener listener)
+	{
+		listeners.add(DatabaseTypeListener.class, listener);
+	}
+
+	protected void notifyListeners(String new_database_type)
+	{
+		Object[] concerned = listeners.getListenerList();
+		for (int i = 0; i < concerned.length; i++)
+		{
+			if (concerned[i] == DatabaseTypeListener.class)
+			{
+				((DatabaseTypeListener) concerned[i + 1]).databaseTypeChanged(new_database_type);
+			}
+		}
+		concerned = null;
+	}
+
+	public void promptForNewDatabaseType()
+	{
+
+		DatabaseTypePrompt dtp = new DatabaseTypePrompt(database_type_meta.getValue(CollectionMeta.TEXT));
+	}
+
+	public boolean isGDBM()
+	{
+
+		return getDatabaseType().equals(DATABASE_TYPE_GDBM);
+	}
+
+	public boolean isJDBM()
+	{
+
+		return getDatabaseType().equals(DATABASE_TYPE_JDBM);
+	}
+
+	public boolean isSQLITE()
+	{
+
+		return getDatabaseType().equals(DATABASE_TYPE_SQLITE);
+	}
+
+	public String getDatabaseType()
+	{
+		return database_type_meta.getValue(CollectionMeta.TEXT);
+	}
+
+	public Control getControls()
+	{
+		if (controls == null)
+		{
+			controls = new DatabaseTypeControl();
+		}
+		return controls;
+	}
+
+	public interface DatabaseTypeListener extends EventListener
+	{
+		public void databaseTypeChanged(String new_database_type);
+	}
+
+	private class DatabaseTypeControl extends JPanel implements Control, DatabaseTypeListener
+	{
+
+		JLabel label = null;
+		JButton change_button = null;
+
+		public DatabaseTypeControl()
+		{
+			super();
+			this.setComponentOrientation(Dictionary.getOrientation());
+
+			JPanel spacer_panel = new JPanel();
+			spacer_panel.setComponentOrientation(Dictionary.getOrientation());
+
+			JPanel main_panel = new JPanel();
+			main_panel.setComponentOrientation(Dictionary.getOrientation());
+			/*
+			 * may be CDM.DatabaseTypeManager.gdbm,
+			 * CDM.DatabaseTypeManager.jdbm, CDM.DatabaseTypeManager.sqlite
+			 */
+			label = new JLabel(Dictionary.get("CDM.DatabaseTypeManager.Current_Type", getDatabaseTypeString(getDatabaseType())));
+			label.setComponentOrientation(Dictionary.getOrientation());
+
+			change_button = new GLIButton(Dictionary.get("CDM.DatabaseTypeManager.Change"), Dictionary.get("CDM.DatabaseTypeManager.Change_Tooltip"));
+
+			change_button.addActionListener(new ActionListener()
+			{
+				public void actionPerformed(ActionEvent event)
+				{
+					promptForNewDatabaseType();
+				}
+			});
+
+			main_panel.setLayout(new BorderLayout(10, 10));
+			main_panel.add(label, BorderLayout.CENTER);
+			main_panel.add(change_button, BorderLayout.LINE_END);
+
+			setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
+			setLayout(new BorderLayout());
+			add(spacer_panel, BorderLayout.CENTER);
+			add(main_panel, BorderLayout.LINE_END);
+
+			manager.addDatabaseTypeListener(this);
+		}
+
+		public void loseFocus()
+		{
+		}
+
+		public void gainFocus()
+		{
+		}
+
+		public void destroy()
+		{
+		}
+
+		private String getDatabaseTypeString(String database_type)
+		{
+			if (database_type.equals(DATABASE_TYPE_GDBM))
+			{
+				return DATABASE_TYPE_GDBM_STR;
+			}
+			if (database_type.equals(DATABASE_TYPE_JDBM))
+			{
+				return DATABASE_TYPE_JDBM_STR;
+			}
+			if (database_type.equals(DATABASE_TYPE_SQLITE))
+			{
+				return DATABASE_TYPE_SQLITE_STR;
+			}
+			return "";
+		}
+
+		public void databaseTypeChanged(String new_database_type)
+		{
+			label.setText(Dictionary.get("CDM.DatabaseTypeManager.Current_Type", getDatabaseTypeString(new_database_type)));
+		}
+	}
+
+	private class DatabaseTypePrompt extends ModalDialog
+	{
+
+		private JDialog self;
+
+		private JRadioButton gdbm_button = null;
+		private JRadioButton jdbm_button = null;
+		private JRadioButton sqlite_button = null;
+
+		private JTextArea description_textarea = null;
+
+		JButton ok_button = null;
+		JButton cancel_button = null;
+
+		public DatabaseTypePrompt(String current_database_type)
+		{
+			super(Gatherer.g_man, true);
+			this.self = this;
+			setSize(DIALOG_SIZE);
+			setTitle(Dictionary.get("CDM.DatabaseTypeManager.Title"));
+			this.setComponentOrientation(Dictionary.getOrientation());
+			gdbm_button = new JRadioButton(DATABASE_TYPE_GDBM_STR);
+			gdbm_button.setComponentOrientation(Dictionary.getOrientation());
+			gdbm_button.setActionCommand(DATABASE_TYPE_GDBM);
+			jdbm_button = new JRadioButton(DATABASE_TYPE_JDBM_STR);
+			jdbm_button.setComponentOrientation(Dictionary.getOrientation());
+			jdbm_button.setActionCommand(DATABASE_TYPE_JDBM);
+			sqlite_button = new JRadioButton(DATABASE_TYPE_SQLITE_STR);
+			sqlite_button.setComponentOrientation(Dictionary.getOrientation());
+			sqlite_button.setActionCommand(DATABASE_TYPE_SQLITE);
+
+			DatabaseTypeButtonListener dtbl = new DatabaseTypeButtonListener();
+			gdbm_button.addActionListener(dtbl);
+			jdbm_button.addActionListener(dtbl);
+			sqlite_button.addActionListener(dtbl);
+
+			ButtonGroup database_type_group = new ButtonGroup();
+			database_type_group.add(gdbm_button);
+			database_type_group.add(jdbm_button);
+			database_type_group.add(sqlite_button);
+
+			if (current_database_type != null)
+			{
+				if (current_database_type.equals(DATABASE_TYPE_GDBM))
+				{
+					gdbm_button.setSelected(true);
+				}
+				else if (current_database_type.equals(DATABASE_TYPE_JDBM))
+				{
+					jdbm_button.setSelected(true);
+				}
+				else if (current_database_type.equals(DATABASE_TYPE_SQLITE))
+				{
+					sqlite_button.setSelected(true);
+				}
+			}
+
+			JPanel radio_pane = new JPanel();
+			radio_pane.setLayout(new GridLayout(3, 1));
+			radio_pane.add(gdbm_button);
+			radio_pane.add(jdbm_button);
+			radio_pane.add(sqlite_button);
+			radio_pane.setComponentOrientation(Dictionary.getOrientation());
+
+			description_textarea = new JTextArea();
+			description_textarea.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+			/*
+			 * may be CDM.DatabaseTypeManager.gdbm_Description,
+			 * CDM.DatabaseTypeManager.jdbm_Description,
+			 * CDM.DatabaseTypeManager.sqlite_Description
+			 */
+			description_textarea.setText(Dictionary.get("CDM.DatabaseTypeManager." + current_database_type + "_Description"));
+			description_textarea.setLineWrap(true);
+			description_textarea.setWrapStyleWord(true);
+			description_textarea.setComponentOrientation(Dictionary.getOrientation());
+
+			cancel_button = new GLIButton(Dictionary.get("General.Cancel"), Dictionary.get("General.Cancel_Tooltip"));
+
+			cancel_button.addActionListener(new ActionListener()
+			{
+				public void actionPerformed(ActionEvent event)
+				{
+					self.dispose();
+				}
+			});
+
+			ok_button = new GLIButton(Dictionary.get("General.OK"), Dictionary.get("General.OK_Tooltip"));
+
+			ok_button.addActionListener(new ActionListener()
+			{
+				public void actionPerformed(ActionEvent event)
+				{
+					String new_database_type = DATABASE_TYPE_GDBM;
+					if (gdbm_button.isSelected())
+					{
+						new_database_type = DATABASE_TYPE_GDBM;
+					}
+					else if (jdbm_button.isSelected())
+					{
+						new_database_type = DATABASE_TYPE_JDBM;
+					}
+					else if (sqlite_button.isSelected())
+					{
+						new_database_type = DATABASE_TYPE_SQLITE;
+					}
+					if (!database_type_meta.getValue(CollectionMeta.TEXT).equals(new_database_type))
+					{
+						manager.notifyListeners(new_database_type);
+						database_type_meta.setValue(new_database_type);
+					}
+					self.dispose();
+				}
+			});
+			// tell the CDM that we have (possibly) changed
+			ok_button.addActionListener(CollectionDesignManager.databasecol_change_listener);
+			JPanel button_pane = new JPanel();
+			button_pane.setLayout(new GridLayout(1, 2));
+			button_pane.add(ok_button);
+			button_pane.add(cancel_button);
+			button_pane.setComponentOrientation(Dictionary.getOrientation());
+
+			JPanel content_pane = (JPanel) getContentPane();
+			content_pane.setOpaque(true);
+			content_pane.setLayout(new BorderLayout());
+			content_pane.add(radio_pane, BorderLayout.NORTH);
+			content_pane.add(new JScrollPane(description_textarea), BorderLayout.CENTER);
+			content_pane.add(button_pane, BorderLayout.SOUTH);
+			content_pane.setComponentOrientation(Dictionary.getOrientation());
+
+			// Center and display.
+			Dimension screen_size = Configuration.screen_size;
+			this.setLocation((screen_size.width - DIALOG_SIZE.width) / 2, (screen_size.height - DIALOG_SIZE.height) / 2);
+			this.setVisible(true); // blocks until the dialog is killed
+
+		}
+
+		public void loseFocus()
+		{
+
+		}
+
+		public void gainFocus()
+		{
+
+		}
+
+		public void destroy()
+		{
+
+		}
+
+		private class DatabaseTypeButtonListener implements ActionListener
+		{
+
+			public void actionPerformed(ActionEvent event)
+			{
+				description_textarea.setText(Dictionary.get("CDM.DatabaseTypeManager." + event.getActionCommand() + "_Description"));
+			}
+		}
+	}
 }
