com.ibm.xsp.extlib.designer.tooling.palette.singlepageapp.WizardSubPageMain.java Source code

Java tutorial

Introduction

Here is the source code for com.ibm.xsp.extlib.designer.tooling.palette.singlepageapp.WizardSubPageMain.java

Source

/*
 *  Copyright IBM Corp. 2014, 2016
 * 
 * Licensed 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 com.ibm.xsp.extlib.designer.tooling.palette.singlepageapp;

import java.text.MessageFormat;

import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.ibm.commons.util.StringUtil;
import com.ibm.designer.domino.constants.XSPAttributeNames;
import com.ibm.designer.domino.constants.XSPTagNames;
import com.ibm.designer.domino.xsp.internal.events.EventsXSPDefinitions;
import com.ibm.designer.domino.xsp.utils.FormModelUtil;
import com.ibm.xsp.extlib.designer.tooling.constants.IExtLibAttrNames;
import com.ibm.xsp.extlib.designer.tooling.constants.IExtLibTagLib;
import com.ibm.xsp.extlib.designer.tooling.constants.IExtLibTagNames;
import com.ibm.xsp.extlib.designer.tooling.utils.WizardUtils;
import com.ibm.xsp.extlib.designer.tooling.visualizations.AbstractCommonControlVisualizer;
import com.ibm.xsp.registry.FacesRegistry;

/**
 * @author Gary Marjoram
 *
 */
public class WizardSubPageMain extends WizardSubPage {
    private Text pageLabel;
    private Text backLabel;
    private Text toolBarText;
    private Text tabBtnText;
    private Button headerBtn;
    private Button backBtn;
    private Button tabBarBtn;
    private Button newDocBtn;
    private Button editSaveDocBtn;
    private Button deleteDocBtn;
    private Button bottomBtn;
    private Group headerGroup;
    private Group tabBarGroup;
    private Group backGroup;
    private WizardPageCombo backCombo;

    protected WizardSubPageMain(WizardDataSub pd) {
        super(pd);
    }

    @Override
    public void createControl(Composite parent) {
        container = new Composite(parent, SWT.NONE);
        GridLayout layout = WizardUtils.createGridLayout(2, 5);
        container.setLayout(layout);

        headerGroup = WizardUtils.createGroup(container, 2, 2);
        headerBtn = WizardUtils.createCheckBox(headerGroup, "Add a Page Heading", 2, true); // $NLX-WizardSubPageMain.AddaPageHeading-1$
        headerBtn.addSelectionListener(this);
        WizardUtils.createLabel(headerGroup, "Label :", 1); // $NLX-WizardSubPageMain.Label-1$
        pageLabel = WizardUtils.createText(headerGroup);
        pageLabel.setText(pageData.name);

        WizardUtils.createLabel(headerGroup, "Tool Bar Buttons :", 1); // $NLX-WizardSubPageMain.ToolBarButtons-1$
        toolBarText = WizardUtils.createText(headerGroup);
        toolBarText.setToolTipText("Enter a comma separated list of buttons"); // $NLX-WizardSubPageMain.Enteracommaseparatedlistofbuttons-1$

        if (pageData.type == WizardData.PAGE_TYPE_VIEW) {
            WizardUtils.createLabel(headerGroup, "", 1);
            newDocBtn = WizardUtils.createCheckBox(headerGroup, "Add 'New' Document action button", 1, true); // $NLX-WizardSubPageMain.AddNewDocumentactionbutton-1$
        }

        backGroup = WizardUtils.createGroup(headerGroup, 2, 2);
        backBtn = WizardUtils.createCheckBox(backGroup, "Add a Back Button", 2, pageData.index != 0); // $NLX-WizardSubPageMain.AddaBackButton-1$
        backBtn.addSelectionListener(this);
        WizardUtils.createLabel(backGroup, "Label :", 1); // $NLX-WizardSubPageMain.Label.1-1$
        backLabel = WizardUtils.createText(backGroup, "Back"); // $NLX-WizardSubPageMain.Back-1$
        WizardUtils.createLabel(backGroup, "Target Page :", 1); // $NLX-WizardSubPageMain.TargetPage-1$
        backCombo = new WizardPageCombo(backGroup, 1, pageData, true, WizardData.PAGE_TYPE_INVALID);
        backCombo.refresh();
        backCombo.setSelectedIndex(pageData.index - 1);

        tabBarGroup = WizardUtils.createGroup(container, 2, 3);
        tabBarBtn = WizardUtils.createCheckBox(tabBarGroup, "Add a Tab Bar", 3,
                pageData.type == WizardData.PAGE_TYPE_FORM); // $NLX-WizardSubPageMain.AddaTabBar-1$
        tabBarBtn.addSelectionListener(this);

        WizardUtils.createLabel(tabBarGroup, "Tab Bar Buttons :", 1); // $NLX-WizardSubPageMain.TabBarButtons-1$
        tabBtnText = WizardUtils.createText(tabBarGroup, 2);
        tabBtnText.setToolTipText("Enter a comma separated list of buttons"); // $NLX-WizardSubPageMain.Enteracommaseparatedlistofbuttons-1$

        if (pageData.type == WizardData.PAGE_TYPE_FORM) {
            WizardUtils.createLabel(tabBarGroup, "", 1);
            editSaveDocBtn = WizardUtils.createCheckBox(tabBarGroup, "Add 'Edit/Save' Document action buttons", 2,
                    true); // $NLX-WizardSubPageMain.AddEditSaveDocumentactionbuttons-1$

            WizardUtils.createLabel(tabBarGroup, "", 1);
            deleteDocBtn = WizardUtils.createCheckBox(tabBarGroup, "Add 'Delete' Document action button", 2, true); // $NLX-WizardSubPageMain.AddDeleteDocumentactionbutton-1$

            WizardUtils.createLabel(tabBarGroup, "Position :", 1); // $NLX-WizardSubPageMain.Position-1$
            WizardUtils.createRadio(tabBarGroup, "Top", 1, null); // $NLX-WizardSubPageMain.Top-1$
            bottomBtn = WizardUtils.createRadio(tabBarGroup, "Bottom", 1, null); // $NLX-WizardSubPageMain.Bottom-1$
            bottomBtn.setSelection(true);
        }

        WizardUtils.setCheckGroupEnabledState(headerGroup);
        WizardUtils.setCheckGroupEnabledState(backGroup);
        WizardUtils.setCheckGroupEnabledState(tabBarGroup);

        setControl(container);
        setPageComplete(true);
    }

