package com.aincc.seoulexcursion.ui.widget;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.aincc.lib.util.Utils;
import com.aincc.seoulexcursion.R;
/**
*
* <h3><b>SearchBar</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public class SearchBar extends Dialog implements android.view.View.OnClickListener, OnEditorActionListener
{
private EditText input;
private ImageButton cancel;
private SearchRequest listener;
private boolean isCanceled = true;
private WindowManager.LayoutParams param;
/**
*
* @since 1.0.0
* @param context
*/
private SearchBar(Context context, SearchRequest listener)
{
super(context);
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
param = new WindowManager.LayoutParams();
param.copyFrom(getWindow().getAttributes());
param.width = WindowManager.LayoutParams.MATCH_PARENT;
param.height = WindowManager.LayoutParams.MATCH_PARENT;
param.gravity = Gravity.TOP;
param.windowAnimations = R.style.option_dialog_animation;
// param.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
getWindow().setAttributes(param);
View view = getLayoutInflater().inflate(R.layout.widget_search, null);
input = (EditText) view.findViewById(R.id.input);
input.setOnEditorActionListener(this);
cancel = (ImageButton) view.findViewById(R.id.cancel);
cancel.setOnClickListener(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(view, param);
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
this.listener = listener;
setOnCancelListener(new OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
isCanceled = true;
if (null != SearchBar.this.listener)
{
SearchBar.this.listener.OnSearchCancel();
}
}
});
setOnDismissListener(new OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog)
{
if (!isCanceled && null != SearchBar.this.listener)
{
SearchBar.this.listener.OnSearchRequest(input.getText().toString());
}
}
});
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.cancel:
{
isCanceled = true;
cancel();
}
break;
}
}
@Override
public boolean onEditorAction(TextView tv, int actionId, KeyEvent ev)
{
searchRequest();
return false;
}
/**
*
* @since 1.0.0
*/
private void searchRequest()
{
if (Utils.isEmpty(input.getText().toString()))
{
Toast.makeText(getContext(), "검색어를 입력하세요.", Toast.LENGTH_SHORT).show();
}
else
{
isCanceled = false;
dismiss();
}
}
/**
*
* @since 1.0.0
* @param context
* @param listener
* @return
*/
public static SearchBar show(Context context, SearchRequest listener)
{
SearchBar dialog = new SearchBar(context, listener);
dialog.setTitle(null);
dialog.setCancelable(true);
dialog.show();
return dialog;
}
/**
*
* <h3><b>SearchRequest</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public interface SearchRequest
{
/**
* 검색어 입력 후 검색요청이 발생한 경우
*
* @since 1.0.0
* @param keyword
*/
public void OnSearchRequest(String keyword);
/**
* 검색화면을 종료하는 경우
*
* @since 1.0.0
*/
public void OnSearchCancel();
}
}