/**
 * @(#)IGobContainer.java
 *
 * Copyright 2000 by Intelligent Technology Inc. All rights reserved.
 *
 * Gob Container
 */
package jp.co.iti.fagot.gob;

import jp.co.iti.fagot.geom.ZPoint;
import jp.co.iti.fagot.geom.ZPath;

import jp.co.iti.fagot.doc.DocGridControler;

/**
 * Gobコンテナ
 *
 * @author  福島康治
 * @version 1.01 2000/12/01
 */
public interface IGobContainer {

	//## ヒット #######################################################
	/**
	 * 要素にヒットするか？
	 * @param gob リクエスト元Gob
	 * @param pt 論理座標
	 */
	public byte getHitMode(GElement gob,ZPoint pt) ;

	/**
	 * 要素の移動モードはなにか？
	 * @param gob リクエスト元Gob
	 * @param pt   論理座標
	 */
	public byte getPreMoveMode(GElement gob,ZPoint pt) ;

	/**
	 * 要素に接続するか？
	 * @param gob リクエスト元Gob
	 * @param pt 論理座標
	 * @param obj  接続対象
	 */
	public byte getConnectMode(GElement gob,ZPoint pt,Object obj) ;

	/**
	 * ダブルクリックの動作
	 * @param gob リクエスト元Gob
	 * @param mode クリック位置
	 */
	public void verbDblClick(GElement gob,ZPoint pt);

	/**
	 * コンテナの削除
	 * @param gob リクエスト元Gob
	 */
	public void removeGob(GElement gob) ;

	//## 移動 #########################################################
	/**
	 * 移動の開始
	 * @param gob リクエスト元Gob
	 * @param grid グリッドコントローラ
	 */
	public void moveStart(GElement gob,DocGridControler grid) ;

	/**
	 * 移動中Pathの取得
	 * @param gob リクエスト元Gob
	 * @param grid グリッドコントローラ
	 */
	public ZPath getMovingPath(GElement gob,DocGridControler grid) ;

	/**
	 * 移動の完了
	 * @param gob リクエスト元Gob
	 * @param grid グリッドコントローラ
	 */
	public void moveEnd(GElement gob,DocGridControler grid) ;

	//## 選択 #########################################################
	/**
	 * 選択の取得
	 */
	public boolean isSelect() ;

	/**
	 * 選択の設定
	 * @param gob リクエスト元Gob
	 * @param bSel 選択状態
	 */
	public boolean setSelect(GElement gob,boolean bSel) ;
}
