private void readModulesFromXML(File file){
		try {
	    	  String zipFilename = ""; //null module filename is okay. Module comes up blank.
	    	  String val = "";
	    	  int row = 1; //default
	    	  int col = 1; //default
	    	  
	    	  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	    	  DocumentBuilder db = dbf.newDocumentBuilder();
	    	  Document doc = db.parse(file);
	    	  doc.getDocumentElement().normalize();
	    	  NodeList modules = doc.getElementsByTagName("modules");
	    	  if (modules.getLength() == 0) return;
	    	  modules = modules.item(0).getChildNodes();
	    	  //Loop through all the children of "modules" and add them to the rack.
	    	  for (int i = 0; i < modules.getLength(); i++){
	    		  if (modules.item(i).getNodeType() == Node.ELEMENT_NODE) {
	    			 NodeList module = modules.item(i).getChildNodes();
	    			 for (int j = 0; j < module.getLength(); j++){
	    				 if (module.item(j).getNodeType() == Node.ELEMENT_NODE) {
	    					 if (module.item(j).getNodeName() == "zipFilename"){
	    						 val = module.item(j).getFirstChild().getNodeValue();
	    						 zipFilename = val;
	    					 } else if (module.item(j).getNodeName() == "row") {
	    						 val = module.item(j).getFirstChild().getNodeValue();
	    						 row = Integer.valueOf(val);
	    					 } else if (module.item(j).getNodeName() == "col") {
	    						 val = module.item(j).getFirstChild().getNodeValue();
	    						 col = Integer.valueOf(val);	    					 }		  
	    				 }
	    			 }
	    		     Module m = this.addModule(zipFilename);
	    		     this.moveModule(m, row, col);
	    			
	    		  }  
	    	  }	    				  
	    } catch (Exception e) {
  	  		String msg = "Rack Planner has a problem with the rack xml file: " + file + "\n" +
			"\n" +
			e.getMessage();
	  			JOptionPane.showMessageDialog(this, msg, "Rack XML Problem", JOptionPane.ERROR_MESSAGE);
	  			System.exit(0);
	    }	
		
	}