package com.interpress_project.modernshare.client.view.wizard;

import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.interpress_project.modernshare.client.controller.model.LocalModelManager;
import com.interpress_project.modernshare.client.view.ViewManager;

/**
 * @stereotype Wizard page2
 */

public class CheckoutWizardPage2 extends WizardPage {
	protected String path = null;

	/**
	 * RegWizardPage1
	 */
	public CheckoutWizardPage2() {
		super("CheckoutWizardPage2");

		setTitle("ホットショット・フォルダの指定");
		setDescription("ホットショット・フォルダとして機能するローカルフォルダを指定します。");
		setPageComplete(false);
	}

	/**
	 * Creates the controls for this page
	 */
	public void createControl(Composite parent) {
		Composite composite = new Composite(parent, SWT.NULL);
		GridLayout layout = new GridLayout();
		composite.setLayout(layout);
		layout.numColumns = 3;
		layout.verticalSpacing = 9;

		Label label = new Label(composite, SWT.NULL);
		label.setText("ホットショット・フォルダ:");
		/**
		 * フォルダパスの入力ボックス
		 */
		final Text txtPath = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
		txtPath.setLayoutData(gd);
		txtPath.addModifyListener(new ModifyListener() {
			// Validate a file path.
			public void modifyText(ModifyEvent modifyEvent) {
				pageIncomplete(null);
				path = txtPath.getText();
				LocalModelManager localmgr = LocalModelManager.getInstance();
				if (localmgr.isPathOverwrapped(path)) {
					pageIncomplete("指定されたローカルフォルダは登録されたホットショット・フォルダと重複しています。\n他のローカルフォルダを選択します。");
					return;
				}
				pageComplete();
			}
		});

		/**
		 * フォルダパスのフォルダ指定ボタン
		 */
		final Button button = new Button(composite, SWT.NONE);
		button.setText("...");
		button.setFocus();
		button.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent selectionEvent) {
				ViewManager vmgr = ViewManager.getInstance();
				String path = vmgr.getDialogManager().createDirectoryDialog("ホットショット・フォルダの指定", "");
				if (path != null) {
					txtPath.setText(path);
				}
			}
		});
		setControl(composite);
	}

	/**
	 * pageIncomplete
	 * @param msg
	 */
	protected void pageIncomplete(String msg) {
		setErrorMessage(msg);
		setPageComplete(false);
	}

	/**
	 * pageComplete
	 */
	protected void pageComplete() {
		setErrorMessage(null);
		setPageComplete(path.length() > 0);
	}

	/**
	 * getPath
	 * @return
	 */
	public String getPath() {
		return path;
	}

	/**
	 * getNextPage
	 * @return IWizardPage
	 */
	public IWizardPage getNextPage() {
		CheckoutConfirmPage checkoutConfirmPage = (CheckoutConfirmPage) getWizard().getPage("CheckoutConfirmPage");
		checkoutConfirmPage.setPath(getPath());
		return super.getNextPage();
	}
}
