org.eclipse.jst.jsf.facelet.ui.internal.facet.FaceletChangePage.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jst.jsf.facelet.ui.internal.facet.FaceletChangePage.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Oracle Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Cameron Bateman - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.jsf.facelet.ui.internal.facet;

import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.BeansObservables;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jst.jsf.facelet.core.internal.facet.ChangeActionType;
import org.eclipse.jst.jsf.facelet.core.internal.facet.FacetChangeModel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.wst.common.project.facet.ui.AbstractFacetWizardPage;

/**
 * A common facet change UI page, mainly used for facet install/uninstall.
 * 
 * @author cbateman
 *
 */
public abstract class FaceletChangePage extends AbstractFacetWizardPage {
    private Button _chgDefaultSuffix;
    private Button _chgViewHandler;
    private Button _chgConfigureListener;
    private Button _chgWebappLifecycleListener;

    private DataBindingContext _bindingContext;
    private FacetChangeModel _dataModel;

    /**
     * @param name
     */
    public FaceletChangePage(String name) {
        super(name);
    }

    public void setConfig(final Object config) {
        _dataModel = (FacetChangeModel) config;
    }

    /**
     * @return the name of the change based on the actionType enumeration.
     */
    protected String getTextForChangeType() {
        final ChangeActionType actionType = _dataModel.getChangeActionType();

        switch (actionType) {
        case ADD:
            return "Add";

        case REMOVE:
            return "Remove";
        }

        return "*ERROR*";
    }

    private void initDefaultSuffixButton(final Composite parent) {
        _chgDefaultSuffix = new Button(parent, SWT.CHECK);
        _chgDefaultSuffix.setText(getTextForChangeType() + " '.xhtml' DEFAULT_SUFFIX parameter");
        _chgDefaultSuffix.setSelection(_dataModel.isChgDefaultSuffix());
        _chgDefaultSuffix.setLayoutData(new RowData());
        IObservableValue modelObservable = BeansObservables.observeValue(_dataModel, "chgDefaultSuffix");

        _bindingContext.bindValue(SWTObservables.observeSelection(_chgDefaultSuffix), modelObservable, null, null);
    }

    private void initViewHandlerButton(final Composite parent) {
        _chgViewHandler = new Button(parent, SWT.CHECK);
        _chgViewHandler.setText(getTextForChangeType() + " Facelet view handler");
        _chgViewHandler.setSelection(_dataModel.isChgViewHandler());
        _chgViewHandler.setLayoutData(new RowData());
        IObservableValue modelObservable = BeansObservables.observeValue(_dataModel, "chgViewHandler");

        _bindingContext.bindValue(SWTObservables.observeSelection(_chgViewHandler), modelObservable, null, null);
    }

    private void initConfigureListener(final Composite parent) {
        _chgConfigureListener = new Button(parent, SWT.CHECK);
        _chgConfigureListener
                .setText(getTextForChangeType() + " configure listener (needed by some Tomcat containers)");
        _chgConfigureListener.setSelection(_dataModel.isChgConfigureListener());
        _chgConfigureListener.setLayoutData(new RowData());
        IObservableValue modelObservable = BeansObservables.observeValue(_dataModel, "chgConfigureListener");

        _bindingContext.bindValue(SWTObservables.observeSelection(_chgConfigureListener), modelObservable, null,
                null);
    }

    private void initWebappLifecycleListener(final Composite parent) {
        _chgWebappLifecycleListener = new Button(parent, SWT.CHECK);
        _chgWebappLifecycleListener.setText(
                getTextForChangeType() + " web application lifecycle listener (needed by some Tomcat containers)");
        _chgWebappLifecycleListener.setSelection(_dataModel.isChgConfigureListener());
        _chgWebappLifecycleListener.setLayoutData(new RowData());
        IObservableValue modelObservable = BeansObservables.observeValue(_dataModel, "chgWebAppLifecycleListener");

        _bindingContext.bindValue(SWTObservables.observeSelection(_chgWebappLifecycleListener), modelObservable,
                null, null);
    }

    public void createControl(final Composite parent) {
        setTitle("Facelet");
        setMessage("Configure Facelet settings");

        _bindingContext = new DataBindingContext();

        // WizardPageSupport.create(this, _bindingContext);

        final Composite control = new Composite(parent, SWT.NONE);
        final RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
        rowLayout.fill = true;
        control.setLayout(rowLayout);

        final Group webXMLGroup = new Group(control, SWT.NONE);
        webXMLGroup.setLayout(rowLayout);
        webXMLGroup.setText("Deployment Descriptor (web.xml) Configuration");
        initDefaultSuffixButton(webXMLGroup);
        initConfigureListener(webXMLGroup);
        initWebappLifecycleListener(webXMLGroup);

        final Group facesConfigGroup = new Group(control, SWT.NONE);
        facesConfigGroup.setLayout(rowLayout);
        facesConfigGroup.setText("Application (faces-config.xml) Configuration");
        initViewHandlerButton(facesConfigGroup);

        setControl(control);
    }
}