Index: src/panels/com/jboss/jbds/installer/IChangeListener.java
===================================================================
--- src/panels/com/jboss/jbds/installer/IChangeListener.java	(revision 0)
+++ src/panels/com/jboss/jbds/installer/IChangeListener.java	(revision 0)
@@ -0,0 +1,5 @@
+package com.jboss.jbds.installer;
+
+public interface IChangeListener {
+	public void change();
+}
Index: src/panels/com/jboss/jbds/installer/JREPathPanel.java
===================================================================
--- src/panels/com/jboss/jbds/installer/JREPathPanel.java	(revision 9396)
+++ src/panels/com/jboss/jbds/installer/JREPathPanel.java	(working copy)
@@ -1,5 +1,7 @@
 package com.jboss.jbds.installer;
 
+import java.awt.Color;
+import java.awt.Dimension;
 import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -7,8 +9,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringReader;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.Properties;
 import java.util.Set;
 
@@ -23,7 +23,6 @@
 import com.izforge.izpack.gui.IzPanelLayout;
 import com.izforge.izpack.installer.InstallData;
 import com.izforge.izpack.installer.InstallerFrame;
-import com.izforge.izpack.installer.Unpacker;
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.FileExecutor;
 import com.izforge.izpack.util.OsVersion;
@@ -33,7 +32,7 @@
 
 
 
-public class JREPathPanel extends PathInputPanel
+public class JREPathPanel extends PathInputPanel implements IChangeListener
 {
 	public static final String DATA_MODEL_VAR = "DATA_MODEL";
 	private static final long serialVersionUID = 1256443616359329172L;
@@ -75,6 +74,7 @@
 	JPanel headPanel = new JPanel();
 	private JRadioButton option1, option2;
 	private ButtonGroup archGroup;
+	private JLabel messageLabel;
 
     
     public JREPathPanel(InstallerFrame parent, InstallData idata)
@@ -114,8 +114,9 @@
         	}
         });
 		headPanel.setLayout(new GridLayout(3,1));
-		
-		if(OsVersion.IS_OSX && "universal".equals(idata.getVariable("PACK_NAME"))) {
+		pathSelectionPanel.addChangeListener(this);
+		 
+		if(true/*"universal".equals(idata.getVariable("PACK_NAME"))*/) {
 			JLabel label = new JLabel(parent.langpack.getString("JREPathPanel.dataModel.title"));
 			
 			headPanel.add(label);
@@ -142,8 +143,29 @@
 			archGroup = new ButtonGroup();
 			archGroup.add(option1);
 			archGroup.add(option2);
+			
+			if(!OsVersion.IS_OSX){
+				option1.setEnabled(false);
+				option2.setEnabled(false);
+			}
 		}
 		add(headPanel, NEXT_LINE);
+		
+		messageLabel = new JLabel(""){
+			public Dimension getPreferredSize() {
+                return new Dimension(500, 200);
+            }
+            public Dimension getMinimumSize() {
+                return new Dimension(500, 200);
+            }
+            public Dimension getMaximumSize() {
+                return new Dimension(500, 200);
+            }
+		};
+		messageLabel.setVerticalAlignment(TOP);
+		messageLabel.setHorizontalAlignment(LEFT);
+		add(messageLabel, NEXT_LINE);
+		
         createLayoutBottom();
         getLayoutHelper().completeLayout();
     	// // //
@@ -217,18 +239,23 @@
     public void panelActivate()
     {
         super.panelActivate();
-        String chosenPath="";
+        updateJava(true);
+    }
+    
+    private void updateJava(boolean setPath){
+    	String chosenPath="";
         
         chosenPath = idata.getVariable(getVariableName());
         if(chosenPath == null || "".equals(chosenPath))
         	chosenPath = new File(idata.getVariable("JAVA_HOME")).getPath();
-        
-        pathSelectionPanel.setPath(chosenPath);
+        if(setPath){
+        	pathSelectionPanel.setPath(chosenPath);
+        }
         idata.setVariable(getVariableName(),chosenPath);
 		Properties properties = new Properties();
 		verifyVersion(properties);
 
-		if(OsVersion.IS_OSX && "universal".equals(idata.getVariable("PACK_NAME")) && idata.getVariable(DATA_MODEL_VAR)==null) {
+		if(/*"universal".equals(idata.getVariable("PACK_NAME")) &&*/ idata.getVariable(DATA_MODEL_VAR)==null) {
 			String dataArch = properties.getProperty("sun.arch.data.model");
 			option1.setSelected("32".equals(dataArch));
 			option2.setSelected("64".equals(dataArch));
@@ -331,4 +358,22 @@
 			return reader.read();
 		}	
     }
+    
+    public void change(){
+    	pathSelectionPanel.removeChangeListener();
+    	messageLabel.setText("");
+    	if(pathIsValid()){
+    		updateJava(false);
+    		if((OsVersion.IS_WINDOWS || OsVersion.IS_OSX) && option2.isSelected()){
+    			messageLabel.setText(parent.langpack.getString("JREPathPanel.VPEdoesNotSupportJava64.title"));
+        		messageLabel.setForeground(Color.black);
+    		}
+    		
+    	}else{
+    		messageLabel.setText(parent.langpack.getString("JREPathPanel.wrongPath.title"));
+    		messageLabel.setForeground(Color.red);
+    	}
+    	
+    	pathSelectionPanel.addChangeListener(this);
+    }
 }
Index: src/panels/com/jboss/jbds/installer/PathSelectionPanel.java
===================================================================
--- src/panels/com/jboss/jbds/installer/PathSelectionPanel.java	(revision 9396)
+++ src/panels/com/jboss/jbds/installer/PathSelectionPanel.java	(working copy)
@@ -9,6 +9,8 @@
 import javax.swing.JFileChooser;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
 
 import com.izforge.izpack.gui.ButtonFactory;
 import com.izforge.izpack.gui.IzPanelConstraints;
@@ -87,6 +89,24 @@
         ipc.setXStretch(1.0);
         textField = new JTextField(idata.getInstallPath(), 40);
         textField.addActionListener(this);
+        textField.getDocument().addDocumentListener(new DocumentListener(){
+
+			@Override
+			public void changedUpdate(DocumentEvent arg0) {
+				fireChange();
+			}
+
+			@Override
+			public void insertUpdate(DocumentEvent arg0) {
+				fireChange();
+			}
+
+			@Override
+			public void removeUpdate(DocumentEvent arg0) {
+				fireChange();
+			}
+        	
+        });
         parent.setInitialFocus(textField);
         add(textField,ipc);
         // We would have place between text field and button.
@@ -132,7 +152,7 @@
     public void actionPerformed(ActionEvent e)
     {
         Object source = e.getSource();
-
+        
         if (source == browseButton)
         {
             // The user wants to browse its filesystem
@@ -200,5 +220,19 @@
     {
         return browseButton;
     }
-
+    IChangeListener listener = null;
+    
+    public void addChangeListener(IChangeListener listener){
+    	this.listener = listener;
+    }
+    
+    public void removeChangeListener(){
+    	listener = null;
+    }
+    
+    private void fireChange(){
+    	if(listener != null){
+    		listener.change();
+    	}
+    }
 }
