package blanco.plugin.dbee.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.dbee.editors.BlancoDbEEEditor;

public class BlancoDbEEWizardPage extends WizardPage {

    private Label labelMessage1 = null;

    private Label labelMessage2 = null;

    private ISelection selection;

    public BlancoDbEEWizardPage(ISelection selection) {
        super("wizardPage");
        setTitle("blancoDb Enterprise Edition (blancoDbEE) プラグイン 利用支援ウィザード");
        this.selection = selection;
    }

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

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

        setControl(container);

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

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

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