/*
 * このソースコードは blanco Frameworkによって自動生成されています。
 */
package blanco.plugin.valueobject.wizards;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

import blanco.plugin.valueobject.BlancoValueObjectPluginConstants;

/**
 */
public abstract class AbstractBlancoValueObjectWizardPage extends WizardPage {
    /**
     */
    private Label labelMessage1;

    /**
     */
    private Label labelMessage2;

    /**
     */
    private ISelection selection;

    /**
     *
     * @param selection
     */
    public AbstractBlancoValueObjectWizardPage(final ISelection selection) {
        super("wizardPage");
        setTitle("blancoValueObject プラグイン 利用支援ウィザード");
        this.selection = selection;
    }

    /**
     *
     * @param parent
     */
    public void createControl(final Composite parent) {
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;

        Composite container = new Composite(parent, SWT.NULL);
        container.setLayout(gridLayout);

        new Label(container, SWT.NONE).setText("blancoValueObject Wizardへようこそ！");
        new Label(container, SWT.NONE).setText("このウィザードはblancoValueObjectプラグインが利用可能になるまでの手順をお手伝いします。");
        new Label(container, SWT.NONE).setText("");
        new Label(container, SWT.NONE).setText("このウィザードの主たる目的は、設定ファイル(" + BlancoValueObjectPluginConstants.TARGET_FILENAME + ")をプロジェクトのルートフォルダに作成することです。");
        new Label(container, SWT.NONE).setText("設定ファイル(" + BlancoValueObjectPluginConstants.TARGET_FILENAME + ")に関する状況は下記のようになっています。");

        labelMessage1 = new Label(container, SWT.NONE);
        labelMessage1.setText("  1.プロジェクトのルートフォルダに " + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルを新規に作成します。");
        labelMessage2 = new Label(container, SWT.NONE);
        labelMessage2.setText("  2.ウィザードを完了(Finish)を行うことにより新規に" + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルを作成して編集を行うことができます。");

        setControl(container);

        IProject proj = BlancoValueObjectWizard.getProject(selection);
        if (proj == null) {
            setErrorMessage("プロジェクトを選んでください");
            setPageComplete(false);
            labelMessage1.setText("  1.プロジェクトが選択されていません。");
            labelMessage2.setText("  2.プロジェクトの中にしか " + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルは作成できません。");
            return;
        }

        if (proj.isOpen() == false) {
            setPageComplete(false);
            setErrorMessage("開いているプロジェクトを選択してから、再度ウィザードを実行してください。");
            labelMessage1.setText("  1.選択されたプロジェクトは開かれていません。");
            labelMessage2.setText("  2.プロジェクトの中にしか " + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルは作成できません。");
            return;
        }

        IFile file = proj.getFile(BlancoValueObjectPluginConstants.TARGET_FILENAME);
        if (file.exists()) {
            labelMessage1.setText("  1.既にプロジェクトのルートに " + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルが存在しています。");
            labelMessage2.setText("  2.ウィザードを完了(Finish)を行うことにより既存の" + BlancoValueObjectPluginConstants.TARGET_FILENAME + "ファイルの編集を行うことができます。");
        }
    }
}
