/** setup page1 of the wizard */
  protected void makePageOne() {
    FontResource fonts = FontResource.getInstance();

    // grid bag constraints
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(2, 2, 2, 0);
    gbc.anchor = GridBagConstraints.SOUTH;
    gbc.fill = GridBagConstraints.BOTH;

    // >>>>> Page 1
    wizardPages[0].setLayout(new GridBagLayout());
    wizardPages[0].setAutoscrolls(true);
    // the following needed for the autoscrolls features
    wizardPages[0].addMouseMotionListener(
        new MouseMotionAdapter() {
          @Override
          public void mouseDragged(MouseEvent e) {
            Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
            ((JPanel) e.getSource()).scrollRectToVisible(r);
          }
        });

    fragmentSchemeNameGroup = new ButtonGroup();

    // scheme name choosers... first a new name
    newFragmentSchemeName = new JRadioButton("Specify name for Fragmentation Scheme: *");
    fragmentSchemeNameGroup.add(newFragmentSchemeName);
    newFragmentSchemeName.setSelected(true);
    newFragmentSchemeName.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent ae) {
            // enable the relevent components
            fragmentSchemeName.setEnabled(true);
            fragmentSchemeNameHelpLabel.setEnabled(true);

            // and disable the irrelevent ones
            fragmentSchemes.setEnabled(false);
          }
        });
    gbc.gridx = 0;
    gbc.gridy = 0;
    wizardPages[0].add(newFragmentSchemeName, gbc);

    fragmentSchemeName = new JTextField();
    gbc.gridx = 0;
    gbc.gridy = 1;
    wizardPages[0].add(fragmentSchemeName, gbc);

    // instruction ...
    fragmentSchemeNameHelpLabel =
        new JLabel(
            "* A name helps you identify" + " a scheme and compare with others.", JLabel.LEFT);
    fragmentSchemeNameHelpLabel.setFont(fonts.getSmallFont());
    gbc.insets = new Insets(1, 5, 2, 0);
    gbc.gridx = 0;
    gbc.gridy = 2;
    wizardPages[0].add(fragmentSchemeNameHelpLabel, gbc);

    // OR...
    orLabel = new JLabel("Or", JLabel.LEFT);
    orLabel.setFont(fonts.getTaskGroupFont());
    gbc.insets = new Insets(2, 2, 2, 0);
    gbc.gridx = 0;
    gbc.gridy = 3;
    wizardPages[0].add(orLabel, gbc);

    // scheme name choosers... from an existing name
    existingFragmentSchemeName =
        new JRadioButton("Choose an existing Fragmentation Scheme to add the new fragment: ");
    fragmentSchemeNameGroup.add(existingFragmentSchemeName);
    existingFragmentSchemeName.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent ae) {
            // enable the relevent components
            fragmentSchemes.setEnabled(true);

            // and disable the irrelevent ones
            fragmentSchemeName.setEnabled(false);
            fragmentSchemeNameHelpLabel.setEnabled(false);
          }
        });
    gbc.gridx = 0;
    gbc.gridy = 4;
    wizardPages[0].add(existingFragmentSchemeName, gbc);

    // and then show the fragment schemes
    // TODO ... fill up this combo
    fragmentSchemes = new JComboBox();
    fragmentSchemes.setEditable(false);
    fragmentSchemes.setEnabled(false);
    gbc.gridx = 0;
    gbc.gridy = 5;
    wizardPages[0].add(fragmentSchemes, gbc);

    //      and finally add a label for description
    descriptionLabel1 = new JLabel(stepDescriptions[0], JLabel.LEFT);
    descriptionLabel1.setFont(fonts.getDescriptionFont());
    gbc.insets = new Insets(6, 2, 2, 0);
    gbc.gridx = 0;
    gbc.gridy = 6;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.SOUTH;
    wizardPages[0].add(descriptionLabel1, gbc);
  }
  /** setup page2 of the wizard */
  protected void makePageTwo() {
    FontResource fonts = FontResource.getInstance();

    // grid bag constraints
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(2, 2, 2, 0);
    gbc.anchor = GridBagConstraints.SOUTH;
    gbc.fill = GridBagConstraints.BOTH;

    // >>>>> Page 2
    wizardPages[1].setLayout(new GridBagLayout());
    wizardPages[1].setAutoscrolls(true);
    // the following needed for the autoscrolls features
    wizardPages[1].addMouseMotionListener(
        new MouseMotionAdapter() {
          @Override
          public void mouseDragged(MouseEvent e) {
            Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
            ((JPanel) e.getSource()).scrollRectToVisible(r);
          }
        });

    // add a label for description
    descriptionLabel2 = new JLabel(stepDescriptions[1], JLabel.LEFT);
    descriptionLabel2.setFont(fonts.getDescriptionFont());
    gbc.insets = new Insets(2, 2, 6, 0);
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.SOUTH;
    wizardPages[1].add(descriptionLabel2, gbc);

    // and add the options
    automatedFragmentation = new JComboBox();
    automatedFragmentation.setEditable(false);
    automatedFragmentation.addItem("No, thanks; Show me other options.");
    automatedFragmentation.addItem("Yes, Please!");
    automatedFragmentation.addItemListener(
        new ItemListener() {
          public void itemStateChanged(ItemEvent ie) {
            if (ie.getItem().equals("Yes, Please!")) {
              methodDescription.setText("Allows you to do automated fragmentation.");
            } else {
              methodDescription.setText("Allows you to do manual selection of fragments.");
            } // end if
          }
        });
    gbc.gridx = 0;
    gbc.gridy = 1;
    wizardPages[1].add(automatedFragmentation, gbc);

    // and add the description lable for the fragmentation method
    methodDescription = new JLabel("Allows you to do manual selection of fragments.", JLabel.LEFT);
    methodDescription.setFont(fonts.getSmallFont());
    gbc.insets = new Insets(6, 2, 6, 0);
    gbc.gridx = 0;
    gbc.gridy = 2;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.SOUTH;
    wizardPages[1].add(methodDescription, gbc);
  }