    @Override
    public void refreshData() {
        super.refreshData();
        backCombo.refresh();
        setMessage(getStepTxt() + MessageFormat.format("Configure the \"{0}\" Application Page.", pageData.name),
                IMessageProvider.INFORMATION); // $NLX-WizardSubPageMain.Configurethe0ApplicationPage-1$
    }

    public String getSubPageLabel() {
        return WizardUtils.getTextValue(pageLabel, "");
    }

    public boolean getSubPageHeader() {
        return WizardUtils.getCheckBoxValue(headerBtn, true);
    }

    public boolean getSubPageBackBtn() {
        return WizardUtils.getCheckBoxValue(backBtn, false);
    }

    public String getSubPageBackText() {
        return WizardUtils.getTextValue(backLabel, "Back"); // $NLX-WizardSubPageMain.Back.1-1$
    }

    public boolean getSubPageTabBar() {
        return WizardUtils.getCheckBoxValue(tabBarBtn, pageData.type == WizardData.PAGE_TYPE_FORM);
    }

    public int getSubPageBackIndex() {
        if (backCombo == null) {
            return -1;
        } else {
            return backCombo.getSelectedIndex();
        }
    }

    public String[] getSubPageTabBtns() {
        String txt = WizardUtils.getTextValue(tabBtnText, "");
        String[] parts = txt.split(",");
        for (int i = 0; i < parts.length; i++) {
            parts[i] = parts[i].trim();
        }
        return parts;
    }

    public String[] getSubPageToolBarBtns() {
        String txt = WizardUtils.getTextValue(toolBarText, "");
        String[] parts = txt.split(",");
        for (int i = 0; i < parts.length; i++) {
            parts[i] = parts[i].trim();
        }
        return parts;
    }

    public boolean getNewDocBtn() {
        return WizardUtils.getCheckBoxValue(newDocBtn, pageData.type == WizardData.PAGE_TYPE_VIEW);
    }

    public boolean getEditSaveDocBtn() {
        return WizardUtils.getCheckBoxValue(editSaveDocBtn, pageData.type == WizardData.PAGE_TYPE_FORM);
    }

    public boolean getDeleteDocBtn() {
        return WizardUtils.getCheckBoxValue(deleteDocBtn, pageData.type == WizardData.PAGE_TYPE_FORM);
    }

    public int getTabBarPosition() {
        if (WizardUtils.getCheckBoxValue(bottomBtn, pageData.type == WizardData.PAGE_TYPE_FORM)) {
            return WizardData.TAB_BAR_BOTTOM;
        }
        return WizardData.TAB_BAR_TOP;
    }

