JPanel create_set_panel(int size_X, int size_Y) {
			
			subpane = new JPanel();
			setpane = new JPanel();
			setpane.setLayout(null);
			setpane.setBackground(bgColor);
			
			// Create Border	       
			lowerededched1 = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
			title1 		  = BorderFactory.createTitledBorder(lowerededched1, rb.getString("SETTING"));
			setpane.setBorder(title1);

			// Setting Display with absolute view
			subpane.setLayout(null);
			subpane.setBackground(Color.WHITE);
			setpane.add(subpane);
			
			//-------------------------------------------------------------------------------------
			// create components
			//-------------------------------------------------------------------------------------
			//   server IP           [      ]
			//   working directory   <Browse>
			//   [                          ]
			//   ---------------------------
			//   [] use previous question 
			//   Directory           <Browse>
			//   ---------------------------
			//   Select a Target Language (Spinner)
			//   ---------------------------
			//   English                  Y
			//   ---------------------------
			
			lab0 = new JLabel(rb.getString("SERVER_IP"));				subpane.add(lab0);
			serverIP  = new JComboBox();								subpane.add(serverIP);
		    labB = new JLabel(rb.getString("BROADCASTING_IP"));         subpane.add(labB);
		    multicasting = new JButton(rb.getString("START"));  		subpane.add(multicasting);
			lab1 = new JLabel(rb.getString("APA_DIR"));					subpane.add(lab1);
			browseDir = new JButton(rb.getString("BROWSE"));			subpane.add(browseDir);
			apacheDirectory = new JTextField(  );						subpane.add(apacheDirectory);
			apacheDirectory.setEditable(false);
			
			multicasting.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
										
					if (multicastingStart) {
						multicastingThread.stopMulticasting();
					}
					else 
					{
						multicastingStart = true;
						multicasting.setText(rb.getString("STOP"));
						try {
							multicastingThread = new MulticastingThread(control_panel);
							multicastingThread.start();
					    }   
					    catch (Exception e){
					        System.err.println("Couldn't start broadcasting.");
					        e.printStackTrace();
					    }
						
					}
				}
			});
			
			//Line1
			JPanel line1 = new JPanel(); 								subpane.add(line1);
			line1.setLayout(new BoxLayout(line1, BoxLayout.PAGE_AXIS));
			line1.add(new JSeparator(SwingConstants.HORIZONTAL));
			line1.setBackground(Color.WHITE);
			
			chkReuse = new JCheckBox(rb.getString("USED_Q_NOTICE"));	subpane.add(chkReuse);
			chkReuse.setBackground(Color.WHITE);
			lab4 = new JLabel(rb.getString("Q_DIR"));		    		subpane.add(lab4);
			questionDirectory = new JTextField("");						subpane.add(questionDirectory);			
			questionDirectory.setEnabled(false);
			questionDirectory.setEditable(false);
			browseDir2 = new JButton(rb.getString("BROWSE"));			subpane.add(browseDir2);
			chkReuse.setSelected(false);
			lab4.setEnabled(false);
			questionDirectory.setEnabled(false);
			browseDir2.setEnabled(false);

			//Line2
			JPanel line2 = new JPanel();								subpane.add(line2);
			line2.setLayout(new BoxLayout(line2, BoxLayout.PAGE_AXIS));
			line2.add(new JSeparator(SwingConstants.HORIZONTAL));
			line2.setBackground(Color.WHITE);
			
			lab2 = new JLabel(rb.getString("SEL_LANG"));				subpane.add(lab2);
			
			String lang = conf.getProperty("LANG");			
			String language_list[] = lang.split(",");			
			spinner1  = new JComboBox(language_list);	
			spinner1.setSelectedIndex(1); // English as default language
			subpane.add(spinner1);
			
			fc = new JFileChooser();
			fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
			
			browseDir.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					
					fc.setCurrentDirectory(new File(apacheDirectory.getText()));
					
					int returnVal = fc.showOpenDialog(MainPanel2.this);
					if (returnVal == JFileChooser.APPROVE_OPTION) {
			            File file = fc.getSelectedFile();
			            apacheDirectory.setText(file.getAbsoluteFile().toString());
					}
				}
			});
			
			browseDir2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					
					fc.setCurrentDirectory(new File(main.getSaveDirectory()));
					boolean file_exists = true;
					
					int returnVal = fc.showOpenDialog(MainPanel2.this);
					if (returnVal == JFileChooser.APPROVE_OPTION) {
			            File dir = fc.getSelectedFile();
			            String filename = mainWindow.export_file_name;
			            
			            // check if exists
			            File f2 = new File(dir.getAbsolutePath() + "/" + filename);
			            if (!f2.exists()) 
			    		{ 	
			            	filename = mainWindow.export_file_oldname;
			    			f2 = new File(dir.getAbsolutePath() + "/" + filename);
			    			if (!f2.exists()) 
			    				file_exists = false;
			    		}
			            
						if (file_exists) {
							check_settings();
							questionDirectory.setText(dir.getAbsoluteFile().toString());
							boolean ret = main.import_questions(dir.getAbsoluteFile().toString(), filename);
							if(ret)
							{
								setImportEnabled(false); 
								browseDir2.setEnabled(false);
								questionDirectory.setEnabled(false);
								lab4.setEnabled(false);
								setSolveEnabled(true); 
								setStartSeesionEnabled(true); 
							}
							else 
							{
								setImportEnabled(true); 
								setMakeEnabled(false);				    		
							}
						}
						else {
							questionDirectory.setText("");
							setHelpMsg(rb.getString("ERROR_BROWSE_PREV"));
						} 
					}
				}
			});					
			
			serverIP.setEditable(true);
			serverIP.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent a) {
					currentIP =  (String)serverIP.getSelectedItem();
					System.out.println("CurrentIP:" + currentIP + "\n" );
		
				}
			});		
			
			chkReuse.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent a) {
					boolean b = chkReuse.isSelected();
					browseDir2.setEnabled(b);
					questionDirectory.setEnabled(b);
					lab4.setEnabled(b);
					if (!b) 
					{ 
						 setMakeEnabled(true);
						 //btnMakeQuestion.setText(rb.getString("START_MK_Q"));
					}
					else {
						setMakeEnabled(false);
						//btnMakeQuestion.setText(rb.getString("START_MK_Q_SKIP"));
					}
				}
			});
					
			spinner1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent a) {
					current_language = (String) spinner1.getSelectedItem();
					System.out.println("Current_language:" + current_language + "\n" );
					
					set_locale(current_language);					
				}
				
			});
			
			int x_gap_init = 5; // 10
			int y_gap_init = 10; // 20
			int x_gap = 5;
			int y_gap = 10;
			int x_size = 110; int grid_x_size = x_gap + x_size;
			int y_size = 25;
			setGridInfo(x_gap_init, y_gap_init, grid_x_size, y_size + y_gap);  // size of grid
			lab0.setBounds(gridX(0), gridY(0), x_size, y_size);  
			serverIP.setBounds(gridX(1), gridY(0), x_size, y_size);
			labB.setBounds(gridX(0), gridY(1), x_size, y_size); 
			multicasting.setBounds(gridX(1), gridY(1), x_size, y_size);
			lab1.setBounds( gridX(0), gridY(2), x_size, y_size); 
			browseDir.setBounds(gridX(1), gridY(2), x_size, y_size );
			apacheDirectory.setBounds( gridX(0), gridY(3), 2*x_size + x_gap, y_size);
			
			line1.setBounds(gridX(0), gridY(4), 2*x_size + x_gap, (int) (y_size*0.2));
			chkReuse.setBounds(gridX(0), gridY(4.3), 2*x_size + x_gap, y_size);
			lab4.setBounds(gridX(0), gridY(5.3), x_size, y_size); 
			browseDir2.setBounds(gridX(1), gridY(5.3), x_size, y_size);
			questionDirectory.setBounds( gridX(0), gridY(6.3), 2*x_size + x_gap, y_size);
			
			
			line2.setBounds(gridX(0), gridY(7.3), 2*x_size + x_gap, (int) (y_size*0.2));
			
			lab2.setBounds(gridX(0), gridY(7.6), 2*x_size + x_gap, y_size);
			spinner1.setBounds(gridX(0), gridY(8.6), x_size+30, y_size); // 
			setImportEnabled(false);
			
			// locate subpane inside outpane
			Insets i = title1.getBorderInsets(setpane); 
			subpane.setBounds(i.left, i.top, size_X - (i.left + i.right), size_Y - (i.top + i.bottom));
			
			return setpane;
		}