/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/

package installer;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NavPanel extends JPanel implements ActionListener {
    
    NavPanel(InstallWizard wizard, boolean bBack, boolean bNext, boolean bCancel, String prev, String next) {
        setBackground(Color.white);
        setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.LOWERED));
        this.wizard = wizard;
        this.next = next;
        this.prev = prev;
        navBack = new javax.swing.JButton("<< Back");
        navNext = new javax.swing.JButton("Next >>");
        navCancel = new javax.swing.JButton("Cancel");
        setLayout(new GridBagLayout());
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.insets = new java.awt.Insets(1, 1, 1, 1);
	  gridBagConstraints1.anchor = gridBagConstraints1.WEST;	

        gridBagConstraints2 = new java.awt.GridBagConstraints();
        gridBagConstraints2.gridx = 2;
        gridBagConstraints2.gridy = 0;
        
        gridBagConstraints3 = new java.awt.GridBagConstraints();
        gridBagConstraints3.gridx = 6;
        gridBagConstraints3.gridy = 0;
        
        navNext.setEnabled(bNext);
        navBack.setEnabled(bBack);
        navCancel.setEnabled(bCancel);
        navNext.addActionListener(this);
        navBack.addActionListener(this);
        navCancel.addActionListener(this);
        add(navBack, gridBagConstraints1);
        add(navNext, gridBagConstraints2);
        add(navCancel, gridBagConstraints3);
    }
    
    public void enableNext(boolean bEnable) {
        navNext.setEnabled(bEnable);
    }
    
    public void enableBack(boolean bEnable) {
        navBack.setEnabled(bEnable);
    }
    
    public void enableCancel(boolean bEnable) {
        navCancel.setEnabled(bEnable);
    }
    
    public void enableIDE(boolean bEnable) {
	ideDetected = bEnable;
    }
    
    public void actionPerformed(ActionEvent ev) {
        if ((ev.getSource() == navNext) && (next.length() != 0)) {
            wizard.show(next);
        }
        if ((ev.getSource() == navBack) && (prev.length() != 0)) {
            wizard.show(prev);
        }
        if (ev.getSource() == navCancel) {
	    if( ideDetected ) {
		    wizard.show(InstallWizard.IDEWELCOME);
	    }
	    else {
		    wizard.exitForm(null);
	    }
	    enableIDE(false);
        }
    }
    
    public void setNextListener(ActionListener listener) {
        navNext.addActionListener(listener);
    }
    
    public void setBackListener(ActionListener listener) {
        navBack.addActionListener(listener);
    }

    public void setCancelListener(ActionListener listener) {
        navCancel.addActionListener(listener);
    }
	
	public void removeNextListener(ActionListener listener)
	{
		navNext.removeActionListener(listener);
	}
    
	public void removeBackListener(ActionListener listener)
	{
		navBack.removeActionListener(listener);
	}
    
	public void removeCancelListener(ActionListener listener)
	{
		navCancel.removeActionListener(listener);
	}
	
    public JButton navBack;
    public JButton navNext;
    public JButton navCancel;
    private GridBagConstraints gridBagConstraints1;
    private GridBagConstraints gridBagConstraints2;
    private GridBagConstraints gridBagConstraints3;
    private InstallWizard wizard;
    private String next;
    private String prev;
    private boolean ideDetected = false;
}