    //
    // Enables/Disables groups of controls
    //
    @Override
    public void widgetSelected(SelectionEvent event) {
        if (event.widget == headerBtn) {
            WizardUtils.setCheckGroupEnabledState(headerGroup);
        } else if (event.widget == backBtn) {
            WizardUtils.setCheckGroupEnabledState(backGroup);
        } else if (event.widget == tabBarBtn) {
            WizardUtils.setCheckGroupEnabledState(tabBarGroup);
        }
    }

    @Override
    public void pageDeleted(int idx) {
        if (backCombo != null) {
            backCombo.pageDeleted(idx);
        }
    }

    //
    // Gets the next Page in the Wizard
    //
    @Override
    public WizardPage getNextPage() {
        boolean newPage = true;
        refreshData();
        switch (pageData.type) {
        case WizardData.PAGE_TYPE_NAVIGATOR:
            if (!(pageData.wizardPage[1] instanceof WizardSubPageNav)) {
                pageData.wizardPage[1] = new WizardSubPageNav(pageData);
                ((Wizard) getWizard()).addPage(pageData.wizardPage[1]);
            }
            return (pageData.wizardPage[1]);

        case WizardData.PAGE_TYPE_VIEW:
            if (pageData.wizardPage[1] instanceof WizardSubPageDataSource) {
                if (((WizardSubPageDataSource) pageData.wizardPage[1])
                        .getType() == WizardSubPageDataSource.DS_VIEW) {
                    newPage = false;
                }
            }
            if (newPage) {
                pageData.wizardPage[1] = new WizardSubPageDataSource(pageData, WizardSubPageDataSource.DS_VIEW);
                ((Wizard) getWizard()).addPage(pageData.wizardPage[1]);
            }
            return (pageData.wizardPage[1]);

        case WizardData.PAGE_TYPE_FORM:
            if (pageData.wizardPage[1] instanceof WizardSubPageDataSource) {
                if (((WizardSubPageDataSource) pageData.wizardPage[1])
                        .getType() == WizardSubPageDataSource.DS_DOC) {
                    newPage = false;
                }
            }
            if (newPage) {
                pageData.wizardPage[1] = new WizardSubPageDataSource(pageData, WizardSubPageDataSource.DS_DOC);
                ((Wizard) getWizard()).addPage(pageData.wizardPage[1]);
            }
            return (pageData.wizardPage[1]);
        }
        return super.getNextPage();
    }

