http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/c308e976/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/launch/HadoopLocationWizard.java
----------------------------------------------------------------------
diff --git 
a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/launch/HadoopLocationWizard.java
 
b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/launch/HadoopLocationWizard.java
index bcf5944..c21ce79 100644
--- 
a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/launch/HadoopLocationWizard.java
+++ 
b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/launch/HadoopLocationWizard.java
@@ -20,16 +20,14 @@ package org.apache.hdt.ui.internal.launch;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
 
+import javax.swing.event.ChangeEvent;
+
+import org.apache.hdt.core.HadoopVersion;
 import org.apache.hdt.core.internal.hdfs.HDFSManager;
 import org.apache.hdt.core.launch.AbstractHadoopCluster;
+import org.apache.hdt.core.launch.AbstractHadoopCluster.ChangeListener;
+import 
org.apache.hdt.core.launch.AbstractHadoopCluster.HadoopConfigurationBuilder;
 import org.apache.hdt.core.launch.ConfProp;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
@@ -39,25 +37,18 @@ import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 
 /**
@@ -69,9 +60,7 @@ import org.eclipse.swt.widgets.Text;
  */
 
 public class HadoopLocationWizard extends WizardPage {
-
-       public  static final String HADOOP_1 = "1.1";
-       public  static final String HADOOP_2 = "2.2";
+       
        Image circle;
 
        /**
@@ -85,6 +74,8 @@ public class HadoopLocationWizard extends WizardPage {
         * instance).
         */
        private AbstractHadoopCluster original;
+       private Text locationName;
+       private Combo hadoopVersion;
 
        /**
         * New Hadoop location wizard
@@ -94,7 +85,7 @@ public class HadoopLocationWizard extends WizardPage {
 
                this.original = null;
                try {
-                       this.location = 
AbstractHadoopCluster.createCluster(ConfProp.PI_HADOOP_VERSION.defVal);
+                       this.location = 
AbstractHadoopCluster.createCluster(HadoopVersion.Version1.getDisplayName());
                } catch (CoreException e) {
                        e.printStackTrace();
                }
@@ -110,7 +101,7 @@ public class HadoopLocationWizard extends WizardPage {
                super("Create a new Hadoop location", "Edit Hadoop Location", 
null);
                this.original = server;
                try {
-                       this.location = 
AbstractHadoopCluster.createCluster(server);
+                       this.location = 
AbstractHadoopCluster.createCluster(server.getVersion().getDisplayName());
                } catch (CoreException e) {
                        e.printStackTrace();
                }
@@ -130,7 +121,7 @@ public class HadoopLocationWizard extends WizardPage {
                                        public void run() {
                                                
HDFSManager.addServer(location.getLocationName(),
                                                                
location.getConfPropValue(ConfProp.FS_DEFAULT_URI), location
-                                                               
.getConfPropValue(ConfProp.PI_USER_NAME), null,location.getVersion());
+                                                               
.getConfPropValue(ConfProp.PI_USER_NAME), 
null,location.getVersion().getDisplayName());
                                        }
                                });
                                // New location
@@ -165,7 +156,7 @@ public class HadoopLocationWizard extends WizardPage {
                                                        }
                                                        
HDFSManager.addServer(location.getLocationName(),
                                                                        
location.getConfPropValue(ConfProp.FS_DEFAULT_URI), location
-                                                                       
.getConfPropValue(ConfProp.PI_USER_NAME), null,location.getVersion());
+                                                                       
.getConfPropValue(ConfProp.PI_USER_NAME), 
null,location.getVersion().getDisplayName());
                                                }
                                        });
                                }
@@ -264,21 +255,100 @@ public class HadoopLocationWizard extends WizardPage {
         * Create the wizard
         */
        /* @inheritDoc */
-       public void createControl(Composite parent) {
+       public void createControl(final Composite parent) {
                setTitle("Define Hadoop location");
                setDescription("Define the location of a Hadoop infrastructure 
" + "for running MapReduce applications.");
 
-               Composite panel = new Composite(parent, SWT.FILL);
+               final Composite panel = new Composite(parent, SWT.FILL);
                GridLayout glayout = new GridLayout(2, false);
                panel.setLayout(glayout);
+               final HadoopConfigurationBuilder uiConfigurationBuilder = 
location.getUIConfigurationBuilder();
+               uiConfigurationBuilder.setChangeListener(new ChangeListener() {
+                       
+                       @Override
+                       public void notifyChange(ConfProp prop, String 
propValue) {
+                               Display.getDefault().syncExec(new Runnable() {
+                                       public void run() {
+                                                getContainer().updateButtons();
+                                       }});
+                       }
+               });
+               /*
+                * Location name
+                */
+               {
+                       Label label = new Label(panel, SWT.NONE);
+                       label.setText( "&Location name:");
+                       Text text = new Text(panel, SWT.SINGLE | SWT.BORDER);
+                       GridData data = new GridData(GridData.FILL_HORIZONTAL);
+                       text.setLayoutData(data);
+                       
text.setText(location.getConfPropValue(ConfProp.PI_LOCATION_NAME));
+                       text.addModifyListener(new ModifyListener() {
+                               @Override
+                               public void modifyText(ModifyEvent e) {
+                                       final Text text = (Text) e.widget;
+                                       final ConfProp prop = (ConfProp) 
text.getData("hProp");
+                                       Display.getDefault().syncExec(new 
Runnable() {
+                                               public void run() {
+                                                       
uiConfigurationBuilder.notifyChange(ConfProp.PI_LOCATION_NAME,text.getText());
+                                               }
+                                       });
+                               }
+                       });
+                       locationName=text;
+               }
+               /*
+                * Hadoop version
+                */
+               {
+                       Label label = new Label(panel, SWT.NONE);
+                       label.setText("&Hadoop Version:");
+                       Combo options = new Combo(panel, SWT.BORDER | 
SWT.READ_ONLY);
+                       for(HadoopVersion ver:HadoopVersion.values()){
+                               options.add(ver.getDisplayName());
+                       }
+                       int pos=0;
+                       for(String item:options.getItems()){
+                               
if(item.equalsIgnoreCase(location.getVersion().getDisplayName())){
+                                       options.select(pos);
+                                       break;
+                               }
+                               pos++;
+                       }
+                       options.setLayoutData(new 
GridData(GridData.FILL_HORIZONTAL));
+                       options.addListener(SWT.Selection, new Listener() {
+                               @Override
+                               public void handleEvent(Event event) {
+                                       final String selection = 
hadoopVersion.getText();
+                                       if (location == null || 
!selection.equals(location.getVersion())) {
+                                               
Display.getDefault().syncExec(new Runnable() {
+                                                       @Override
+                                                       public void run() {
+                                                               try {
+                                                                       
location = AbstractHadoopCluster.createCluster(selection);
+                                                                       
location.setConfPropValue(ConfProp.PI_HADOOP_VERSION, selection);
+                                                                       
location.setConfPropValue(ConfProp.PI_LOCATION_NAME, locationName.getText());
+                                                                       
panel.dispose();
+                                                                       
createControl(parent);
+                                                                       
parent.pack();
+                                                                       
parent.getParent().layout(true);
+                                                               } catch 
(CoreException e) {
+                                                                       
MessageDialog.openError(Display.getDefault().getActiveShell(), "HDFS Error", 
"Unable to create HDFS site :"
+                                                                               
        + e.getMessage());
+                                                               }
+                                                       }
+                                               });
+                                       }
 
-               TabMediator mediator = new TabMediator(panel);
+                               }
+                       });
+                       hadoopVersion=options;
+               }
                {
-                       GridData gdata = new GridData(GridData.FILL_BOTH);
-                       gdata.horizontalSpan = 2;
-                       mediator.folder.setLayoutData(gdata);
+                       uiConfigurationBuilder.buildControl(panel);
+                       this.setControl(panel);
                }
-               this.setControl(panel /* mediator.folder */);
+               
                {
                        final Button btn = new Button(panel, SWT.NONE);
                        btn.setText("&Load from file");
@@ -301,739 +371,8 @@ public class HadoopLocationWizard extends WizardPage {
                                }
                        });
                }
-       }
-
-       private interface TabListener {
-               void notifyChange(ConfProp prop, String propValue);
-               void reloadData();
-       }
-
-       /*
-        * Mediator pattern to keep tabs synchronized with each other and with 
the
-        * location state.
-        */
-
-       private class TabMediator {
-               TabFolder folder;
-
-               private Set<TabListener> tabs = new HashSet<TabListener>();
-
-               TabMediator(Composite parent) {
-                       folder = new TabFolder(parent, SWT.NONE);
-                       tabs.add(new TabMain(this));
-                       tabs.add(new TabAdvanced(this));
-               }
-
-               /**
-                * Implements change notifications from any tab: update the 
location
-                * state and other tabs
-                * 
-                * @param source
-                *            origin of the notification (one of the tree tabs)
-                * @param propName
-                *            modified property
-                * @param propValue
-                *            new value
-                */
-               void notifyChange(TabListener source, final ConfProp prop, 
final String propValue) {
-                       // Ignore notification when no change
-                       String oldValue = location.getConfPropValue(prop);
-                       if ((oldValue != null) && oldValue.equals(propValue))
-                               return;
-
-                       location.setConfPropValue(prop, propValue);
-                       Display.getDefault().syncExec(new Runnable() {
-                               public void run() {
-                                       getContainer().updateButtons();
-                               }
-                       });
-
-                       this.fireChange(source, prop, propValue);
-
-                       /*
-                        * Now we deal with dependencies between settings
-                        */
-                       final String jobTrackerHost = 
location.getConfPropValue(ConfProp.PI_JOB_TRACKER_HOST);
-                       final String jobTrackerPort = 
location.getConfPropValue(ConfProp.PI_JOB_TRACKER_PORT);
-                       final String nameNodeHost = 
location.getConfPropValue(ConfProp.PI_NAME_NODE_HOST);
-                       final String nameNodePort = 
location.getConfPropValue(ConfProp.PI_NAME_NODE_PORT);
-                       final boolean colocate = 
location.getConfPropValue(ConfProp.PI_COLOCATE_MASTERS).equalsIgnoreCase("yes");
-                       final String jobTrackerURI = 
location.getConfPropValue(ConfProp.JOB_TRACKER_URI) ;
-                       final String fsDefaultURI = 
location.getConfPropValue(ConfProp.FS_DEFAULT_URI);
-                       final String socksServerURI = 
location.getConfPropValue(ConfProp.SOCKS_SERVER);
-                       final boolean socksProxyEnable = 
location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_ENABLE).equalsIgnoreCase("yes");
-                       final String socksProxyHost = 
location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_HOST);
-                       final String socksProxyPort = 
location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_PORT);
-
-                       Display.getDefault().syncExec(new Runnable() {
-                               public void run() {
-                                       switch (prop) {
-                                       case PI_JOB_TRACKER_HOST: {
-                                               if (colocate)
-                                                       notifyChange(null, 
ConfProp.PI_NAME_NODE_HOST, jobTrackerHost);
-                                               String newJobTrackerURI = 
String.format("%s:%s", jobTrackerHost, jobTrackerPort);
-                                               notifyChange(null, 
ConfProp.JOB_TRACKER_URI, newJobTrackerURI);
-                                               break;
-                                       }
-                                       case PI_JOB_TRACKER_PORT: {
-                                               String newJobTrackerURI = 
String.format("%s:%s", jobTrackerHost, jobTrackerPort);
-                                               notifyChange(null, 
ConfProp.JOB_TRACKER_URI, newJobTrackerURI);
-                                               break;
-                                       }
-                                       case PI_NAME_NODE_HOST: {
-                                               String newHDFSURI = 
String.format("hdfs://%s:%s/", nameNodeHost, nameNodePort);
-                                               notifyChange(null, 
ConfProp.FS_DEFAULT_URI, newHDFSURI);
-
-                                               // Break colocation if someone 
force the DFS Master
-                                               if (!colocate && 
!nameNodeHost.equals(jobTrackerHost))
-                                                       notifyChange(null, 
ConfProp.PI_COLOCATE_MASTERS, "no");
-                                               break;
-                                       }
-                                       case PI_NAME_NODE_PORT: {
-                                               String newHDFSURI = 
String.format("hdfs://%s:%s/", nameNodeHost, nameNodePort);
-                                               notifyChange(null, 
ConfProp.FS_DEFAULT_URI, newHDFSURI);
-                                               break;
-                                       }
-                                       case PI_SOCKS_PROXY_HOST: {
-                                               String newSocksProxyURI = 
String.format("%s:%s", socksProxyHost, socksProxyPort);
-                                               notifyChange(null, 
ConfProp.SOCKS_SERVER, newSocksProxyURI);
-                                               break;
-                                       }
-                                       case PI_SOCKS_PROXY_PORT: {
-                                               String newSocksProxyURI = 
String.format("%s:%s", socksProxyHost, socksProxyPort);
-                                               notifyChange(null, 
ConfProp.SOCKS_SERVER, newSocksProxyURI);
-                                               break;
-                                       }
-                                       case JOB_TRACKER_URI: {
-                                               String[] strs = 
jobTrackerURI.split(":", 2);
-                                               String host = strs[0];
-                                               String port = (strs.length == 
2) ? strs[1] : "";
-                                               notifyChange(null, 
ConfProp.PI_JOB_TRACKER_HOST, host);
-                                               notifyChange(null, 
ConfProp.PI_JOB_TRACKER_PORT, port);
-                                               break;
-                                       }
-                                       case FS_DEFAULT_URI: {
-                                               try {
-                                                       URI uri = new 
URI(fsDefaultURI);
-                                                       if 
(uri.getScheme().equals("hdfs")) {
-                                                               String host = 
uri.getHost();
-                                                               String port = 
Integer.toString(uri.getPort());
-                                                               
notifyChange(null, ConfProp.PI_NAME_NODE_HOST, host);
-                                                               
notifyChange(null, ConfProp.PI_NAME_NODE_PORT, port);
-                                                       }
-                                               } catch (URISyntaxException 
use) {
-                                                       // Ignore the update!
-                                               }
-                                               break;
-                                       }
-                                       case SOCKS_SERVER: {
-                                               String[] strs = 
socksServerURI.split(":", 2);
-                                               String host = strs[0];
-                                               String port = (strs.length == 
2) ? strs[1] : "";
-                                               notifyChange(null, 
ConfProp.PI_SOCKS_PROXY_HOST, host);
-                                               notifyChange(null, 
ConfProp.PI_SOCKS_PROXY_PORT, port);
-                                               break;
-                                       }
-                                       case PI_COLOCATE_MASTERS: {
-                                               if (colocate)
-                                                       notifyChange(null, 
ConfProp.PI_NAME_NODE_HOST, jobTrackerHost);
-                                               break;
-                                       }
-                                       case PI_SOCKS_PROXY_ENABLE: {
-                                               if (socksProxyEnable) {
-                                                       notifyChange(null, 
ConfProp.SOCKET_FACTORY_DEFAULT, "org.apache.hadoop.net.SocksSocketFactory");
-                                               } else {
-                                                       notifyChange(null, 
ConfProp.SOCKET_FACTORY_DEFAULT, "org.apache.hadoop.net.StandardSocketFactory");
-                                               }
-                                               break;
-                                       }                                       
-                                       }
-                               }
-                       });
-
-               }
-
-               /**
-                * Change notifications on properties (by name). A property 
might not be
-                * reflected as a ConfProp enum. If it is, the notification is 
forwarded
-                * to the ConfProp notifyChange method. If not, it is processed 
here.
-                * 
-                * @param source
-                * @param propName
-                * @param propValue
-                */
-               void notifyChange(TabListener source, String propName, String 
propValue) {
-                       ConfProp prop = location.getConfPropForName(propName);
-                       if (prop != null)
-                               notifyChange(source, prop, propValue);
-                       else
-                               location.setConfPropValue(propName, propValue);
-               }
-
-               /**
-                * Broadcast a property change to all registered tabs. If a tab 
is
-                * identified as the source of the change, this tab will not be
-                * notified.
-                * 
-                * @param source
-                *            TODO
-                * @param prop
-                * @param value
-                */
-               private void fireChange(TabListener source, ConfProp prop, 
String value) {
-                       for (TabListener tab : tabs) {
-                               if (tab != source)
-                                       tab.notifyChange(prop, value);
-                       }
-               }
-
-       }
-
-       /**
-        * Create a SWT Text component for the given {@link ConfProp} text
-        * configuration property.
-        * 
-        * @param listener
-        * @param parent
-        * @param prop
-        * @return
-        */
-       private Text createConfText(ModifyListener listener, Composite parent, 
ConfProp prop) {
-               Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-               GridData data = new GridData(GridData.FILL_HORIZONTAL);
-               text.setLayoutData(data);
-               text.setData("hProp",prop);
-               text.setText(location.getConfPropValue(prop));
-               text.addModifyListener(listener);
-
-               return text;
-       }
-
-       /**
-        * Create a SWT Checked Button component for the given {@link ConfProp}
-        * boolean configuration property.
-        * 
-        * @param listener
-        * @param parent
-        * @param prop
-        * @return
-        */
-       private Button createConfCheckButton(SelectionListener listener, 
Composite parent, ConfProp prop, String text) {
-               Button button = new Button(parent, SWT.CHECK);
-               button.setText(text);
-               button.setData("hProp", prop);
-               
button.setSelection(location.getConfPropValue(prop).equalsIgnoreCase("yes"));
-               button.addSelectionListener(listener);
-               return button;
-       }
-
-       /**
-        * Create editor entry for the given configuration property. The editor 
is a
-        * couple (Label, Text).
-        * 
-        * @param listener
-        *            the listener to trigger on property change
-        * @param parent
-        *            the SWT parent container
-        * @param prop
-        *            the property to create an editor for
-        * @param labelText
-        *            a label (null will defaults to the property name)
-        * 
-        * @return a SWT Text field
-        */
-       private Text createConfLabelText(ModifyListener listener, Composite 
parent, ConfProp prop, String labelText) {
-               Label label = new Label(parent, SWT.NONE);
-               if (labelText == null)
-                       labelText = location.getConfPropName(prop);
-               label.setText(labelText);
-               return createConfText(listener, parent, prop);
-       }
-
-       /**
-        * Create an editor entry for the given configuration name
-        * 
-        * @param listener
-        *            the listener to trigger on property change
-        * @param parent
-        *            the SWT parent container
-        * @param propName
-        *            the name of the property to create an editor for
-        * @param labelText
-        *            a label (null will defaults to the property name)
-        * 
-        * @return a SWT Text field
-        */
-       private Text createConfNameEditor(ModifyListener listener, Composite 
parent, String propName, String labelText) {
-
-               {
-                       ConfProp prop = location.getConfPropForName(propName);
-                       if (prop != null)
-                               return createConfLabelText(listener, parent, 
prop, labelText);
-               }
-
-               Label label = new Label(parent, SWT.NONE);
-               if (labelText == null)
-                       labelText = propName;
-               label.setText(labelText);
-
-               Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-               GridData data = new GridData(GridData.FILL_HORIZONTAL);
-               text.setLayoutData(data);
-               text.setData("hPropName", propName);
-               text.setText(location.getConfPropValue(propName));
-               text.addModifyListener(listener);
-
-               return text;
-       }
-
-       /**
-        * Main parameters of the Hadoop location: <li>host and port of the
-        * Map/Reduce master (Job tracker) <li>host and port of the DFS master 
(Name
-        * node) <li>SOCKS proxy
-        */
-       private class TabMain implements TabListener, ModifyListener, 
SelectionListener {
-
-               /**
-                * 
-                */
                
-
-               TabMediator mediator;
-
-               Text locationName;
-               
-               Combo hadoopVersion;
-
-               Text textJTHost;
-               
-
-               Text textNNHost;
-
-               Button colocateMasters;
-
-               Text textJTPort;
-
-               Text textNNPort;
-
-               Text userName;
-
-               Button useSocksProxy;
-
-               Text socksProxyHost;
-
-               Text socksProxyPort;
-
-               private Group groupMR;
-
-               TabMain(TabMediator mediator) {
-                       this.mediator = mediator;
-                       TabItem tab = new TabItem(mediator.folder, SWT.NONE);
-                       tab.setText("General");
-                       tab.setToolTipText("General location parameters");
-                       tab.setImage(circle);
-                       tab.setControl(createControl(mediator.folder));
-               }
-
-               private Control createControl(Composite parent) {
-
-                       Composite panel = new Composite(parent, SWT.FILL);
-                       panel.setLayout(new GridLayout(2, false));
-
-                       GridData data;
-
-                       /*
-                        * Location name
-                        */
-                       {
-                               Composite subpanel = new Composite(panel, 
SWT.FILL);
-                               subpanel.setLayout(new GridLayout(2, false));
-                               data = new GridData();
-                               data.horizontalSpan = 2;
-                               data.horizontalAlignment = SWT.FILL;
-                               subpanel.setLayoutData(data);
-
-                               locationName = createConfLabelText(this, 
subpanel, ConfProp.PI_LOCATION_NAME, "&Location name:");
-                       }
-                       /*
-                        * Hadoop version
-                        */
-                       {
-                               Composite subpanel = new Composite(panel, 
SWT.FILL);
-                               subpanel.setLayout(new GridLayout(2, false));
-                               data = new GridData();
-                               data.horizontalSpan = 2;
-                               data.horizontalAlignment = SWT.FILL;
-                               subpanel.setLayoutData(data);
-                               
-                               Label label = new Label(subpanel, SWT.NONE);
-                               label.setText("&Hadoop Version:");
-                               Combo options =  new Combo (subpanel, 
SWT.BORDER | SWT.READ_ONLY);
-                               options.add (HADOOP_1);
-                               options.add (HADOOP_2);
-                               options.select(0);
-                               options.setLayoutData(new 
GridData(GridData.FILL_HORIZONTAL));
-                               options.addListener (SWT.Selection, new 
Listener () {
-                                       @Override
-                                       public void handleEvent(Event event) {
-                                               final String selection = 
hadoopVersion.getText();
-                                               if (location == null || 
!selection.equals(location.getVersion())) {
-                                                       
Display.getDefault().syncExec(new Runnable() {
-
-                                                               @Override
-                                                               public void 
run() {
-                                                                       try {
-                                                                               
location = AbstractHadoopCluster.createCluster(selection);
-                                                                               
location.setConfPropValue(ConfProp.PI_HADOOP_VERSION, selection);
-                                                                               
location.setConfPropValue(ConfProp.PI_LOCATION_NAME, "");
-                                                                               
for (TabListener tab : mediator.tabs) {
-                                                                               
        tab.reloadData();
-                                                                               
}
-                                                                       } catch 
(CoreException e) {
-                                                                               
MessageDialog.openError(Display.getDefault().getActiveShell(), "HDFS Error", 
"Unable to create HDFS site :"
-                                                                               
                + e.getMessage());
-                                                                       }
-                                                               }
-                                                       });
-                                               }
-
-                                       }
-                               });
-                               hadoopVersion = options;
-                       }
-                       
-                       /*
-                        * Map/Reduce group
-                        */
-                       {
-                               groupMR = new Group(panel, SWT.SHADOW_NONE);
-                               groupMR.setText("Map/Reduce Master");
-                               groupMR.setToolTipText("Address of the 
Map/Reduce master node " + "(the Job Tracker).");
-                               GridLayout layout = new GridLayout(2, false);
-                               groupMR.setLayout(layout);
-                               data = new GridData();
-                               data.verticalAlignment = SWT.FILL;
-                               data.horizontalAlignment = SWT.CENTER;
-                               data.widthHint = 250;
-                               groupMR.setLayoutData(data);
-
-                               // Job Tracker host
-                               Label label = new Label(groupMR, SWT.NONE);
-                               label.setText("Host:");
-                               data = new GridData(GridData.BEGINNING, 
GridData.CENTER, false, true);
-                               label.setLayoutData(data);
-
-                               textJTHost = createConfText(this, groupMR, 
ConfProp.PI_JOB_TRACKER_HOST);
-                               data = new GridData(GridData.FILL, 
GridData.CENTER, true, true);
-                               textJTHost.setLayoutData(data);
-
-                               // Job Tracker port
-                               label = new Label(groupMR, SWT.NONE);
-                               label.setText("Port:");
-                               data = new GridData(GridData.BEGINNING, 
GridData.CENTER, false, true);
-                               label.setLayoutData(data);
-
-                               textJTPort = createConfText(this, groupMR, 
ConfProp.PI_JOB_TRACKER_PORT);
-                               data = new GridData(GridData.FILL, 
GridData.CENTER, true, true);
-                               textJTPort.setLayoutData(data);
-                       }
-
-                       /*
-                        * DFS group
-                        */
-                       {
-                               Group groupDFS = new Group(panel, 
SWT.SHADOW_NONE);
-                               groupDFS.setText("DFS Master");
-                               groupDFS.setToolTipText("Address of the 
Distributed FileSystem " + "master node (the Name Node).");
-                               GridLayout layout = new GridLayout(2, false);
-                               groupDFS.setLayout(layout);
-                               data = new GridData();
-                               data.horizontalAlignment = SWT.CENTER;
-                               data.widthHint = 250;
-                               groupDFS.setLayoutData(data);
-
-                               colocateMasters = createConfCheckButton(this, 
groupDFS, ConfProp.PI_COLOCATE_MASTERS, "Use M/R Master host");
-                               data = new GridData();
-                               data.horizontalSpan = 2;
-                               colocateMasters.setLayoutData(data);
-
-                               // Job Tracker host
-                               Label label = new Label(groupDFS, SWT.NONE);
-                               data = new GridData();
-                               label.setText("Host:");
-                               label.setLayoutData(data);
-
-                               textNNHost = createConfText(this, groupDFS, 
ConfProp.PI_NAME_NODE_HOST);
-
-                               // Job Tracker port
-                               label = new Label(groupDFS, SWT.NONE);
-                               data = new GridData();
-                               label.setText("Port:");
-                               label.setLayoutData(data);
-
-                               textNNPort = createConfText(this, groupDFS, 
ConfProp.PI_NAME_NODE_PORT);
-                       }
-
-                       {
-                               Composite subpanel = new Composite(panel, 
SWT.FILL);
-                               subpanel.setLayout(new GridLayout(2, false));
-                               data = new GridData();
-                               data.horizontalSpan = 2;
-                               data.horizontalAlignment = SWT.FILL;
-                               subpanel.setLayoutData(data);
-
-                               userName = createConfLabelText(this, subpanel, 
ConfProp.PI_USER_NAME, "&User name:");
-                       }
-
-                       // SOCKS proxy group
-                       {
-                               Group groupSOCKS = new Group(panel, 
SWT.SHADOW_NONE);
-                               groupSOCKS.setText("SOCKS proxy");
-                               groupSOCKS.setToolTipText("Address of the SOCKS 
proxy to use " + "to connect to the infrastructure.");
-                               GridLayout layout = new GridLayout(2, false);
-                               groupSOCKS.setLayout(layout);
-                               data = new GridData();
-                               data.horizontalAlignment = SWT.CENTER;
-                               data.horizontalSpan = 2;
-                               data.widthHint = 250;
-                               groupSOCKS.setLayoutData(data);
-
-                               useSocksProxy = createConfCheckButton(this, 
groupSOCKS, ConfProp.PI_SOCKS_PROXY_ENABLE, "Enable SOCKS proxy");
-                               data = new GridData();
-                               data.horizontalSpan = 2;
-                               useSocksProxy.setLayoutData(data);
-
-                               // SOCKS proxy host
-                               Label label = new Label(groupSOCKS, SWT.NONE);
-                               data = new GridData();
-                               label.setText("Host:");
-                               label.setLayoutData(data);
-
-                               socksProxyHost = createConfText(this, 
groupSOCKS, ConfProp.PI_SOCKS_PROXY_HOST);
-
-                               // SOCKS proxy port
-                               label = new Label(groupSOCKS, SWT.NONE);
-                               data = new GridData();
-                               label.setText("Port:");
-                               label.setLayoutData(data);
-
-                               socksProxyPort = createConfText(this, 
groupSOCKS, ConfProp.PI_SOCKS_PROXY_PORT);
-                       }
-
-                       // Update the state of all widgets according to the 
current values!
-                       reloadConfProp(ConfProp.PI_COLOCATE_MASTERS);
-                       reloadConfProp(ConfProp.PI_SOCKS_PROXY_ENABLE);
-                       reloadConfProp(ConfProp.PI_HADOOP_VERSION);
-
-                       return panel;
-               }
-
-               /**
-                * Reload the given configuration property value
-                * 
-                * @param prop
-                */
-               private void reloadConfProp(ConfProp prop) {
-                       this.notifyChange(prop, 
location.getConfPropValue(prop));
-               }
-               
-               @Override
-               public void reloadData() {
-                       if (HADOOP_2.equals(hadoopVersion.getText())) {
-                               groupMR.setText("Resource Manager Master");
-                               groupMR.setToolTipText("Address of the Resouce 
manager node ");
-                       } else {
-                               groupMR.setText("Map/Reduce Master");
-                               groupMR.setToolTipText("Address of the 
Map/Reduce master node " + "(the Job Tracker).");
-                       }
-                       groupMR.layout(true);
-                       
notifyChange(ConfProp.PI_JOB_TRACKER_HOST,location.getConfPropValue(ConfProp.PI_JOB_TRACKER_HOST));
-                       
notifyChange(ConfProp.PI_JOB_TRACKER_PORT,location.getConfPropValue(ConfProp.PI_JOB_TRACKER_PORT));
-                       
notifyChange(ConfProp.PI_USER_NAME,location.getConfPropValue(ConfProp.PI_USER_NAME));
-                       
notifyChange(ConfProp.PI_NAME_NODE_HOST,location.getConfPropValue(ConfProp.PI_NAME_NODE_HOST));
-                       
notifyChange(ConfProp.PI_USER_NAME,location.getConfPropValue(ConfProp.PI_USER_NAME));
-                       
notifyChange(ConfProp.PI_COLOCATE_MASTERS,location.getConfPropValue(ConfProp.PI_COLOCATE_MASTERS));
-                       
notifyChange(ConfProp.PI_SOCKS_PROXY_ENABLE,location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_ENABLE));
-                       
notifyChange(ConfProp.PI_SOCKS_PROXY_HOST,location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_HOST));
-                       
notifyChange(ConfProp.PI_SOCKS_PROXY_PORT,location.getConfPropValue(ConfProp.PI_SOCKS_PROXY_PORT));
-                       
notifyChange(ConfProp.PI_LOCATION_NAME,location.getConfPropValue(ConfProp.PI_LOCATION_NAME));
-               }
-
-               public void notifyChange(ConfProp prop, String propValue) {
-                       switch (prop) {
-                       case PI_JOB_TRACKER_HOST: {
-                               textJTHost.setText(propValue);
-                               break;
-                       }
-                       case PI_JOB_TRACKER_PORT: {
-                               textJTPort.setText(propValue);
-                               break;
-                       }
-                       case PI_LOCATION_NAME: {
-                               locationName.setText(propValue);
-                               break;
-                       }
-                       case PI_USER_NAME: {
-                               userName.setText(propValue);
-                               break;
-                       }
-                       case PI_COLOCATE_MASTERS: {
-                               if (colocateMasters != null) {
-                                       boolean colocate = 
propValue.equalsIgnoreCase("yes");
-                                       colocateMasters.setSelection(colocate);
-                                       if (textNNHost != null) {
-                                               
textNNHost.setEnabled(!colocate);
-                                       }
-                               }
-                               break;
-                       }
-                       case PI_NAME_NODE_HOST: {
-                               textNNHost.setText(propValue);
-                               break;
-                       }
-                       case PI_NAME_NODE_PORT: {
-                               textNNPort.setText(propValue);
-                               break;
-                       }
-                       case PI_SOCKS_PROXY_ENABLE: {
-                               if (useSocksProxy != null) {
-                                       boolean useProxy = 
propValue.equalsIgnoreCase("yes");
-                                       useSocksProxy.setSelection(useProxy);
-                                       if (socksProxyHost != null)
-                                               
socksProxyHost.setEnabled(useProxy);
-                                       if (socksProxyPort != null)
-                                               
socksProxyPort.setEnabled(useProxy);
-                               }
-                               break;
-                       }
-                       case PI_SOCKS_PROXY_HOST: {
-                               socksProxyHost.setText(propValue);
-                               break;
-                       }
-                       case PI_SOCKS_PROXY_PORT: {
-                               socksProxyPort.setText(propValue);
-                               break;
-                       }                       
-                       }
-               }
-
-               
-               /* @inheritDoc */
-               public void modifyText(ModifyEvent e) {
-                       final Text text = (Text) e.widget;
-                       final ConfProp prop = (ConfProp) text.getData("hProp");
-                       Display.getDefault().syncExec(new Runnable() {
-                               public void run() {
-                                       mediator.notifyChange(TabMain.this, 
prop, text.getText());
-                               }
-                       });
-               }
-
-               /* @inheritDoc */
-               public void widgetDefaultSelected(SelectionEvent e) {
-                       this.widgetSelected(e);
-               }
-
-               /* @inheritDoc */
-               public void widgetSelected(SelectionEvent e) {
-                       final Button button = (Button) e.widget;
-                       final ConfProp prop = (ConfProp) 
button.getData("hProp");
-
-                       Display.getDefault().syncExec(new Runnable() {
-                               public void run() {
-                                       // We want to receive the update also!
-                                       mediator.notifyChange(null, prop, 
button.getSelection() ? "yes" : "no");
-                               }
-                       });
-               }
-
-       }
-
-       private class TabAdvanced implements TabListener, ModifyListener {
-               TabMediator mediator;
-               private Composite panel;
-               private Map<String, Text> textMap = new TreeMap<String, Text>();
-
-               TabAdvanced(TabMediator mediator) {
-                       this.mediator = mediator;
-                       TabItem tab = new TabItem(mediator.folder, SWT.NONE);
-                       tab.setText("Advanced parameters");
-                       tab.setToolTipText("Access to advanced Hadoop 
parameters");
-                       tab.setImage(circle);
-                       tab.setControl(createControl(mediator.folder));
-
-               }
-
-               private Control createControl(Composite parent) {
-                       ScrolledComposite sc = new ScrolledComposite(parent, 
SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-                       panel=buildPanel(sc);
-                       sc.setContent(panel);
-                       sc.setExpandHorizontal(true);
-                       sc.setExpandVertical(true);
-                       sc.setMinSize(640, 480);
-                       sc.setMinSize(panel.computeSize(SWT.DEFAULT, 
SWT.DEFAULT));
-                       return sc;
-               }
-               
-               @Override
-               public void reloadData() {
-                       ScrolledComposite parent = 
(ScrolledComposite)panel.getParent();
-                       panel.dispose();
-                       Composite panel = buildPanel(parent);
-                       parent.setContent(panel);
-                       parent.setMinSize(panel.computeSize(SWT.DEFAULT, 
SWT.DEFAULT));
-                       parent.pack();
-                       parent.layout(true);
-                       this.panel=panel;
-               }
-
-               private Composite buildPanel(Composite parent) {
-                       Composite panel = new Composite(parent, SWT.NONE);
-                       GridLayout layout = new GridLayout();
-                       layout.numColumns = 2;
-                       layout.makeColumnsEqualWidth = false;
-                       panel.setLayout(layout);
-                       panel.setLayoutData(new GridData(GridData.FILL, 
GridData.FILL, true, true, 1, 1));
-
-                       // Sort by property name
-                       SortedMap<String, String> map = new TreeMap<String, 
String>();
-                       Iterator<Entry<String, String>> it = 
location.getConfiguration();
-                       while (it.hasNext()) {
-                               Entry<String, String> entry = it.next();
-                               map.put(entry.getKey(), entry.getValue());
-                       }
-
-                       for (Entry<String, String> entry : map.entrySet()) {
-                               Text text = createConfNameEditor(this, panel, 
entry.getKey(), null);
-                               textMap.put(entry.getKey(), text);
-                       }
-                       return panel;
-               }
-               
-
-               public void notifyChange(ConfProp prop, final String propValue) 
{
-                       Text text = textMap.get(location.getConfPropName(prop));
-                       text.setText(propValue);
-               }
-
-               public void modifyText(ModifyEvent e) {
-                       final Text text = (Text) e.widget;
-                       Object hProp = text.getData("hProp");
-                       final ConfProp prop = (hProp != null) ? (ConfProp) 
hProp : null;
-                       Object hPropName = text.getData("hPropName");
-                       final String propName = (hPropName != null) ? (String) 
hPropName : null;
-
-                       Display.getDefault().syncExec(new Runnable() {
-                               public void run() {
-                                       if (prop != null)
-                                               
mediator.notifyChange(TabAdvanced.this, prop, text.getText());
-                                       else
-                                               
mediator.notifyChange(TabAdvanced.this, propName, text.getText());
-                               }
-                       });
-               }
-
-       
+               this.setControl(panel);
        }
 
 }

Reply via email to