You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by rk...@apache.org on 2016/08/04 19:05:22 UTC

[3/4] oozie git commit: OOZIE-2625 Drop workflowgenerator (rkanter)

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTable.java
deleted file mode 100644
index 9734c7a..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTable.java
+++ /dev/null
@@ -1,620 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.oozie.tools.workflowgenerator.client.OozieDiagramController;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.EmailActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.FSActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.JavaActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.MapReduceActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PigActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PipesActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SSHActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.ShellActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.StreamingActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SubWFActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.DecisionNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.EndNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.ForkNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.JoinNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.KillNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.StartNodeWidget;
-import com.google.gwt.cell.client.ButtonCell;
-import com.google.gwt.cell.client.FieldUpdater;
-import com.google.gwt.cell.client.SelectionCell;
-import com.google.gwt.cell.client.TextInputCell;
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.cellview.client.CellTable;
-import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.ScrollPanel;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-import com.google.gwt.xml.client.Text;
-
-/**
- * Base abstract class for property table;
- */
-public abstract class PropertyTable extends ScrollPanel {
-
-    protected NodeWidget current;
-    protected TextBox name;
-    protected ListBox okVal;
-    protected ListBox errorVal;
-    protected TextBox jt;
-    protected TextBox nn;
-    protected List<NodeWidget> widgetDropDown;
-    protected HandlerRegistration handler;
-    protected Grid grid;
-
-    /**
-     * Constructor which records node widget
-     *
-     * @param w node widget
-     */
-    public PropertyTable(NodeWidget w) {
-        super();
-        this.current = w;
-    }
-
-    /**
-     * Update a list of other node widgets shown in "OK" drop-down, excluding
-     * start and kill nodes
-     */
-    public void updateWidgetDropDown() {
-
-        List<NodeWidget> widgetList = current.getGenerator().getWidgets();
-        OozieDiagramController controller = current.getController();
-
-        if (widgetDropDown == null) {
-            widgetDropDown = new ArrayList<NodeWidget>();
-        }
-        else {
-            widgetDropDown.clear();
-        }
-
-        if (widgetList != null) {
-            for (NodeWidget w : widgetList) {
-                if (!(w instanceof KillNodeWidget) && !(w instanceof StartNodeWidget) && w != current) {
-                    widgetDropDown.add(w);
-                }
-            }
-        }
-
-        // if okVal listbox doesn't exist, return
-        if (okVal != null) {
-            okVal.clear();
-        }
-        else {
-            return;
-        }
-        // insert empty option on top
-        okVal.addItem("");
-
-        for (int i = 0; i < widgetDropDown.size(); i++) {
-            NodeWidget w = widgetDropDown.get(i);
-            okVal.addItem(prettyItemString(w));
-            // option selected when this node widget is connected to the
-            // widget in a design panel
-            List<NodeWidget> neigh = controller.getCurrentNeighbor(current);
-            if (neigh != null && neigh.size() > 0 && w == neigh.get(0))
-                okVal.setSelectedIndex(i + 1);
-        }
-
-        // remove previous handler, otherwise, end up having multiple handlers
-        if (handler != null) {
-            handler.removeHandler();
-        }
-
-        handler = okVal.addChangeHandler(new ChangeHandler() {
-            @Override
-            public void onChange(ChangeEvent event) {
-                int selectedIndex = okVal.getSelectedIndex();
-                if (selectedIndex > 0) {
-                    NodeWidget target = widgetDropDown.get(selectedIndex - 1);
-                    current.getController().addConnection(current, target);
-                }
-
-            }
-        });
-    }
-
-    /**
-     * Update "Error" drop-down list, currently only includes default kill node
-     */
-    public void updateErrorDropDown() {
-
-        List<NodeWidget> widgetList = current.getGenerator().getWidgets();
-
-        if (errorVal == null) {
-            errorVal = new ListBox();
-        }
-        else {
-            errorVal.clear();
-        }
-
-        for (NodeWidget w : widgetList) {
-            if (w instanceof KillNodeWidget) {
-                errorVal.addItem(prettyItemString(w));
-                errorVal.setSelectedIndex(0);
-            }
-        }
-    }
-
-    /**
-     * Return an instance of a kill node
-     *
-     * @return
-     */
-    protected NodeWidget getKillNode() {
-
-        List<NodeWidget> widgetList = current.getGenerator().getWidgets();
-        NodeWidget node = null;
-        for (NodeWidget w : widgetList) {
-            if (w instanceof KillNodeWidget)
-                node = w;
-        }
-        return node;
-    }
-
-    /**
-     * Abstract method to generate xml elements and attach them to xml doc
-     *
-     * @param doc xml document
-     * @param root xml element under which generated xml elements are added
-     * @param next next node widget to be executed after this in workflow
-     */
-    public abstract void generateXML(Document doc, Element root, NodeWidget next);
-
-    /**
-     * Append a type of the node widget to its name for readability
-     *
-     * @param w
-     * @return
-     */
-    protected String prettyItemString(NodeWidget w) {
-        StringBuilder s = new StringBuilder();
-        s.append(w.getName());
-        s.append(" ");
-        if (w instanceof EndNodeWidget) {
-            s.append(" (End Node)");
-        }
-        else if (w instanceof ForkNodeWidget) {
-            s.append(" (Fork Node)");
-        }
-        else if (w instanceof JoinNodeWidget) {
-            s.append(" (Join Node)");
-        }
-        else if (w instanceof MapReduceActionWidget) {
-            s.append(" (MR Action)");
-        }
-        else if (w instanceof PigActionWidget) {
-            s.append(" (Pig Action)");
-        }
-        else if (w instanceof StreamingActionWidget) {
-            s.append(" (MR Streaming Action)");
-        }
-        else if (w instanceof PipesActionWidget) {
-            s.append(" (MR Pipes Action)");
-        }
-        else if (w instanceof JavaActionWidget) {
-            s.append(" (Java Action)");
-        }
-        else if (w instanceof FSActionWidget) {
-            s.append(" (FS Action)");
-        }
-        else if (w instanceof DecisionNodeWidget) {
-            s.append(" (Decision Node)");
-        }
-        else if (w instanceof KillNodeWidget) {
-            s.append(" (Kill Node)");
-        }
-        else if (w instanceof SSHActionWidget) {
-            s.append(" (SSH Node)");
-        }
-        else if (w instanceof SubWFActionWidget) {
-            s.append(" (SubWF Node)");
-        }
-        else if (w instanceof EmailActionWidget) {
-            s.append(" (Email Node)");
-        }
-        else if (w instanceof ShellActionWidget) {
-            s.append(" (Shell Node)");
-        }
-        return s.toString();
-    }
-
-    /**
-     * Set the width of widget
-     *
-     * @param w widget
-     * @return
-     */
-    protected Widget formatCell(Widget w) {
-        w.setWidth("300px");
-        return w;
-    }
-
-    /**
-     * Create an expandable sub table as a part of property table
-     *
-     * @param colname1 1st column name
-     * @param colname2 2nd column name
-     * @param data data list
-     * @param options listbox options, if null, text input cell used
-     * @return
-     */
-    protected CellTable<Property> createSubTable(String colname1, String colname2, List<Property> data,
-            List<String> options) {
-
-        final CellTable<Property> table = new CellTable<Property>();
-        final ListDataProvider<Property> dataProvider = new ListDataProvider<Property>();
-        dataProvider.setList(data);
-        dataProvider.addDataDisplay(table);
-
-        // add Name column
-        Column<Property, String> nameCol = null;
-
-        if (options == null) {
-            nameCol = new Column<Property, String>(new TextInputCell()) {
-                @Override
-                public String getValue(Property object) {
-                    return object.getName();
-                }
-            };
-        }
-        else {
-            nameCol = new Column<Property, String>(new SelectionCell(options)) {
-                @Override
-                public String getValue(Property object) {
-                    return object.getName();
-                }
-            };
-        }
-
-        // set event for updating value
-        nameCol.setFieldUpdater(new FieldUpdater<Property, String>() {
-            @Override
-            public void update(int index, Property object, String value) {
-                object.setName(value);
-            }
-        });
-        table.addColumn(nameCol, colname1);
-
-        // Add Value column
-        Column<Property, String> valueCol = new Column<Property, String>(new TextInputCell()) {
-            @Override
-            public String getValue(Property object) {
-                return object.getValue();
-            }
-        };
-
-        valueCol.setFieldUpdater(new FieldUpdater<Property, String>() {
-            @Override
-            public void update(int index, Property object, String value) {
-                object.setValue(value);
-            }
-        });
-        table.addColumn(valueCol, colname2);
-
-        // Button to add row
-        Column<Property, String> addCol = new Column<Property, String>(new ButtonCell()) {
-            @Override
-            public String getValue(Property object) {
-                return " + ";
-            }
-        };
-        addCol.setFieldUpdater(new FieldUpdater<Property, String>() {
-            @Override
-            public void update(int index, Property object, String value) {
-                dataProvider.getList().add(index + 1, new Property("", ""));
-            }
-        });
-
-        table.addColumn(addCol, "");
-
-        // Button to delete row
-        Column<Property, String> delCol = new Column<Property, String>(new ButtonCell()) {
-            @Override
-            public String getValue(Property object) {
-                return " - ";
-            }
-        };
-
-        delCol.setFieldUpdater(new FieldUpdater<Property, String>() {
-
-            @Override
-            public void update(int index, Property object, String value) {
-                List<Property> li = dataProvider.getList();
-                if (li.size() == 1) {
-                    Property p = li.get(0);
-                    p.setName("");
-                    p.setValue("");
-                    table.redraw();
-                }
-                else
-                    dataProvider.getList().remove(index);
-            }
-        });
-
-        table.addColumn(delCol, "");
-
-        return table;
-    }
-
-    /**
-     * Create an add button in a table
-     *
-     * @param table
-     * @return
-     */
-    protected Button createAddButton(Grid table) {
-        Button btn = new Button("+");
-        btn.getElement()
-                .setAttribute("style",
-                        "font-size:20px;margin:0px;padding:0px;-webkit-border-radius:10px;-moz-border-radius:10px;-border-radius:10px;");
-        return btn;
-    }
-
-    /**
-     * create a delete button in a table
-     *
-     * @param table
-     * @return
-     */
-    protected Button createDelButton(Grid table) {
-        Button btn = new Button("-");
-        btn.getElement()
-                .setAttribute("style",
-                        "font-size:20px;margin:0px;padding:0px;-webkit-border-radius:10px;-moz-border-radius:10px;-border-radius:10px;");
-        return btn;
-    }
-
-    /**
-     * Create a label with common format
-     *
-     * @param name
-     * @return
-     */
-    protected Label createLabel(String name) {
-        Label label = new Label(name);
-        label.setWidth("100px");
-        label.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
-        return label;
-    }
-
-    /**
-     * Generate xml elements of configuration
-     *
-     * @param list List of properties
-     * @param root xml element under which configuration tag is added
-     * @param doc xml document
-     */
-    protected void configToXML(List<Property> list, Element root, Document doc) {
-
-        Element confEle = null;
-
-        for (Property prop : list) {
-            if (prop.getName() != null && !prop.getName().matches("\\s*") && prop.getValue() != null
-                    && !prop.getValue().matches("\\s*")) {
-
-                if (confEle == null) {
-                    confEle = doc.createElement("configuration");
-                    root.appendChild(confEle);
-                }
-
-                // create <property>
-                Element propEle = doc.createElement("property");
-                confEle.appendChild(propEle);
-
-                // create <name>
-                Element nameEle = doc.createElement("name");
-                propEle.appendChild(nameEle);
-                nameEle.appendChild(doc.createTextNode(prop.getName()));
-
-                // create <value>
-                Element valEle = doc.createElement("value");
-                propEle.appendChild(valEle);
-                valEle.appendChild(doc.createTextNode(prop.getValue()));
-            }
-        }
-
-    }
-
-    /**
-     * Generate xml elements of prepare tag
-     *
-     * @param list list of properties
-     * @param root xml element under which prepare tag is added
-     * @param doc xml document
-     */
-    protected void prepareToXML(List<Property> list, Element root, Document doc) {
-
-        Element prepareEle = null;
-        for (Property prop : list) {
-            if (prop.getName() != null && !prop.getName().matches("\\s*") && prop.getValue() != null
-                    && !prop.getValue().matches("\\s*")) {
-
-                if (prepareEle == null) {
-                    prepareEle = doc.createElement("prepare");
-                    root.appendChild(prepareEle);
-                }
-
-                // create <delete> or <mkdir>
-                Element ele = null;
-                if (prop.getName().equals("delete")) {
-                    ele = doc.createElement("delete");
-                }
-                else if (prop.getName().equals("mkdir")) {
-                    ele = doc.createElement("mkdir");
-                }
-                ele.setAttribute("path", prop.getValue());
-                prepareEle.appendChild(ele);
-            }
-        }
-    }
-
-    /**
-     * Generate xml elements of specified tag name
-     *
-     * @param list list of properties
-     * @param root xml element under which new elements are added
-     * @param doc xml document
-     * @param key tag name
-     */
-    protected void filterListToXML(List<Property> list, Element root, Document doc, String key) {
-
-        for (Property prop : list) {
-            if (prop.getName() != null && !prop.getName().matches("\\s*") && prop.getValue() != null
-                    && !prop.getValue().matches("\\s*")) {
-                if (prop.getName().equals(key)) {
-                    // create key element
-                    Element nameEle = doc.createElement(key);
-                    root.appendChild(nameEle);
-
-                    // create text node under created element
-                    Text valEle = doc.createTextNode(prop.getValue());
-                    nameEle.appendChild(valEle);
-                }
-            }
-        }
-    }
-
-    /**
-     * Generate xml element of specific tag using content of textbox
-     *
-     * @param doc xml document
-     * @param tag tag name
-     * @param box textbox
-     * @return
-     */
-    protected Element generateElement(Document doc, String tag, TextBox box) {
-        Element ele = doc.createElement(tag);
-        Text t = doc.createTextNode(box.getText());
-        ele.appendChild(t);
-        return ele;
-    }
-
-    /**
-     * Generate xml element of ok
-     *
-     * @param doc xml document
-     * @param next next node widget to be executed after this in workflow
-     * @return
-     */
-    protected Element generateOKElement(Document doc, NodeWidget next) {
-        Element okEle = doc.createElement("ok");
-        okEle.setAttribute("to", next.getName());
-        return okEle;
-    }
-
-    /**
-     * Generate xml element of error
-     *
-     * @param doc xml document
-     * @return
-     */
-    protected Element generateErrorElement(Document doc) {
-        Element errEle = doc.createElement("error");
-        NodeWidget kill = getKillNode();
-        errEle.setAttribute("to", kill == null ? "" : kill.getName());
-        return errEle;
-    }
-
-    /**
-     * Insert a row with textbox into a grid table
-     *
-     * @param grid grid table
-     * @param row row number
-     * @param label name of label
-     * @return
-     */
-    protected TextBox insertTextRow(Grid grid, int row, String label) {
-        grid.setWidget(row, 0, createLabel(label));
-        TextBox box = new TextBox();
-        grid.setWidget(row, 1, formatCell(box));
-        return box;
-    }
-
-    /**
-     * Insert a row for ok into a grid table
-     *
-     * @param grid grid table
-     * @param row row number
-     */
-    protected void insertOKRow(Grid grid, int row) {
-        grid.setWidget(row, 0, createLabel("OK"));
-        okVal = new ListBox();
-        updateWidgetDropDown();
-        grid.setWidget(row, 1, formatCell(okVal));
-    }
-
-    /**
-     * Insert a row for error into a grid table
-     *
-     * @param grid grid table
-     * @param row row number
-     */
-    protected void insertErrorRow(Grid grid, int row) {
-        grid.setWidget(row, 0, createLabel("Error"));
-        errorVal = new ListBox();
-        updateErrorDropDown();
-        grid.setWidget(row, 1, formatCell(errorVal));
-    }
-
-    /**
-     * Return a name of the node widget
-     *
-     * @return
-     */
-    public String getName() {
-        String n = null;
-        if (name != null) {
-            n = name.getText();
-        }
-        else {
-            n = new String("");
-        }
-        return n;
-    }
-
-    /**
-     * Set a name of the node widget
-     *
-     * @param n
-     */
-    public void setName(String n) {
-        if (name != null) {
-            name.setText(n);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTableFactory.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTableFactory.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTableFactory.java
deleted file mode 100644
index 1e2608b..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/PropertyTableFactory.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.action.EmailPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.FSPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.JavaPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.MapReducePropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.PigPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.PipesPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.SSHPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.ShellPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.StreamingPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.action.SubWFPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.DecisionPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.EndPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.ForkPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.JoinPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.KillPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.StartPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.EmailActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.FSActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.JavaActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.MapReduceActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PigActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PipesActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SSHActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.ShellActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.StreamingActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SubWFActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.DecisionNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.EndNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.ForkNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.JoinNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.KillNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.StartNodeWidget;
-
-/**
- * Singleton class to instantiate property table corresponding to node widget.
- */
-public class PropertyTableFactory {
-
-    // Singleton
-    private static PropertyTableFactory factory = new PropertyTableFactory();
-
-    private PropertyTableFactory() {
-    }
-
-    /**
-     * Return PropertyTableFactory instance
-     *
-     * @return PropertyTableFactory
-     */
-    public static PropertyTableFactory getInstance() {
-        return factory;
-    }
-
-    /**
-     * Return property table instance corresponding to node widget given in an
-     * argument
-     *
-     * @param w node widget
-     * @return PropertyTable
-     */
-    public PropertyTable createPropertyTable(NodeWidget w) {
-
-        PropertyTable table = null;
-
-        if (w instanceof MapReduceActionWidget) {
-            table = new MapReducePropertyTable(w);
-        }
-        else if (w instanceof PigActionWidget) {
-            table = new PigPropertyTable(w);
-        }
-        else if (w instanceof JavaActionWidget) {
-            table = new JavaPropertyTable(w);
-        }
-        else if (w instanceof FSActionWidget) {
-            table = new FSPropertyTable(w);
-        }
-        else if (w instanceof PipesActionWidget) {
-            table = new PipesPropertyTable(w);
-        }
-        else if (w instanceof StreamingActionWidget) {
-            table = new StreamingPropertyTable(w);
-        }
-        else if (w instanceof ShellActionWidget) {
-            table = new ShellPropertyTable(w);
-        }
-        else if (w instanceof SSHActionWidget) {
-            table = new SSHPropertyTable(w);
-        }
-        else if (w instanceof EmailActionWidget) {
-            table = new EmailPropertyTable(w);
-        }
-        else if (w instanceof SubWFActionWidget) {
-            table = new SubWFPropertyTable(w);
-        }
-        else if (w instanceof StartNodeWidget) {
-            table = new StartPropertyTable(w);
-        }
-        else if (w instanceof EndNodeWidget) {
-            table = new EndPropertyTable(w);
-        }
-        else if (w instanceof KillNodeWidget) {
-            table = new KillPropertyTable(w);
-        }
-        else if (w instanceof ForkNodeWidget) {
-            table = new ForkPropertyTable(w);
-        }
-        else if (w instanceof JoinNodeWidget) {
-            table = new JoinPropertyTable(w);
-        }
-        else if (w instanceof DecisionNodeWidget) {
-            table = new DecisionPropertyTable(w);
-        }
-
-        return table;
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/EmailPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/EmailPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/EmailPropertyTable.java
deleted file mode 100644
index 2bcdc12..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/EmailPropertyTable.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of email action
- */
-public class EmailPropertyTable extends PropertyTable {
-
-    private TextBox to;
-    private TextBox cc;
-    private TextBox subject;
-    private TextBox body;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public EmailPropertyTable(NodeWidget w) {
-        super(w);
-        initWidget();
-    }
-
-    /**
-     * Generate xml elements of email action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <email>
-        Element emailEle = doc.createElement("email");
-        action.appendChild(emailEle);
-
-        // create <to>
-        emailEle.appendChild(generateElement(doc, "to", to));
-
-        // create <cc>
-        emailEle.appendChild(generateElement(doc, "cc", cc));
-
-        // create <subject>
-        emailEle.appendChild(generateElement(doc, "subject", subject));
-
-        // create <body>
-        emailEle.appendChild(generateElement(doc, "body", body));
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(7, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for TO
-        to = insertTextRow(grid, 3, "To");
-
-        // insert row for CC
-        cc = insertTextRow(grid, 4, "CC");
-
-        // insert row for Subject
-        subject = insertTextRow(grid, 5, "Subject");
-
-        // insert row for Body
-        body = insertTextRow(grid, 6, "Body");
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/FSPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/FSPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/FSPropertyTable.java
deleted file mode 100644
index a0b23a4..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/FSPropertyTable.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.cell.client.ButtonCell;
-import com.google.gwt.cell.client.FieldUpdater;
-import com.google.gwt.cell.client.SelectionCell;
-import com.google.gwt.cell.client.TextCell;
-import com.google.gwt.cell.client.Cell.Context;
-import com.google.gwt.cell.client.TextInputCell;
-import com.google.gwt.safehtml.shared.SafeHtml;
-import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.user.cellview.client.CellTable;
-import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of FS action
- */
-public class FSPropertyTable extends PropertyTable {
-
-    private List<FSActionData> fsdata;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w
-     */
-    public FSPropertyTable(NodeWidget w) {
-        super(w);
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    private void initConf() {
-        fsdata = new ArrayList<FSActionData>();
-        fsdata.add(new FSActionData());
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        VerticalPanel vertical = new VerticalPanel();
-        this.add(vertical);
-        grid = new Grid(3, 2);
-        vertical.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // create cell table for FS operation
-        vertical.add(createFSActionTable(fsdata));
-    }
-
-    /**
-     * Create a table showing fs operations
-     *
-     * @param data
-     * @return
-     */
-    protected CellTable<FSActionData> createFSActionTable(List<FSActionData> data) {
-
-        final CellTable<FSActionData> table = new CellTable<FSActionData>();
-        final ListDataProvider<FSActionData> dataProvider = new ListDataProvider<FSActionData>();
-        dataProvider.setList(data);
-        dataProvider.addDataDisplay(table);
-
-        // Add Name column
-        Column<FSActionData, String> nameCol = null;
-
-        nameCol = new Column<FSActionData, String>(new SelectionCell(Arrays.asList("", "delete", "mkdir", "move",
-                "chmod", "touchz"))) {
-            @Override
-            public String getValue(FSActionData object) {
-                return object.getOp();
-            }
-        };
-
-        // set event for updating value
-        nameCol.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                FSActionData d = dataProvider.getList().get(index);
-                d.setOp(value);
-                table.redraw();
-            }
-        });
-        table.addColumn(nameCol, "operation");
-
-        Column<FSActionData, String> label1Col = new Column<FSActionData, String>(new TextCell()) {
-            @Override
-            public String getValue(FSActionData object) {
-                String rel = "Path";
-                String op = object.getOp();
-                if (op.equals("move")) {
-                    rel = "Source Path";
-                }
-                return rel;
-            }
-        };
-
-        table.addColumn(label1Col);
-
-        // Add Column for 1st parameter of delete/mkdir/chmod/move/touchz
-        Column<FSActionData, String> param1Col = new Column<FSActionData, String>(new TextInputCell()) {
-            @Override
-            public String getValue(FSActionData object) {
-                String op = object.getOp();
-                if (op.equals("delete") || op.equals("mkdir") || op.equals("chmod") || op.equals("touchz")) {
-                    if (object.getParams().containsKey("path") && object.getParams().get("path") != null)
-                        return object.getParams().get("path");
-                }
-                else if (op.equals("move")) {
-                    if (object.getParams().containsKey("source") && object.getParams().get("source") != null)
-                        return object.getParams().get("source");
-                }
-                return "";
-            }
-        };
-
-        param1Col.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                FSActionData d = dataProvider.getList().get(index);
-                String op = d.getOp();
-                if (op.equals("delete") || op.equals("mkdir") || op.equals("chmod") || op.equals("touchz")) {
-                    d.getParams().put("path", value);
-                }
-                else if (op.equals("move")) {
-                    d.getParams().put("source", value);
-                }
-            }
-        });
-        table.addColumn(param1Col, "");
-
-        // Add Label for 2rd parameter of move and chmod
-        Column<FSActionData, String> label2Col = new Column<FSActionData, String>(new TextCell()) {
-
-            public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
-                if (value != null) {
-                    FSActionData data = (FSActionData) context.getKey();
-                    if (data.getOp().equals("move") || data.getOp().equals("chmod"))
-                        sb.append(value);
-                }
-            }
-
-            @Override
-            public String getValue(FSActionData object) {
-                String rel = null;
-                String op = object.getOp();
-                if (op.equals("move")) {
-                    rel = "Target Path";
-                }
-                else if (op.equals("chmod")) {
-                    rel = "Permissions";
-                }
-                return rel;
-            }
-        };
-
-        table.addColumn(label2Col);
-
-        // Add Column for 2nd parameter of move and chmod
-        Column<FSActionData, String> param2Col = new Column<FSActionData, String>(new CustomEditTextCell()) {
-            @Override
-            public String getValue(FSActionData object) {
-                String op = object.getOp();
-                if (op.equals("move")) {
-                    if (object.getParams().containsKey("target") && object.getParams().get("target") != null)
-                        return object.getParams().get("target");
-                }
-                else if (op.equals("chmod")) {
-                    if (object.getParams().containsKey("permissions") && object.getParams().get("permissions") != null)
-                        return object.getParams().get("permissions");
-                }
-                return "";
-            }
-        };
-
-        param2Col.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                FSActionData d = dataProvider.getList().get(index);
-                String op = d.getOp();
-                if (op.equals("move")) {
-                    d.getParams().put("target", value);
-                }
-                else if (op.equals("chmod")) {
-                    d.getParams().put("permissions", value);
-                }
-            }
-        });
-        table.addColumn(param2Col, "");
-
-        // Add Label for 3rd parameter of chmod
-        Column<FSActionData, String> label3Col = new Column<FSActionData, String>(new TextCell()) {
-
-            public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
-                if (value != null) {
-                    FSActionData data = (FSActionData) context.getKey();
-                    if (data.getOp().equals("chmod"))
-                        sb.append(value);
-                }
-            }
-
-            @Override
-            public String getValue(FSActionData object) {
-                String rel = null;
-                String op = object.getOp();
-                if (op.equals("chmod"))
-                    rel = "Chmod files within directory?(dir-files)";
-                return rel;
-            }
-        };
-
-        table.addColumn(label3Col);
-
-        // Add Column for 3rd parameter of chmod
-        // ( Recursive option not implemented in this version. need to add
-        // another column for that. )
-        Column<FSActionData, String> param3Col = new Column<FSActionData, String>(new CustomSelectionCell(
-                Arrays.asList("true", "false"))) {
-            @Override
-            public String getValue(FSActionData object) {
-                String rel = null;
-                String op = object.getOp();
-                if (op.equals("chmod"))
-                    rel = object.getParams().get("dir-files");
-                return rel;
-            }
-        };
-
-        param3Col.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                FSActionData d = dataProvider.getList().get(index);
-                String op = d.getOp();
-                if (op.equals("chmod")) {
-                    d.getParams().put("dir-files", value);
-                }
-            }
-        });
-        table.addColumn(param3Col, "");
-
-        // Button to add row
-        Column<FSActionData, String> addCol = new Column<FSActionData, String>(new ButtonCell()) {
-            @Override
-            public String getValue(FSActionData object) {
-                return " + ";
-            }
-        };
-        addCol.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                dataProvider.getList().add(index + 1, new FSActionData());
-            }
-        });
-
-        table.addColumn(addCol, "");
-
-        // Button to delete row
-        Column<FSActionData, String> delCol = new Column<FSActionData, String>(new ButtonCell()) {
-            @Override
-            public String getValue(FSActionData object) {
-                return " - ";
-            }
-        };
-
-        delCol.setFieldUpdater(new FieldUpdater<FSActionData, String>() {
-
-            @Override
-            public void update(int index, FSActionData object, String value) {
-                List<FSActionData> li = dataProvider.getList();
-                if (li.size() == 1) {
-                    FSActionData p = li.get(0);
-                    p.clear();
-                    table.redraw();
-                }
-                else {
-                    dataProvider.getList().remove(index);
-                }
-            }
-        });
-
-        table.addColumn(delCol, "");
-
-        return table;
-    }
-
-    class CustomEditTextCell extends TextInputCell {
-
-        @Override
-        public void render(Context context, String value, SafeHtmlBuilder sb) {
-            FSActionData fsdata = (FSActionData) context.getKey();
-            String op = fsdata.getOp();
-            if (op.equals("move") || op.equals("chmod"))
-                super.render(context, value, sb);
-
-        }
-    }
-
-    class CustomSelectionCell extends SelectionCell {
-
-        public CustomSelectionCell(List<String> options) {
-            super(options);
-        }
-
-        @Override
-        public void render(Context context, String value, SafeHtmlBuilder sb) {
-            FSActionData fsdata = (FSActionData) context.getKey();
-            String op = fsdata.getOp();
-            if (op.equals("chmod")) {
-                super.render(context, value, sb);
-            }
-        }
-    }
-
-    /**
-     * Generate xml elements of fs action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        Element fsEle = doc.createElement("fs");
-        action.appendChild(fsEle);
-
-        // create <delete>
-        fsDataListToXML(fsdata, fsEle, doc, "delete");
-
-        // create <mkdir>
-        fsDataListToXML(fsdata, fsEle, doc, "mkdir");
-
-        // create <move>
-        fsDataListToXML(fsdata, fsEle, doc, "move");
-
-        // create <chmod>
-        fsDataListToXML(fsdata, fsEle, doc, "chmod");
-
-        // create <touchz>
-        fsDataListToXML(fsdata, fsEle, doc, "touchz");
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-
-    }
-
-    /**
-     * Generate xml elements of fs operations
-     *
-     * @param list list of FS operations
-     * @param root xml element under which fs action is added
-     * @param doc xml document
-     * @param key name of fs operation
-     */
-    protected void fsDataListToXML(List<FSActionData> list, Element root, Document doc, String key) {
-
-        for (FSActionData fsdata : list) {
-            String op = fsdata.getOp();
-
-            if (op != null && !op.matches("\\s*") && op.equals(key)) {
-
-                Map<String, String> params = fsdata.getParams();
-
-                boolean flag = true;
-                if (op.equals("delete") && !params.containsKey("path")) {
-                    flag = false;
-                }
-                else if (op.equals("mkdir") && !params.containsKey("path")) {
-                    flag = false;
-                }
-                else if (op.equals("move") && (!params.containsKey("source") || !params.containsKey("target"))) {
-                    flag = false;
-                }
-                else if (op.equals("chmod") && (!params.containsKey("path") || !params.containsKey("permissions"))) {
-                    flag = false;
-                }
-                else if (op.equals("touchz") && (!params.containsKey("path"))) {
-                    flag = false;
-                }
-
-                if (flag) {
-                    // create key element
-                    Element nameele = doc.createElement(key);
-                    root.appendChild(nameele);
-
-                    // set attribute for parameter(s)
-                    for (Map.Entry<String, String> e : params.entrySet()) {
-                        nameele.setAttribute(e.getKey(), e.getValue());
-                    }
-                }
-            }
-        }
-
-    }
-
-    /**
-     * class to store FS operation and relevant parameters
-     */
-    public class FSActionData {
-
-        private String op;
-        private Map<String, String> params;
-
-        public FSActionData() {
-            params = new HashMap<String, String>();
-            op = "";
-        }
-
-        public String getOp() {
-            return op;
-        }
-
-        public void setOp(String s) {
-            this.op = s;
-        }
-
-        public Map<String, String> getParams() {
-            return params;
-        }
-
-        public void clear() {
-            op = "";
-            params.clear();
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/JavaPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/JavaPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/JavaPropertyTable.java
deleted file mode 100644
index cc38ddc..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/JavaPropertyTable.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.Property;
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.RadioButton;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of java action
- */
-public class JavaPropertyTable extends PropertyTable {
-
-    private List<Property> configs;
-    private List<Property> prepare;
-    private List<Property> others;
-    private RadioButton rby;
-    private RadioButton rbn;
-    private TextBox mainClass;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public JavaPropertyTable(NodeWidget w) {
-
-        super(w);
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    private void initConf() {
-        configs = new ArrayList<Property>();
-        configs.add(new Property("mapred.job.queue.name", ""));
-
-        prepare = new ArrayList<Property>();
-        prepare.add(new Property("", ""));
-
-        others = new ArrayList<Property>();
-        others.add(new Property("", ""));
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(10, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for JobTracker
-        jt = insertTextRow(grid, 3, "JobTracker");
-
-        // insert row for NameNode
-        nn = insertTextRow(grid, 4, "NameNode");
-
-        // insert row for Configuration
-        grid.setWidget(5, 0, createLabel("Configuration"));
-        grid.setWidget(5, 1, createSubTable("Property Name", "Value", configs, null));
-
-        // insert row for Main Class
-        mainClass = insertTextRow(grid, 6, "Main Class");
-
-        // insert row for prepare
-        grid.setWidget(7, 0, createLabel("Prepare"));
-        grid.setWidget(7, 1, createSubTable("Operation", "Path", prepare, Arrays.asList("", "delete", "mkdir")));
-
-        // insert row for others
-        grid.setWidget(8, 0, createLabel("Others"));
-        grid.setWidget(
-                8,
-                1,
-                createSubTable("Tag", "value", others,
-                        Arrays.asList("", "job-xml", "java-opts", "arg", "file", "archive")));
-
-        // insert row for Capture Output
-        grid.setWidget(9, 0, createLabel("Capture Output"));
-        HorizontalPanel btnpanel = new HorizontalPanel();
-        btnpanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
-        rbn = new RadioButton("outputGroup", "false");
-        rby = new RadioButton("outputGroup", "true");
-        rbn.setChecked(true);
-        btnpanel.add(rby);
-        btnpanel.add(rbn);
-        grid.setWidget(9, 1, btnpanel);
-
-    }
-
-    /**
-     * Generate xml elements of java action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <java>
-        Element javaEle = doc.createElement("java");
-        action.appendChild(javaEle);
-
-        // create <job-tracker>
-        javaEle.appendChild(generateElement(doc, "job-tracker", jt));
-
-        // create <name-node>
-        javaEle.appendChild(generateElement(doc, "name-node", nn));
-
-        // create <prepare>
-        prepareToXML(prepare, javaEle, doc);
-
-        // create <job-xml>
-        filterListToXML(others, javaEle, doc, "job-xml");
-
-        // create <configuration>
-        configToXML(configs, javaEle, doc);
-
-        // create <main-class>
-        javaEle.appendChild(generateElement(doc, "main-class", mainClass));
-
-        // create <java-opts>
-        filterListToXML(others, javaEle, doc, "java-opts");
-
-        // create <arg>
-        filterListToXML(others, javaEle, doc, "arg");
-
-        // create <file>
-        filterListToXML(others, javaEle, doc, "file");
-
-        // create <archive>
-        filterListToXML(others, javaEle, doc, "archive");
-
-        // create <capture-output>
-        if (rby.getValue()) {
-            Element outputele = doc.createElement("capture-output");
-            javaEle.appendChild(outputele);
-        }
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/MapReducePropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/MapReducePropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/MapReducePropertyTable.java
deleted file mode 100644
index 0fa3596..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/MapReducePropertyTable.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.Property;
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of MR action
- */
-public class MapReducePropertyTable extends PropertyTable {
-
-    protected List<Property> configs;
-    protected List<Property> prepare;
-    protected List<Property> others;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public MapReducePropertyTable(NodeWidget w) {
-        super(w);
-        init();
-    }
-
-    /**
-     * Initialize a property table
-     */
-    protected void init() {
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    protected void initConf() {
-        configs = new ArrayList<Property>();
-        configs.add(new Property("mapred.mapper.class", ""));
-        configs.add(new Property("mapred.reduce.class", ""));
-        configs.add(new Property("mapred.job.queue.name", ""));
-
-        prepare = new ArrayList<Property>();
-        prepare.add(new Property("", ""));
-
-        others = new ArrayList<Property>();
-        others.add(new Property("", ""));
-    }
-
-    /**
-     * Generate xml elements of mr action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <map-reduce>
-        Element mrEle = doc.createElement("map-reduce");
-        action.appendChild(mrEle);
-
-        // create <job-tracker>
-        mrEle.appendChild(generateElement(doc, "job-tracker", jt));
-
-        // create <name-node>
-        mrEle.appendChild(generateElement(doc, "name-node", nn));
-
-        // create <prepare>
-        prepareToXML(prepare, mrEle, doc);
-
-        // create <job-xml>
-        filterListToXML(others, mrEle, doc, "job-xml");
-
-        // create <configuration>
-        configToXML(configs, mrEle, doc);
-
-        // create <file>
-        filterListToXML(others, mrEle, doc, "file");
-
-        // create <archive>
-        filterListToXML(others, mrEle, doc, "archive");
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(8, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for JobTracker
-        jt = insertTextRow(grid, 3, "JobTracker");
-
-        // insert row for NameNode
-        nn = insertTextRow(grid, 4, "NameNode");
-
-        // insert row for prepare
-        grid.setWidget(5, 0, createLabel("Prepare"));
-        grid.setWidget(5, 1, createSubTable("Operation", "Path", prepare, Arrays.asList("", "delete", "mkdir")));
-
-        // insert row for Configuration
-        grid.setWidget(6, 0, createLabel("Configuration"));
-        grid.setWidget(6, 1, createSubTable("Property Name", "Value", configs, null));
-
-        // insert row for others
-        grid.setWidget(7, 0, createLabel("Others"));
-        grid.setWidget(7, 1, createSubTable("Tag", "value", others, Arrays.asList("", "job-xml", "file", "archive")));
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PigPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PigPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PigPropertyTable.java
deleted file mode 100644
index 55e5ae1..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PigPropertyTable.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.Property;
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of pig action
- */
-public class PigPropertyTable extends PropertyTable {
-
-    private List<Property> configs;
-    private List<Property> prepare;
-    private List<Property> others;
-    private TextBox script;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public PigPropertyTable(NodeWidget w) {
-
-        super(w);
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    private void initConf() {
-        configs = new ArrayList<Property>();
-        configs.add(new Property("mapred.job.queue.name", ""));
-
-        prepare = new ArrayList<Property>();
-        prepare.add(new Property("", ""));
-
-        others = new ArrayList<Property>();
-        others.add(new Property("", ""));
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(9, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for Script
-        script = insertTextRow(grid, 3, "Script");
-
-        // insert row for JobTracker
-        jt = insertTextRow(grid, 4, "JobTracker");
-
-        // insert row for NameNode
-        nn = insertTextRow(grid, 5, "NameNode");
-
-        // insert row for Configuration
-        grid.setWidget(6, 0, createLabel("Configuration"));
-        grid.setWidget(6, 1, createSubTable("Property Name", "Value", configs, null));
-
-        // insert row for prepare
-        grid.setWidget(7, 0, createLabel("Prepare"));
-        grid.setWidget(7, 1, createSubTable("Operation", "Path", prepare, Arrays.asList("", "delete", "mkdir")));
-
-        // insert row for others
-        grid.setWidget(8, 0, createLabel("Others"));
-        grid.setWidget(
-                8,
-                1,
-                createSubTable("Tag", "value", others,
-                        Arrays.asList("", "job-xml", "argument", "param", "file", "archive")));
-
-    }
-
-    /**
-     * Generate xml elements of pig action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <pig>
-        Element pigEle = doc.createElement("pig");
-        action.appendChild(pigEle);
-
-        // create <job-tracker>
-        pigEle.appendChild(generateElement(doc, "job-tracker", jt));
-
-        // create <name-node>
-        pigEle.appendChild(generateElement(doc, "name-node", nn));
-
-        // create <prepare>
-        prepareToXML(prepare, pigEle, doc);
-
-        // create <job-xml>
-        filterListToXML(others, pigEle, doc, "job-xml");
-
-        // create <configuration>
-        configToXML(configs, pigEle, doc);
-
-        // create <script>
-        pigEle.appendChild(generateElement(doc, "script", script));
-
-        // create <param>
-        filterListToXML(others, pigEle, doc, "param");
-
-        // create <argument>
-        filterListToXML(others, pigEle, doc, "argument");
-
-        // create <file>
-        filterListToXML(others, pigEle, doc, "file");
-
-        // create <archive>
-        filterListToXML(others, pigEle, doc, "archive");
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PipesPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PipesPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PipesPropertyTable.java
deleted file mode 100644
index d3b2ef5..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/PipesPropertyTable.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.Property;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.xml.client.Text;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of MR pipes action
- */
-public class PipesPropertyTable extends MapReducePropertyTable {
-
-    private List<Property> pipes;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public PipesPropertyTable(NodeWidget w) {
-        super(w);
-    }
-
-    /**
-     * Initialize a property table
-     */
-    @Override
-    protected void init() {
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    @Override
-    protected void initConf() {
-        configs = new ArrayList<Property>();
-        configs.add(new Property("mapred.job.queue.name", ""));
-
-        prepare = new ArrayList<Property>();
-        prepare.add(new Property("", ""));
-
-        others = new ArrayList<Property>();
-        others.add(new Property("", ""));
-
-        pipes = new ArrayList<Property>();
-        pipes.add(new Property("", ""));
-    }
-
-    /**
-     * Generate xml elements of pipes action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <map-reduce>
-        Element mrEle = doc.createElement("map-reduce");
-        action.appendChild(mrEle);
-
-        // create <job-tracker>
-        mrEle.appendChild(generateElement(doc, "job-tracker", jt));
-
-        // create <name-node>
-        mrEle.appendChild(generateElement(doc, "name-node", nn));
-
-        // create <prepare>
-        prepareToXML(prepare, mrEle, doc);
-
-        // create <pipes>
-        Element pipesEle = null;
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "map");
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "reduce");
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "inputformat");
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "partitioner");
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "writer");
-        pipesEle = filterListToXML(pipes, mrEle, pipesEle, doc, "program");
-
-        // create <job-xml>
-        filterListToXML(others, mrEle, doc, "job-xml");
-
-        // create <configuration>
-        configToXML(configs, mrEle, doc);
-
-        // create <file>
-        filterListToXML(others, mrEle, doc, "file");
-
-        // create <archive>
-        filterListToXML(others, mrEle, doc, "archive");
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-    }
-
-    /**
-     * Create xml element of specified tag name
-     *
-     * @param list list of properties
-     * @param root xml element under which new elements are added
-     * @param pipes pipes element
-     * @param doc xml doc
-     * @param key tag name
-     * @return
-     */
-    protected Element filterListToXML(List<Property> list, Element root, Element pipes, Document doc, String key) {
-
-        for (Property prop : list) {
-            if (prop.getName() != null && !prop.getName().matches("\\s*") && prop.getValue() != null
-                    && !prop.getValue().matches("\\s*")) {
-                if (prop.getName().equals(key)) {
-                    if (pipes == null) {
-                        pipes = doc.createElement("pipes");
-                        root.appendChild(pipes);
-                    }
-                    // create key element
-                    Element nameele = doc.createElement(key);
-                    pipes.appendChild(nameele);
-
-                    // create text node under created element
-                    Text valele = doc.createTextNode(prop.getValue());
-                    nameele.appendChild(valele);
-                }
-            }
-        }
-        return pipes;
-    }
-
-    /**
-     * Initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(9, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for Pipes setting
-        grid.setWidget(3, 0, createLabel("Pipes Setting"));
-        grid.setWidget(
-                3,
-                1,
-                createSubTable("Tag", "value", pipes,
-                        Arrays.asList("", "map", "reduce", "inputformat", "partitioner", "writer", "program")));
-
-        // insert row for JobTracker
-        jt = insertTextRow(grid, 4, "JobTracker");
-
-        // insert row for NameNode
-        nn = insertTextRow(grid, 5, "NameNode");
-
-        // insert row for prepare
-        grid.setWidget(6, 0, createLabel("Prepare"));
-        grid.setWidget(6, 1, createSubTable("Operation", "Path", prepare, Arrays.asList("", "delete", "mkdir")));
-
-        // insert row for Configuration
-        grid.setWidget(7, 0, createLabel("Configuration"));
-        grid.setWidget(7, 1, createSubTable("Property Name", "Value", configs, null));
-
-        // insert row for others
-        grid.setWidget(8, 0, createLabel("Others"));
-        grid.setWidget(8, 1, createSubTable("Tag", "value", others, Arrays.asList("", "job-xml", "file", "archive")));
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/SSHPropertyTable.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/SSHPropertyTable.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/SSHPropertyTable.java
deleted file mode 100644
index 34d7662..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/action/SSHPropertyTable.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oozie.tools.workflowgenerator.client.property.action;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-
-import com.google.gwt.cell.client.ButtonCell;
-import com.google.gwt.cell.client.FieldUpdater;
-import com.google.gwt.cell.client.TextInputCell;
-import com.google.gwt.xml.client.Text;
-import com.google.gwt.user.cellview.client.CellTable;
-import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.RadioButton;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-
-/**
- * Class for property table of SSH action
- */
-public class SSHPropertyTable extends PropertyTable {
-
-    private List<String> args;
-    private TextBox host;
-    private TextBox command;
-    private RadioButton rby;
-    private RadioButton rbn;
-
-    /**
-     * Constructor which records node widget and initializes
-     *
-     * @param w node widget
-     */
-    public SSHPropertyTable(NodeWidget w) {
-        super(w);
-        initConf();
-        initWidget();
-    }
-
-    /**
-     * Initialize configuration
-     */
-    protected void initConf() {
-        args = new ArrayList<String>();
-        args.add("");
-    }
-
-    /**
-     * Generate xml elements of ssh action and attach them to xml doc
-     */
-    public void generateXML(Document doc, Element root, NodeWidget next) {
-
-        Element action = doc.createElement("action");
-        action.setAttribute("name", current.getName());
-
-        // create <ssh>
-        Element sshEle = doc.createElement("ssh");
-        action.appendChild(sshEle);
-
-        // create <host>
-        sshEle.appendChild(generateElement(doc, "host", host));
-
-        // create <command>
-        sshEle.appendChild(generateElement(doc, "command", command));
-
-        // create <args>
-        for (String arg : args) {
-            Element argsEle = doc.createElement("args");
-            Text n = doc.createTextNode(arg);
-            argsEle.appendChild(n);
-            sshEle.appendChild(argsEle);
-
-        }
-
-        // create <capture-output>
-        if (rby.getValue()) {
-            Element outputele = doc.createElement("capture-output");
-            sshEle.appendChild(outputele);
-        }
-
-        // create <ok>
-        action.appendChild(generateOKElement(doc, next));
-
-        // create <error>
-        action.appendChild(generateErrorElement(doc));
-
-        root.appendChild(action);
-    }
-
-    /**
-     * initialize widgets shown in property table
-     */
-    protected void initWidget() {
-
-        grid = new Grid(7, 2);
-        this.add(grid);
-
-        this.setAlwaysShowScrollBars(true);
-        this.setSize("100%", "80%");
-
-        // insert row for Name
-        name = insertTextRow(grid, 0, "Name");
-
-        // insert row for OK
-        insertOKRow(grid, 1);
-
-        // insert row for ERROR
-        insertErrorRow(grid, 2);
-
-        // insert row for Host
-        host = insertTextRow(grid, 3, "Host");
-
-        // insert row for Command
-        command = insertTextRow(grid, 4, "Command");
-
-        // insert row for Arguments
-        grid.setWidget(5, 0, createLabel("Args"));
-        grid.setWidget(5, 1, createArgsTable(args));
-
-        // insert row for Capture Output
-        grid.setWidget(6, 0, createLabel("Capture Output"));
-        HorizontalPanel btnpanel = new HorizontalPanel();
-        btnpanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
-        rbn = new RadioButton("outputGroup", "false");
-        rby = new RadioButton("outputGroup", "true");
-        rbn.setChecked(true);
-        btnpanel.add(rby);
-        btnpanel.add(rbn);
-        grid.setWidget(6, 1, btnpanel);
-
-    }
-
-    /**
-     * Create a table showing list of arguments added by a user
-     *
-     * @param data
-     * @return
-     */
-    protected CellTable<String> createArgsTable(List<String> data) {
-        final CellTable<String> table = new CellTable<String>();
-        final ListDataProvider<String> dataProvider = new ListDataProvider<String>();
-        dataProvider.setList(data);
-        dataProvider.addDataDisplay(table);
-
-        // Add Name column
-        Column<String, String> argCol = null;
-
-        // when editText is used for name column
-
-        argCol = new Column<String, String>(new TextInputCell()) {
-            @Override
-            public String getValue(String object) {
-                return object;
-            }
-        };
-
-        // set event for updating value
-        argCol.setFieldUpdater(new FieldUpdater<String, String>() {
-            @Override
-            public void update(int index, String object, String value) {
-                List<String> li = dataProvider.getList();
-                li.remove(index);
-                li.add(index, value);
-            }
-        });
-        table.addColumn(argCol, "");
-
-        // Button to add row
-        Column<String, String> addCol = new Column<String, String>(new ButtonCell()) {
-            @Override
-            public String getValue(String object) {
-                return " + ";
-            }
-        };
-        addCol.setFieldUpdater(new FieldUpdater<String, String>() {
-            @Override
-            public void update(int index, String object, String value) {
-                List<String> li = dataProvider.getList();
-                li.add(index + 1, new String(" "));
-            }
-        });
-
-        table.addColumn(addCol, "");
-
-        // Button to delete row
-        Column<String, String> delCol = new Column<String, String>(new ButtonCell()) {
-            @Override
-            public String getValue(String object) {
-                return " - ";
-            }
-        };
-
-        delCol.setFieldUpdater(new FieldUpdater<String, String>() {
-            @Override
-            public void update(int index, String object, String value) {
-                List<String> li = dataProvider.getList();
-                li.remove(index);
-                if (li.size() == 0) {
-                    li.add(" ");
-                    table.redraw();
-                }
-            }
-        });
-
-        table.addColumn(delCol, "");
-
-        return table;
-
-    }
-}