com.liferay.ide.portlet.vaadin.ui.wizard.NewVaadinApplicationClassWizardPage.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.ide.portlet.vaadin.ui.wizard.NewVaadinApplicationClassWizardPage.java

Source

/*******************************************************************************
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 *******************************************************************************/

package com.liferay.ide.portlet.vaadin.ui.wizard;

import com.liferay.ide.core.util.StringPool;
import com.liferay.ide.portlet.ui.wizard.NewPortletClassWizardPage;
import com.liferay.ide.portlet.vaadin.core.operation.INewVaadinPortletClassDataModelProperties;
import com.liferay.ide.portlet.vaadin.ui.VaadinUI;
import com.liferay.ide.ui.util.SWTUtil;

import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;

/**
 * @author Henri Sara - borrows from superclass by Greg Amerson
 * @author Cindy Li
 */
@SuppressWarnings("restriction")
public class NewVaadinApplicationClassWizardPage extends NewPortletClassWizardPage
        implements INewVaadinPortletClassDataModelProperties {
    // superclass has unused fields that are named similarly, don't depend on them
    protected Button vaadinPortletClassButton;
    protected Combo vaadinPortletClassCombo;
    protected Label vaadinPortletClassLabel;

    public NewVaadinApplicationClassWizardPage(IDataModel model, String pageName, String pageDesc, String pageTitle,
            boolean fragment) {
        super(model, pageName, pageDesc, pageTitle, fragment);
    }

    protected void createApplicationClassnameGroup(Composite parent) {
        // class name
        classLabel = new Label(parent, SWT.LEFT);
        classLabel.setText(Msgs.applicationClass);
        classLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

        classText = new Text(parent, SWT.SINGLE | SWT.BORDER);
        classText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        synchHelper.synchText(classText, INewJavaClassDataModelProperties.CLASS_NAME, null);

        new Label(parent, SWT.LEFT);
    }

    @Override
    protected void createClassnameGroup(Composite parent) {
        createApplicationClassnameGroup(parent);
    }

    protected void createCustomPortletClassGroup(Composite parent) {
        // portlet class
        vaadinPortletClassLabel = new Label(parent, SWT.LEFT);
        vaadinPortletClassLabel.setText(Msgs.portletClass);
        vaadinPortletClassLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

        vaadinPortletClassCombo = new Combo(parent, SWT.DROP_DOWN);
        vaadinPortletClassCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        synchHelper.synchCombo(vaadinPortletClassCombo, VAADIN_PORTLET_CLASS, null);

        if (this.fragment) {
            SWTUtil.createLabel(parent, StringPool.EMPTY, 1);
        } else {
            vaadinPortletClassButton = new Button(parent, SWT.PUSH);
            vaadinPortletClassButton.setText(J2EEUIMessages.BROWSE_BUTTON_LABEL);
            vaadinPortletClassButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
            vaadinPortletClassButton.addSelectionListener(new SelectionListener() {

                public void widgetDefaultSelected(SelectionEvent e) {
                    // Do nothing
                }

                public void widgetSelected(SelectionEvent e) {
                    // handlePortletClassButtonPressed();
                    handlePortletClassButtonSelected(vaadinPortletClassCombo);
                }
            });
        }
    }

    protected void createSuperclassGroup(Composite parent) {
        super.createSuperclassGroup(parent);

        createCustomPortletClassGroup(parent);
    }

    protected String[] getValidationPropertyNames() {
        List<String> validationPropertyNames = new ArrayList<String>();

        if (this.fragment) {
            return new String[] { IArtifactEditOperationDataModelProperties.COMPONENT_NAME,
                    INewJavaClassDataModelProperties.JAVA_PACKAGE, INewJavaClassDataModelProperties.CLASS_NAME,
                    INewJavaClassDataModelProperties.SUPERCLASS, VAADIN_PORTLET_CLASS };
        } else {
            validationPropertyNames.add(IArtifactEditOperationDataModelProperties.PROJECT_NAME);
            validationPropertyNames.add(INewJavaClassDataModelProperties.SOURCE_FOLDER);
            validationPropertyNames.add(INewJavaClassDataModelProperties.CLASS_NAME);
            validationPropertyNames.add(INewJavaClassDataModelProperties.JAVA_PACKAGE);
            validationPropertyNames.add(INewJavaClassDataModelProperties.SUPERCLASS);
            validationPropertyNames.add(VAADIN_PORTLET_CLASS);
        }

        return validationPropertyNames.toArray(new String[0]);
    }

    // superclass selection - different base class than in new portlet wizard
    protected void handleClassButtonSelected(Control control) {
        handleClassButtonSelected(control, QUALIFIED_VAADIN_APPLICATION,
                J2EEUIMessages.SUPERCLASS_SELECTION_DIALOG_TITLE, J2EEUIMessages.SUPERCLASS_SELECTION_DIALOG_DESC);
    }

    protected void handlePortletClassButtonSelected(Control control) {
        handleClassButtonSelected(control, "javax.portlet.GenericPortlet", Msgs.portletClassSelection, //$NON-NLS-1$
                Msgs.choosePortletClass);
    }

    protected void setShellImage() {
        URL url = VaadinUI.getDefault().getBundle().getEntry("/icons/e16/vaadinportlet.png"); //$NON-NLS-1$

        Image shellImage = ImageDescriptor.createFromURL(url).createImage();

        getShell().setImage(shellImage);
    }

    private static class Msgs extends NLS {
        public static String applicationClass;
        public static String choosePortletClass;
        public static String portletClass;
        public static String portletClassSelection;

        static {
            initializeMessages(NewVaadinApplicationClassWizardPage.class.getName(), Msgs.class);
        }
    }
}