org.jboss.tools.common.verification.ui.vrules.wizard.runtime2.VerifyWizardView.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.common.verification.ui.vrules.wizard.runtime2.VerifyWizardView.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.verification.ui.vrules.wizard.runtime2;

import java.text.MessageFormat;
import java.util.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.jboss.tools.common.model.ui.wizards.query.*;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.wizard.ProgressMonitorPart;

import org.jboss.tools.common.verification.ui.Messages;
import org.jboss.tools.common.verification.ui.vrules.wizard.runtime.VTaskListenerSafeImpl;
import org.jboss.tools.common.meta.key.*;
import org.jboss.tools.common.model.*;
import org.jboss.tools.common.verification.vrules.*;
import org.jboss.tools.common.verification.vrules.layer.VModelFactory;
import org.jboss.tools.common.verification.vrules.layer.VObjectImpl;

public class VerifyWizardView extends AbstractQueryWizardView {
    static final String COMMAND_CANCEL = Messages.VerifyWizardView_Cancel;
    static final String COMMAND_RUN = Messages.VerifyWizardView_Run;
    static final String COMMAND_CLOSE = Messages.VerifyWizardView_Close;
    protected XModel model;
    protected VObject vobject;
    protected VTask task = null;
    protected VTaskListenerImpl taskListener = new VTaskListenerImpl(this);
    protected VTaskListener listener = new VTaskListenerSafeImpl(taskListener);
    ProgressMonitorPart progressMonitorPart;

    public VerifyWizardView() {
        this.setMessage(WizardKeys.getString("VerifyWizardView.Message")); //$NON-NLS-1$
        this.setTitle(WizardKeys.getString("VerifyWizardView.Title")); //$NON-NLS-1$
        this.setWindowTitle(WizardKeys.getString("VerifyWizardView.WindowTitle")); //$NON-NLS-1$
    }

    private VManager getRulesManager() {
        return VHelper.getManager(/*PreferenceModelUtilities.getPreferenceModel()*/);
    }

    public void setDialog(Dialog d) {
        super.setDialog(d);
        d.getShell().addShellListener(new CL());
    }

    class CL extends ShellAdapter {
        boolean activated = false;

        public void shellActivated(ShellEvent e) {
            if (activated)
                return;
            activated = true;
            action(COMMAND_RUN);
        }
    }

    public Control createControl(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.horizontalSpacing = 10;
        layout.marginHeight = 10;
        layout.verticalSpacing = 10;
        layout.marginWidth = 10;
        composite.setLayout(layout);
        GridData gd = new GridData(GridData.FILL_BOTH);
        composite.setLayoutData(gd);

        GridLayout pmlayout = new GridLayout();
        pmlayout.numColumns = 1;
        pmlayout.marginWidth = 20;
        progressMonitorPart = new ProgressMonitorPart(composite, pmlayout, SWT.DEFAULT);
        progressMonitorPart.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        progressMonitorPart.setVisible(true);
        return composite;
    }

    public void setObject(Object data) {
        Properties p = findProperties(data);
        if (p != null) {
            String key = p.getProperty("help"); //$NON-NLS-1$
            setHelpKey(key);
        }
        Object[] os = (Object[]) data;
        XModelObject object = (XModelObject) os[0];
        model = object.getModel();
        //      VManager rulesManager = getRulesManager();
        ruleCount = 0;
        VModel vmodel = VModelFactory.getModel(object.getModel());
        vobject = vmodel.getObjectByPath(object.getPath());
        VRule[] rules = VHelper.getRules(getRulesManager(), vobject);
        ruleCount = (rules == null) ? 0 : rules.length;
    }

    static int PROGRESS_INIT_SIZE = 40;
    static int PROGRESS_MAIN_SIZE = 160;
    static int PROGRESS_FIN_SIZE = 40;
    static int PROGRESS_TOTAL_SIZE = PROGRESS_INIT_SIZE + PROGRESS_MAIN_SIZE + PROGRESS_FIN_SIZE;

    public void action(String command) {
        if (COMMAND_RUN.equals(command)) {
            if (task != null)
                task.removeTaskListener(listener);
            taskListener.setModel(model);
            task = getRulesManager().createTask(vobject);
            taskListener.setTask(task);
            task.addTaskListener(listener);
            progressMonitorPart.beginTask(MessageFormat.format(Messages.VerifyWizardView_VerifyTask,
                    ((VObjectImpl) vobject).getModelObject().getPresentationString()), PROGRESS_TOTAL_SIZE);
            progressMonitorPart.worked(PROGRESS_INIT_SIZE);
            task.start();
        } else if (COMMAND_CANCEL.equals(command)) {
            if (task != null) {
                task.removeTaskListener(listener);
                task.stop();
                task = null;
            }
            setCode(0);
            dispose();
        } else if (COMMAND_CLOSE.equals(command)) {
            setCode(0);
            dispose();
        }
    }

    public String[] getCommands() {
        return new String[] { CANCEL };
    }

    protected int ruleCount = 1;
    int ruleIndex = 0;

    void onRuleFinished(VObject object) {
        if (vobject != object || ruleIndex >= ruleCount)
            return;
        ruleIndex++;
        progressMonitorPart.worked(PROGRESS_MAIN_SIZE / ruleCount);
    }

    void onFinish() {
        progressMonitorPart.worked(PROGRESS_FIN_SIZE);
    }
}