com.siteview.mde.internal.ui.wizards.feature.AbstractFeatureSpecPage.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.ui.wizards.feature.AbstractFeatureSpecPage.java

Source

/*******************************************************************************
 *  Copyright (c) 2000, 2011 IBM Corporation and others.
 *  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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

package com.siteview.mde.internal.ui.wizards.feature;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import com.siteview.mde.internal.core.ifeature.IFeatureModel;
import com.siteview.mde.internal.core.util.IdUtil;
import com.siteview.mde.internal.core.util.VersionUtil;
import com.siteview.mde.internal.ui.MDEUIMessages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;

public abstract class AbstractFeatureSpecPage extends WizardNewProjectCreationPage {

    protected Text fFeatureNameText;
    protected Text fFeatureVersionText;
    protected Text fLibraryText;
    protected String fInitialId;
    protected String fInitialName;
    protected IFeatureModel fFeatureToPatch;
    protected boolean fSelfModification;
    private boolean fUpdateName = true;

    public AbstractFeatureSpecPage() {
        super("specPage"); //$NON-NLS-1$
    }

    public void createControl(Composite parent) {
        super.createControl(parent);
        Composite comp = (Composite) getControl();

        createContents(comp);

        initialize();
        attachListeners();

        Dialog.applyDialogFont(comp);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, getHelpId());
    }

    protected abstract void createContents(Composite container);

    protected abstract void initialize();

    protected abstract void attachListeners(ModifyListener listener);

    protected abstract String getHelpId();

    protected abstract void saveSettings(IDialogSettings settings);

    protected void createCommonInput(Composite common) {
        Label label = new Label(common, SWT.NULL);
        label.setText(MDEUIMessages.NewFeatureWizard_SpecPage_name);
        fFeatureNameText = new Text(common, SWT.BORDER);
        fFeatureNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        label = new Label(common, SWT.NULL);
        label.setText(MDEUIMessages.NewFeatureWizard_SpecPage_version);
        fFeatureVersionText = new Text(common, SWT.BORDER);
        fFeatureVersionText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    }

    protected void createInstallHandlerText(Composite parent) {
        Label libraryLabel = new Label(parent, SWT.NULL);
        libraryLabel.setText(MDEUIMessages.NewFeatureWizard_SpecPage_library);
        fLibraryText = new Text(parent, SWT.SINGLE | SWT.BORDER);
        fLibraryText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    }

    protected abstract void updateNameRelativeFields();

    protected boolean validatePage() {
        boolean valid = super.validatePage();
        if (!valid)
            return valid;
        if (fUpdateName)
            updateNameRelativeFields();
        return validateBaseContent(false);
    }

    private boolean validateBaseContent(boolean validateSuper) {
        if (validateSuper && !super.validatePage())
            return false;
        if (!setValidationMessage(verifyIdRules()))
            return false;
        if (!setValidationMessage(verifyVersion()))
            return false;
        if (!setValidationMessage(validateContent()))
            return false;

        setPageComplete(true);
        setErrorMessage(null);
        return true;
    }

    private boolean setValidationMessage(String message) {
        if (message == null)
            return true;
        setPageComplete(false);
        setErrorMessage(message);
        return false;
    }

    protected abstract String validateContent();

    public String getInitialName() {
        return fInitialName;
    }

    public void setInitialName(String initialName) {
        fInitialName = initialName;
    }

    public void setInitialId(String initialId) {
        fInitialId = initialId;
    }

    public String getInitialId() {
        return fInitialId;
    }

    protected String verifyVersion() {
        String value = fFeatureVersionText.getText();
        if (VersionUtil.validateVersion(value).getSeverity() != IStatus.OK)
            return MDEUIMessages.NewFeatureWizard_SpecPage_versionFormat;
        return null;
    }

    protected abstract String getFeatureId();

    protected String verifyIdRules() {
        String id = getFeatureId();
        if (id == null || id.length() == 0)
            return MDEUIMessages.NewFeatureWizard_SpecPage_missing;
        if (!IdUtil.isValidCompositeID(id)) {
            return MDEUIMessages.NewFeatureWizard_SpecPage_invalidId;
        }
        return null;
    }

    public IFeatureModel getFeatureToPatch() {
        return fFeatureToPatch;
    }

    protected String getInstallHandlerLibrary() {
        String library = fLibraryText.getText();
        if (library == null || library.length() == 0)
            return null;
        if (!library.endsWith(".jar") && !library.endsWith("/") && !library.equals(".")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            library += "/"; //$NON-NLS-1$
        return library;
    }

    private void attachListeners() {
        ModifyListener listener = new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                if (!fSelfModification) {
                    fUpdateName = false;
                    setPageComplete(validateBaseContent(true));
                }
            }
        };
        attachListeners(listener);
        fFeatureNameText.addModifyListener(listener);
        fFeatureVersionText.addModifyListener(listener);
        fLibraryText.addModifyListener(listener);
    }

    public abstract FeatureData getFeatureData();
}