package com.bredexsw.guidancer.examples.aut.meters.ui.wizards;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;


/**
 * This class extends <b>WizardDialog</b>. The reason for it is,
 * to give names to the dialog buttons.
 * 
 */
public class NamedWizardDialog extends WizardDialog {
    
    /** collection of (button_id, name) pairs */
    private static Collection<Map.Entry<Integer, String>> entries;
    static {
        HashMap<Integer, String> map = 
            new HashMap<Integer, String>();
        map.put(IDialogConstants.FINISH_ID, "ok");      //$NON-NLS-1$
        map.put(IDialogConstants.CANCEL_ID, "cancel");  //$NON-NLS-1$
        map.put(IDialogConstants.HELP_ID,   "help");    //$NON-NLS-1$
        map.put(IDialogConstants.NEXT_ID,   "next");    //$NON-NLS-1$
        map.put(IDialogConstants.BACK_ID,   "back");    //$NON-NLS-1$
        entries = map.entrySet();
    };
    
    /**
     * 
     * @param parentShell shell 
     * @param newWizard wizard
     */
    public NamedWizardDialog(Shell parentShell, IWizard newWizard) {
        super(parentShell, newWizard);
    }
 
    /**
     * After creating the buttons, we give names to the buttons
     * 
     * {@inheritDoc}
     * @see org.eclipse.jface.wizard.WizardDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
     */
    protected void createButtonsForButtonBar(Composite parent) {
        super.createButtonsForButtonBar(parent);
        // after creation of the buttons, we do assign names
        for (Map.Entry<Integer, String> entry : entries) {
            Button btn = getButton(entry.getKey());
            if (btn != null) {
                btn.setData("GD_COMP_NAME", entry.getValue()); //$NON-NLS-1$ 
            }
        }
    }
}