net.rim.ejde.internal.ui.dialogs.NewVersionDetectionDialog.java Source code

Java tutorial

Introduction

Here is the source code for net.rim.ejde.internal.ui.dialogs.NewVersionDetectionDialog.java

Source

/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.ui.dialogs;

import net.rim.ejde.internal.util.Messages;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
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.layout.GridLayout;
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.Shell;
import org.eclipse.ui.internal.about.AboutTextManager;
import org.eclipse.ui.internal.about.AboutUtils;

/**
 * New Version Detection Dialog
 *
 * @author tlai
 *
 */
@SuppressWarnings("restriction")
public class NewVersionDetectionDialog extends MessageDialog implements SelectionListener {

    private static final int DEFAULT_DAYS = 10;
    private static final int TOTAL_DAYS = 15;
    private String upgradeUrl;
    private Button _snooze;
    private Button _ignore;
    private Button _ignoreAll;
    private Button[] buttons;
    private String[] buttonLabels;
    private int defaultButtonIndex;
    private int snoozeDays;
    private Combo combo;

    /**
     * A constructor extends a constructor of MessageDialog
     *
     * @param parentShell
     * @param dialogTitle
     * @param dialogTitleImage
     * @param dialogMessage
     * @param dialogImageType
     * @param dialogButtonLabels
     * @param defaultIndex
     */
    public NewVersionDetectionDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage,
            String dialogMessage, String dialogUpgradeUrl, int dialogImageType, String[] dialogButtonLabels,
            int defaultIndex) {
        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, 0);
        this.buttonLabels = dialogButtonLabels;
        this.defaultButtonIndex = defaultIndex;
        this.upgradeUrl = dialogUpgradeUrl;
    }

    protected Control createMessageArea(Composite composite) {

        Control parent = super.createMessageArea(composite);

        final Label spacerLabel = new Label(composite, SWT.NONE);
        spacerLabel.setLayoutData(new GridData());

        String titleLabel = Messages.BB_PLUG_IN_URL_LABEL;

        Composite noteControl = createMessageComposite((Composite) parent, titleLabel, upgradeUrl);
        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        noteControl.setLayoutData(gd);

        return parent;

    }

    /**
     * add a message into message area
     *
     * @param parent
     * @param titleLabel
     * @param upgradeUrl
     * @return
     */
    private Composite createMessageComposite(Composite parent, String titleLabel, String upgradeUrl) {

        Composite messageComposite = new Composite(parent, SWT.NONE);
        GridLayout messageLayout = new GridLayout();
        messageLayout.marginWidth = 0;
        messageLayout.marginHeight = 0;
        messageComposite.setLayout(messageLayout);
        messageComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

        final Label noteLabel = new Label(messageComposite, SWT.BOLD);
        noteLabel.setText(titleLabel);
        noteLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

        StyledText text = new StyledText(messageComposite,
                SWT.FULL_SELECTION | SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);

        text.setFont(parent.getFont());
        GridData data = new GridData(GridData.FILL, GridData.FILL, true, true);
        text.setLayoutData(data);
        text.setBackground(messageComposite.getBackground());
        text.setCursor(null);
        text.setFocus();

        AboutTextManager textManager = new AboutTextManager(text);
        textManager.setItem(AboutUtils.scan(upgradeUrl));

        return messageComposite;
    }

    /**
     * override method
     *
     * @param parent
     */
    protected void createButtonsForButtonBar(Composite parent) {

        buttons = new Button[buttonLabels.length];
        String label = buttonLabels[0];
        _snooze = createButton(parent, 0, label, false);
        buttons[0] = _snooze;

        ((GridLayout) parent.getLayout()).numColumns++;
        combo = new Combo(parent, SWT.Selection);

        String[] days = new String[TOTAL_DAYS];
        days[0] = "1 " + Messages.DAY;
        for (int i = 1; i <= TOTAL_DAYS - 1; i++) {
            days[i] = i + 1 + " " + Messages.DAYS;
        }
        combo.setItems(days);
        combo.setText(Messages.DEFAULT_DAYS);

        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        combo.setLayoutData(data);
        combo.addSelectionListener(this);
        combo.pack();

        String label2 = buttonLabels[1];
        _ignore = createButton(parent, 1, label2, false);
        buttons[1] = _ignore;

        String label3 = buttonLabels[2];
        _ignoreAll = createButton(parent, 2, label3, false);
        buttons[2] = _ignoreAll;
    }

    public void widgetDefaultSelected(SelectionEvent e) {
        // TODO Auto-generated method stub
    }

    public void widgetSelected(SelectionEvent e) {
        String[] temp = combo.getText().split(" ");
        snoozeDays = Integer.parseInt(temp[0]);
    }

    public int getSnoozeDays() {
        if (snoozeDays == 0) {
            snoozeDays = DEFAULT_DAYS;
        }
        return snoozeDays;
    }

}