    //
    // Generate the markup for the Page
    //
    @Override
    public void addElementMarkup(Element base, FacesRegistry registry) {
        Document doc = base.getOwnerDocument();

        if (getSubPageHeader()) {
            // Create the Header
            Element newHeader = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                    IExtLibTagNames.EXT_LIB_TAG_PAGE_HEADER);
            FormModelUtil.setAttribute(newHeader, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, getSubPageLabel());

            // Back Button
            if (getSubPageBackBtn()) {
                FormModelUtil.setAttribute(newHeader, IExtLibAttrNames.EXT_LIB_ATTR_BACK, getSubPageBackText());
                int backIdx = getSubPageBackIndex();
                if (backIdx >= 0) {
                    FormModelUtil.setAttribute(newHeader, IExtLibAttrNames.EXT_LIB_ATTR_MOVE_TO,
                            wizardData.getSubPageName(backIdx));
                }
            }

            // Panel for ToolBar Buttons
            Element facet = FormModelUtil.createElement(doc, registry,
                    AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_THIS_FACETS);
            Element panel = FormModelUtil.createElement(doc, registry,
                    AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_PANEL);
            FormModelUtil.setAttribute(panel, XSPTagNames.XSP_TAG_FACET_KEY, "actionFacet"); // $NON-NLS-1$

            // ToolBar Buttons
            String[] toolBarBtns = getSubPageToolBarBtns();
            for (String toolBarBtn : toolBarBtns) {
                if (toolBarBtn.length() > 0) {
                    Element newToolBarBtn = FormModelUtil.createElement(doc, registry,
                            IExtLibTagLib.EXT_LIB_NAMESPACE_URI, IExtLibTagNames.EXT_LIB_TAG_TOOLBAR_BUTTON);
                    FormModelUtil.setAttribute(newToolBarBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, toolBarBtn);
                    panel.appendChild(newToolBarBtn);
                }
            }

            // Check for document handling toolbar buttons
            switch (pageData.type) {
            case WizardData.PAGE_TYPE_VIEW:
                if (getNewDocBtn()) {
                    // Add a new document button
                    Element newToolBarBtn = FormModelUtil.createElement(doc, registry,
                            IExtLibTagLib.EXT_LIB_NAMESPACE_URI, IExtLibTagNames.EXT_LIB_TAG_TOOLBAR_BUTTON);
                    FormModelUtil.setAttribute(newToolBarBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, "New"); // $NON-NLS-1$

                    // Event Handler
                    Element eventHandler = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_EVENT_HANDLER);
                    WizardUtils.setXspEventHandlerAttrs(eventHandler, "onClick", "true", "complete"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // this.action
                    Element action = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, EventsXSPDefinitions.ACTION_TAG);

                    // moveTo
                    Element moveTo = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                            IExtLibAttrNames.EXT_LIB_ATTR_MOVE_TO);
                    // Get target Page Index
                    int idx = ((WizardSubPageDataView) pageData.wizardPage[2]).getTargetIndex();
                    WizardUtils.setXspMoveToAttrs(moveTo, "Left to Right", "slide", "true",
                            wizardData.getSubPageName(idx), null); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // Append all the elements
                    action.appendChild(moveTo);
                    eventHandler.appendChild(action);
                    newToolBarBtn.appendChild(eventHandler);
                    panel.appendChild(newToolBarBtn);
                }
                break;
            }

            facet.appendChild(panel);
            newHeader.appendChild(facet);

            base.appendChild(newHeader);
        }

        if (getTabBarPosition() == WizardData.TAB_BAR_TOP) {
            addTabBarMarkup(base, registry);
        }
    }

    public void addTabBarMarkup(Element base, FacesRegistry registry) {
        Document doc = base.getOwnerDocument();

        if (getSubPageTabBar()) {
            Element newTabBar = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                    IExtLibTagNames.EXT_LIB_TAG_TAB_BAR);
            FormModelUtil.setAttribute(newTabBar, IExtLibAttrNames.EXT_LIB_ATTR_BAR_TYPE, "segmentedControl"); // $NON-NLS-1$
            String[] tabBtns = getSubPageTabBtns();

            // TabBar Buttons
            for (String tabBtn : tabBtns) {
                if (tabBtn.length() > 0) {
                    Element newBtn = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                            IExtLibTagNames.EXT_LIB_TAG_TAB_BAR_BTN);
                    FormModelUtil.setAttribute(newBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, tabBtn);
                    newTabBar.appendChild(newBtn);
                }
            }

            switch (pageData.type) {
            case WizardData.PAGE_TYPE_FORM:
                // Get the var name if any
                String dsName = ((WizardSubPageDataSource) pageData.wizardPage[1]).getVarName();

                if (getEditSaveDocBtn()) {
                    //
                    // Add an edit document button 
                    //
                    Element newTabBarBtn = FormModelUtil.createElement(doc, registry,
                            IExtLibTagLib.EXT_LIB_NAMESPACE_URI, IExtLibTagNames.EXT_LIB_TAG_TAB_BAR_BTN);
                    FormModelUtil.setAttribute(newTabBarBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, "Edit"); // $NON-NLS-1$
                    if (!StringUtil.isEmpty(dsName)) {
                        FormModelUtil.setAttribute(newTabBarBtn, XSPAttributeNames.XSP_ATTR_RENDERED,
                                "#{javascript:!" + dsName + ".isEditable();}"); // $NON-NLS-1$ $NON-NLS-2$
                    }

                    // Event Handler
                    Element eventHandler = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_EVENT_HANDLER);
                    WizardUtils.setXspEventHandlerAttrs(eventHandler, "onClick", "true", "complete"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // this.action
                    Element action = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, EventsXSPDefinitions.ACTION_TAG);

                    // change document mode
                    Element changeMode = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, "changeDocumentMode"); // $NON-NLS-1$
                    FormModelUtil.setAttribute(changeMode, XSPAttributeNames.XSP_ATTR_MODE, "edit"); // $NON-NLS-1$
                    if (!StringUtil.isEmpty(dsName)) {
                        FormModelUtil.setAttribute(changeMode, XSPAttributeNames.XSP_ATTR_VAR, dsName);
                    }

                    // Append all the elements
                    action.appendChild(changeMode);
                    eventHandler.appendChild(action);
                    newTabBarBtn.appendChild(eventHandler);
                    newTabBar.appendChild(newTabBarBtn);

                    //
                    // Add a save document button
                    //
                    newTabBarBtn = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                            IExtLibTagNames.EXT_LIB_TAG_TAB_BAR_BTN);
                    FormModelUtil.setAttribute(newTabBarBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, "Save"); // $NON-NLS-1$
                    if (!StringUtil.isEmpty(dsName)) {
                        FormModelUtil.setAttribute(newTabBarBtn, XSPAttributeNames.XSP_ATTR_RENDERED,
                                "#{javascript:" + dsName + ".isEditable();}"); // $NON-NLS-1$ $NON-NLS-2$
                    }

                    // Event Handler
                    eventHandler = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_EVENT_HANDLER);
                    WizardUtils.setXspEventHandlerAttrs(eventHandler, "onClick", "true", "complete"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // this.action
                    action = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, EventsXSPDefinitions.ACTION_TAG);

                    // moveTo
                    Element moveTo = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                            IExtLibAttrNames.EXT_LIB_ATTR_MOVE_TO);
                    WizardUtils.setXspMoveToAttrs(moveTo, "Right to Left", "slide", "true", getSourcePageName(),
                            "true"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$

                    // Append all the elements
                    action.appendChild(moveTo);
                    eventHandler.appendChild(action);
                    newTabBarBtn.appendChild(eventHandler);
                    newTabBar.appendChild(newTabBarBtn);
                }

                if (getDeleteDocBtn()) {
                    // Add a delete documet button
                    Element newTabBarBtn = FormModelUtil.createElement(doc, registry,
                            IExtLibTagLib.EXT_LIB_NAMESPACE_URI, IExtLibTagNames.EXT_LIB_TAG_TAB_BAR_BTN);
                    FormModelUtil.setAttribute(newTabBarBtn, IExtLibAttrNames.EXT_LIB_ATTR_LABEL, "Delete"); // $NON-NLS-1$
                    if (!StringUtil.isEmpty(dsName)) {
                        FormModelUtil.setAttribute(newTabBarBtn, XSPAttributeNames.XSP_ATTR_RENDERED,
                                "#{javascript:!" + dsName + ".isNewNote();}"); // $NON-NLS-1$ $NON-NLS-2$
                    }

                    // Event Handler
                    Element eventHandler = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, XSPTagNames.XSP_TAG_EVENT_HANDLER);
                    WizardUtils.setXspEventHandlerAttrs(eventHandler, "onClick", "true", "complete"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // this.action
                    Element action = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, EventsXSPDefinitions.ACTION_TAG);

                    // this.actionGroup
                    Element actionGroup = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, "actionGroup"); // $NON-NLS-1$

                    // deleteDocument
                    Element deleteDoc = FormModelUtil.createElement(doc, registry,
                            AbstractCommonControlVisualizer.XP_CORE_NAMESPACE, "deleteDocument"); // $NON-NLS-1$
                    deleteDoc.setAttribute(XSPAttributeNames.XSP_ATTR_NAME, "");

                    FormModelUtil.setAttribute(deleteDoc, XSPAttributeNames.XSP_ATTR_VALIDATOR_MESSAGE,
                            "Are you sure you want to delete this document?"); // $NLX-WizardSubPageMain.AreyousureyouwanttodeletethisDocu-1$
                    if (!StringUtil.isEmpty(dsName)) {
                        FormModelUtil.setAttribute(deleteDoc, XSPAttributeNames.XSP_ATTR_VAR, dsName);
                    }

                    // moveTo
                    Element moveTo = FormModelUtil.createElement(doc, registry, IExtLibTagLib.EXT_LIB_NAMESPACE_URI,
                            IExtLibAttrNames.EXT_LIB_ATTR_MOVE_TO);
                    WizardUtils.setXspMoveToAttrs(moveTo, "Right to Left", "slide", "true", getSourcePageName(),
                            null); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$

                    // Append all the elements
                    actionGroup.appendChild(deleteDoc);
                    actionGroup.appendChild(moveTo);
                    action.appendChild(actionGroup);
                    eventHandler.appendChild(action);
                    newTabBarBtn.appendChild(eventHandler);
                    newTabBar.appendChild(newTabBarBtn);
                }
                break;
            }

            base.appendChild(newTabBar);
        }
    }

    //
    // Gets the source Document Collection page for this Viewer page
    //
    protected String getSourcePageName() {
        // Base it on the Back Button if one is configured
        if (getSubPageBackBtn() == true) {
            int backIdx = getSubPageBackIndex();
            if (backIdx >= 0) {
                return wizardData.getSubPageName(backIdx);
            }
        }

        // No Back button - Find the first Doc Collection page
        // with this as a target
        for (WizardDataSub subPage : wizardData.pageList) {
            if (subPage.type == WizardData.PAGE_TYPE_VIEW) {
                if (((WizardSubPageDataView) subPage.wizardPage[2]).getTargetIndex() == pageData.index) {
                    return subPage.name;
                }
            }
        }

        return "";
    }
}