com.nokia.carbide.internal.bugreport.ui.wizards.NewBugReportWizard.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.carbide.internal.bugreport.ui.wizards.NewBugReportWizard.java

Source

/*
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/

package com.nokia.carbide.internal.bugreport.ui.wizards;

import org.eclipse.jface.wizard.*;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.core.runtime.*;
import com.nokia.carbide.internal.bugreport.export.IProduct;
import com.nokia.carbide.internal.bugreport.model.BugReportConsole;
import com.nokia.carbide.internal.bugreport.model.Communication;
import com.nokia.carbide.internal.bugreport.model.ConsoleLine;
import com.nokia.carbide.internal.bugreport.model.FieldsHandler;
import com.nokia.carbide.internal.bugreport.model.ProductHandler;
import com.nokia.carbide.internal.bugreport.resources.*;

import java.util.*;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;

/**
 * Bug_Report wizard
 *
 */
public class NewBugReportWizard extends Wizard implements IWizard {

    static private final ImageDescriptor bannerImgDescriptor = ImageResourceManager
            .getImageDescriptor(ImageKeys.WIZARD_BANNER);

    ProductSelectionPage productPage;
    BugDescriptionPage bugPage;
    SummaryPage summaryPage;
    FieldsHandler fieldsHandler = null;
    ProductHandler productHandler = null;
    BugReportConsole console = null;

    public NewBugReportWizard() throws RuntimeException {
        setDefaultPageImageDescriptor(bannerImgDescriptor);
        productHandler = new ProductHandler();
        fieldsHandler = new FieldsHandler();
        console = new BugReportConsole();
    }

    @Override
    public boolean performFinish() {
        try {
            getContainer().run(true, true, new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    monitor.beginTask(Messages.getString("NewBugReportWizard.SendingReport"), //$NON-NLS-1$
                            IProgressMonitor.UNKNOWN);
                    String bugNumber = Communication.sendBugReport(fieldsHandler.getFieldsForSending(),
                            productHandler.getProduct());
                    ConsoleLine line = new ConsoleLine(productHandler.getProduct(), bugNumber);
                    console.addLineToConsole(line);

                    monitor.done();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            MessageDialog.openError(this.getShell(), Messages.getString("NewBugReportWizard.BugReporting"), //$NON-NLS-1$
                    e.getCause().getLocalizedMessage());
            return false;
        }

        return true;
    }

    @Override
    public void addPages() {

        // product is not initialized if there were multiple product plugins.
        // in this case add a product selection page.
        if (productHandler.getProduct() == null) {
            productPage = new ProductSelectionPage(productHandler.getProducts());
            addPage(productPage);
        }

        bugPage = new BugDescriptionPage();
        addPage(bugPage);
        bugPage.setProduct(productHandler.getProduct());

        summaryPage = new SummaryPage();
        addPage(summaryPage);

        setWindowTitle(Messages.getString("NewBugReportWizard.BugReporting")); //$NON-NLS-1$
    }

    @Override
    public IWizardPage getNextPage(IWizardPage page) {

        // if there was a product selection page (because of multiple product plugins)
        // get the selected product and give it to bugPage. Return bugPage for showing.
        if (page == productPage) {
            IProduct product = productPage.getProduct();
            if (product == null) {
                throw new RuntimeException(Messages.getString("NewBugReportWizard.CouldNotInitializeProduct")); //$NON-NLS-1$
            }
            productHandler.setProduct(product);
            bugPage.setProduct(product);
            return bugPage;
            // Changing from bug_page to summary page.
        } else if (page == bugPage) {
            if (bugPage.canChangePage()) {
                Hashtable<String, String> fields = bugPage.getFields();
                fieldsHandler.prepareFinalFields(fields, productHandler.getProduct());
                summaryPage.setSummaryText(fieldsHandler.getSummary());
                return summaryPage;
            }
        }
        return null;
    }

    @Override
    public boolean canFinish() {
        if (getContainer().getCurrentPage() == summaryPage)
            return true;

        return false;
    }

    @Override
    public boolean needsProgressMonitor() {
        return true;
    }

}