/** 
Licensed Materials - Property of IBM

IBM Cognos Products: DOCS

(C) Copyright IBM Corp. 2005, 2008

US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
*/
/**
 * packageDialog.java
 *
 * Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
 * Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
 */
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.*;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.*;

public class packageDialog extends JDialog {

	// Define the components of the dialog box
	private JList contentList;

	private JButton okButton;

	private JButton cancelButton;

	private String archiveStr = null;

	private String deployArchiveStr=null;

	private String deploySpec = null;

	private String[] contentStr;

	private CRNConnect oneConnect;

	private Object[] publicContentList;

	public String stringOfID = null;

	public packageDialog(Frame owner, String title, boolean modal,
			String myArchive, String deployArchive, String[] myContent, CRNConnect myConnect,
			String deployType) {
		super(owner, title, modal);
		archiveStr = myArchive;
		deployArchiveStr=deployArchive;
		contentStr = myContent;
		oneConnect = myConnect;
		deploySpec = deployType;

		getContentPane().setLayout(new BorderLayout(2, 2));

		contentList = new JList(contentStr);
		JScrollPane scrollPane = new JScrollPane(contentList,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		scrollPane.setSize(230, 80);

		JPanel buttonPanel = new JPanel();

		okButton = new JButton("Ok");
		okButton.setSize(80, 30);
		buttonPanel.add(okButton);

		cancelButton = new JButton("Cancel");
		cancelButton.setSize(80, 30);
		buttonPanel.add(cancelButton);

		getContentPane().add(BorderLayout.NORTH, scrollPane);
		getContentPane().add(BorderLayout.SOUTH, buttonPanel);

		setTitle("Select the public folders contents");
		setSize(280, 250);
		setLocation(380, 250);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		// Listen for ok button click
		okButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				okButtonClicked();
			}
		});

		// Listen for cancel button click
		cancelButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				cancelButtonClicked();
			}
		});

		// Listen for window closing: treat like cancel button
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent event) {
				cancelButtonClicked();
			}
		});
	}

	/**
	 * use to handle when OK button is clicked
	 */
	private void okButtonClicked() {

		Deployment myDeploy = new Deployment();

		publicContentList = contentList.getSelectedValues();
		String[] contentList = new String[publicContentList.length];

		for (int i = 0; i < publicContentList.length; i++) {
			contentList[i] = (String) publicContentList[i];
		}

		if (contentList.length == 0) {
			int result = JOptionPane
					.showConfirmDialog(
							null,
							"No folder is selected. Click Yes to continue the deployment or Cancel to return to your selection.",
							null, JOptionPane.OK_CANCEL_OPTION);
			if (result != 0) {
				return;
			}
		}
		stringOfID = myDeploy.deployContent(deploySpec, archiveStr,
				deployArchiveStr, contentList, oneConnect);
		dispose();
	}

	/**
	 * use to handle when Cancel button is clicked
	 */
	private void cancelButtonClicked() {
		dispose(); // destroy this dialog box
		return;
	}

	/**
	 * use to get the process string code
	 */
	public String getDeploymentID() {
		return stringOfID;
	}

}