package aji;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ArmEvent;
import org.eclipse.swt.events.ArmListener;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

/*
 * 作成日: 2005/10/25
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */

/**
 * @author ゆい
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */


/**Windowの親クラス*/
public class BaseWin {
	/**シェル格納変数*/
	Singleton instance = Singleton.getInstance();
	protected Shell shell = null;
	protected Display display = null;
	/**ステータスバークラス格納変数*/
	protected StatusBar bar;
	protected Text t1;
	protected Composite mainWinCm,searchSelCm,searchNameCm,searchEtcCm,listViewCm,resultViewCm,
						 chanSelCm,addRecipeCm,passDisCm,chanRecipeCm,chanDisCm,insertRecipeCm,rankDisCm,
						 randomSelCm;
	public BaseWin(){
		this(null);
	}
	/**コンストラクタ*/
	public BaseWin(String name){
		//Display display = new Display();
		display = new Display();
		instance.setDisplay(display);
		shell = new Shell(display,SWT.SYSTEM_MODAL |SWT.CLOSE|SWT.MIN);
		instance.setShell(shell);
		//shell.setText("味のみちしるべ Client Edition 0.1");//タイトルバーの名前後で、読み込んだレシピ名も表示させるといいかも
		shell.setText(name);
		//Image image = new Image(display, "Sleipnir.bmp");
		Image image = new Image(display, "tif.bmp");//アイコン読み込み
		shell.setImage(image);//アイコンセット
	//	shell.setLayout(new FillLayout(SWT.VERTICAL));//テキストエリアのレイアウト
		/**画面サイズ　なるべく統一してほしい*/
	    shell.setSize(800,600);
	  	    

/**ここからメニューバー用*/
		Menu menubar = new Menu(shell,SWT.BAR);
		shell.setMenuBar(menubar);
	    menubar.addMenuListener(new MenuAdapter(){
	        public void menuHidden(MenuEvent e){
	          bar.setText("");
	        }
	    });
         
		MenuItem item = new MenuItem(menubar, SWT.CASCADE);
		item.setText("ファイル");//メニューバーの一番左
         
		Menu menu = new Menu(item);
		item.setMenu(menu);
         
		/*MenuItem item1 = new MenuItem(menu, SWT.PUSH);
		item1.setText("起動画面");
		item1.addSelectionListener(new SelectionListener(){ 	  	
			public void widgetSelected(SelectionEvent arg0) {
				// TODO 自動生成されたメソッド・スタブ
				new SearchNameList().make_SearchNameList();
			}
			public void widgetDefaultSelected(SelectionEvent arg0) {
				// TODO 自動生成されたメソッド・スタブ	
			}
		});
		*/
		MenuItem item2 = new MenuItem(menu, SWT.PUSH);
		item2.setText("印刷");
	//	item2.setText("押せる奴");//押すとアクションが起きるヤツ
	/*
	    item2.addArmListener(new ArmListener(){
	        public void widgetArmed(ArmEvent e){
	          bar.setText("押すと何かがおこるやつ？");
	        }
	    });     
		MenuItem item3 = new MenuItem(menu, SWT.CASCADE);
		item3.setText("横にもういっこでるやつ");//カーソルを持っていくと横にメニューが開く
         
		Menu submenu = new Menu(item3);
		item3.setMenu(submenu);
         
		MenuItem item3_1 = new MenuItem(submenu, SWT.PUSH);
		item3_1.setText("サブ？めにゅぅ");//横にでるやつのメニュー
         
		MenuItem item4 = new MenuItem(menu, SWT.CHECK);
		item4.setText("チェックするやつ");//チェックできるやつ
         
		MenuItem item5 = new MenuItem(menu, SWT.SEPARATOR);
                         
		MenuItem item6 = new MenuItem(menu, SWT.RADIO);
		item6.setText("ラジオ式1");//ラジオボタンみたいな
         
		MenuItem item7 = new MenuItem(menu, SWT.RADIO);
		item7.setText("ラジオ式2");//上に同じ
		*/
		
		
		MenuItem item1_1_0 = new MenuItem(menu,SWT.BAR);
         
		MenuItem item1_2 = new MenuItem(menu,SWT.PUSH);
		item1_2.setText("終了");
	    item1_2.addArmListener(new ArmListener(){
	        public void widgetArmed(ArmEvent e){
	          bar.setText("味のみちしるべを終了します");
	        }
	    });
	    item1_2.addSelectionListener(new SelectionAdapter(){
			public void widgetSelected(SelectionEvent e){
            	MessageBox mes = new MessageBox(shell, SWT.OK|SWT.CANCEL|SWT.ICON_QUESTION);
                mes.setText("終了");
                mes.setMessage("ウィンドウを閉じようとしています。\n\nよろしいですか？");
                if(mes.open()!=SWT.CANCEL){
                    shell.dispose();  // このアイテムが選択されたらウィンドウを閉じる
               	}
            }
		});
             
         /**このメニューバーは最後にすること！！*/
		MenuItem item_h = new MenuItem(menubar,SWT.CASCADE);
		item_h.setText("ヘルプ");
		Menu menuHelp = new Menu(item_h);
		item_h.setMenu(menuHelp);
     
		MenuItem item_h2 = new MenuItem(menuHelp,SWT.PUSH);
		item_h2.setText("ヘルプ");
	    item_h2.addArmListener(new ArmListener(){
	        public void widgetArmed(ArmEvent e){
	          bar.setText("ヘルプを表示します");
	        }
	    });
		 
		MenuItem item_h2_0 = new MenuItem(menuHelp,SWT.BAR);
		 
        MenuItem item_h1 = new MenuItem(menuHelp,SWT.PUSH);
        item_h1.setText("バージョン情報");
	    item_h1.addArmListener(new ArmListener(){
	        public void widgetArmed(ArmEvent e){
	          bar.setText("味のみちしるべについて表示します");//ステータスバーに説明を表示させる
	        }
	    });
        item_h1.addSelectionListener(new SelectionAdapter(){
         	public void widgetSelected(SelectionEvent e){
         		Version ver = new Version(shell);
         		ver.setText("味のみちしるべについて");
         		//Image img = new Image(display, "Sleipnir.bmp");
         		Image img = new Image(display, "tif.bmp");//バージョン情報Window用アイコン
         		Image img2 = new Image(display,"sakura.bmp");//一緒につける画像
         		//Image img3 = new Image(display,"nu.jpg");
         		ver.setIcon(img);//アイコン画像をバージョンクラスに渡す
         		ver.setImage(img2);//付属画像をバージョンクラスに渡す
         		//ver.setImage(img3);
         		/**ダイアログに表示するメッセージ*/
         		ver.setMessage("味のみちしるべ Client Edition バージョン:0.1\n(C)Copyright 2005 Project Hi");
         		ver.open();
         	}
        });
//ここまでメニューバー 
        //ステータスバー StatusBar.javaから作ってます
        //Linuxでは、消した方がいいかも。
        //StatusBar bar = new StatusBar(shell, SWT.BORDER);  // SWT.BORDER か SWT.NULL
//        bar = new StatusBar(shell,SWT.BORDER);
//		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);  // 必ず FILL_HORIZONTAL
//        bar.setLayoutData(gridData);
//        bar.setText("");
        //bar.setText("ステータスバーテスト");  // 文字を書く
        //bar.setImage(image);  // イメージ(16 x 16 pixel)を貼る

        //bar.setText("");  // 文字を消去する
        //bar.setImage(null);  // イメージを削除する
        //終了確認ウィンドウ
        shell.addShellListener(new ShellAdapter(){
           public void shellClosed(ShellEvent e){
             MessageBox mes = new MessageBox(shell, SWT.OK|SWT.CANCEL|SWT.ICON_QUESTION);
              mes.setText("終了");
              mes.setMessage("ウィンドウを閉じようとしています。\n\nよろしいですか？");
              if(mes.open()==SWT.CANCEL){
                e.doit = false;
              }
            }
          });
	}
	/**継承したクラスはShellをオープンする前に、このメソッドを必ず実行する ステータスバーを実装*/
	public void setStatBar(){
		bar = new StatusBar(shell,SWT.BORDER);
		instance.setStatusBar(bar);
		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);  // 必ず FILL_HORIZONTAL
        bar.setLayoutData(gridData);
        bar.setText("");
	}
}
