org.jboss.tools.common.model.ui.wizards.special.SpecialWizardStep.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.common.model.ui.wizards.special.SpecialWizardStep.java

Source

/*******************************************************************************
 * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is 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:
 *     Exadel, Inc. and Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package org.jboss.tools.common.model.ui.wizards.special;

import java.beans.PropertyChangeEvent;
import java.util.Properties;

import org.jboss.tools.common.model.ui.attribute.XAttributeSupport;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;

import org.jboss.tools.common.meta.action.XAttributeData;
import org.jboss.tools.common.meta.action.impl.SpecialWizardSupport;

public class SpecialWizardStep extends AbstractSpecialWizardStep implements java.beans.PropertyChangeListener {
    protected XAttributeSupport attributes = new XAttributeSupport();
    protected boolean isDataChanged = false;
    protected Composite stepControl = null;

    public SpecialWizardStep() {
    }

    public void dispose() {
        if (wizard != null) {
            wizard.getProgressPart().dispose();
        }
        super.dispose();
        if (attributes != null)
            attributes.dispose();
        attributes = null;
    }

    public void setSupport(SpecialWizardSupport support, int i) {
        super.setSupport(support, i);
        if (attributes == null)
            attributes = new XAttributeSupport();
        attributes.removePropertyChangeListener(this);
        attributes.init(support.getTarget(), support.getEntityData()[i]);
        attributes.addPropertyChangeListener(this);
    }

    public Control createControl(Composite parent) {
        stepControl = attributes.createControl(parent);
        String focusAttr = support.getFocusAttribute(id);
        if (focusAttr != null && attributes.getFieldEditorByName(focusAttr) != null) {
            attributes.getFieldEditorByName(focusAttr).setFocus();
        }
        /* Add Progress Monitor only when may be needed
         * If there appears such a case an interface method
         * will be added support.needsProgressMonitor(id);
         */
        ///      createProgressMonitorPart(parent);
        updateFieldEnablement();
        return stepControl;
    }

    public void save() {
        if (attributes != null)
            attributes.store();
    }

    public void clear() {
        if (attributes != null)
            attributes.load();
    }

    public Point getMinimumSize() {
        return null;
    }

    public Point getMaximumSize() {
        return null;
    }

    public void propertyChange(PropertyChangeEvent arg0) {
        isDataChanged = true;
        attributes.store();
        validate();
        updateFieldEnablement();
    }

    public void validate() {
        if (validator == null || attributes == null)
            return;
        wizard.dataChanged(validator, attributes.getValues());
    }

    public boolean isDataChanged() {
        return isDataChanged;
    }

    public void updateFieldEnablement() {
        if (stepControl == null || stepControl.isDisposed())
            return;
        Properties p = attributes.getValues();
        XAttributeData[] ad = support.getEntityData()[id].getAttributeData();
        for (int i = 0; i < ad.length; i++) {
            String n = ad[i].getAttribute().getName();
            boolean b = support.isFieldEditorEnabled(id, n, p);
            FieldEditor f = attributes.getFieldEditorByName(n);
            if (f != null)
                f.setEnabled(b, stepControl);
        }
    }

}