package
kr.qoop.bmg_program.expendables.text;
import
android.app.Activity;
import
android.content.Context;
import
android.graphics.Color;
import
android.os.Handler;
import
android.text.InputType;
import
android.text.method.ArrowKeyMovementMethod;
import
android.util.AttributeSet;
import
android.util.Log;
import
android.view.Gravity;
import
android.view.View;
import
android.view.ViewGroup;
import
android.view.inputmethod.InputMethodManager;
import
android.widget.EditText;
import
android.widget.LinearLayout;
import
android.widget.PopupWindow;
import
android.widget.ScrollView;
import
android.widget.TextView;
import
java.util.ArrayList;
import
javax.xml.transform.sax.TemplatesHandler;
import
kr.qoop.bmg_program.R;
public
class
HistoryText
extends
CTextView
implements
View.OnClickListener {
private
Context mContext=
null
;
private
PopupWindow Menu=
null
;
private
ArrayList<String> ItemList =
new
ArrayList<String>();
View MenuView =
null
;
boolean
isPopup=
false
;
LinearLayout Menu_Linear=
null
;
ScrollView RootView=
null
;
public
HistoryText(Context context) {
super
(context);
this
.mContext=context;
init();
}
public
HistoryText(Context context, AttributeSet attrs) {
super
(context, attrs);
this
.mContext=context;
init();
}
private
void
init(){
this
.setTextColor(Color.BLACK);
Activity InflateActivity=(Activity)mContext;
MenuView = InflateActivity.getLayoutInflater().inflate(R.layout.popmenu,
null
);
Menu =
new
PopupWindow(MenuView,getWidth(),getHeight()*ItemList.size());
RootView = (ScrollView)MenuView.getRootView();
RootView.setVerticalScrollBarEnabled(
false
);
RootView.setHorizontalFadingEdgeEnabled(
false
);
if
(RootView.getChildAt(
0
)
instanceof
LinearLayout)
Menu_Linear = (LinearLayout)RootView.getChildAt(
0
);
post(
new
Runnable() {
@Override
public
void
run() {
Add();
Add();
Add();
Add();
Add();
Add();
Add();
Add();
Add();
Add();
}
});
}
/**팝업을 업데이트 한다.*/
public
void
Update() {
Log.e(
"HistoryText|Update"
,
"Update"
);
Menu.showAsDropDown(
this
);
if
(ItemList.size() !=
0
) {
if
(ItemList.size() <
5
)
Menu.update(getWidth(), getHeight() * ItemList.size());
else
Menu.update(getWidth(), getHeight()*
5
);
}
else
{
Menu.update(getWidth(),
0
);
}
Menu.setAnimationStyle(-
1
);
}
/**팝업을 추가한다.*/
public
void
Add(){
CTextView Item =
null
;
Item =
new
CTextView(mContext);
Item.setLayoutParams(
new
LinearLayout.LayoutParams(getWidth(), getHeight()));
Item.setOnClickListener(
this
);
Item.setGravity(Gravity.CENTER);
Item.setText(getSelectItem());
Item.setTextColor(Color.BLACK);
ItemList.add(getSelectItem());
Menu_Linear.addView(Item);
Log.e(
"HistoryText|Add"
,
"Add"
);
}
/**팝업중 중복 부분을 체크한다.*/
public
boolean
Overlap(){
boolean
isOverlap=
false
;
for
(
int
i =
0
; i<ItemList.size(); i++){
if
(getSelectItem().replace(
" "
,
""
).equals(ItemList.get(i).replace(
" "
,
""
)))
isOverlap=
true
;
}
Log.e(
"HistoryText|Overlap"
,
"Overlap:"
+isOverlap);
return
isOverlap;
}
/**팝업 중 아이템을 삭제한다.*/
public
void
Remove(){
Log.e(
"HistoryText|Remove"
,
"Remove"
);
}
/**팝업을 전부 삭제 시킨다.*/
public
void
Clear(){
ItemList.removeAll(ItemList);
Menu_Linear.removeAllViews();
Log.e(
"HistoryText|Clear"
,
"Clear"
);
}
/**아이템을 set한다.*/
public
void
setSelectItem(String Item){
this
.setText(Item);
}
/**선택된 아이템을 반환한다.*/
public
String getSelectItem(){
Log.e(
"HistoryText|getSelectItem"
,
"getSelectItem"
);
return
this
.getText().toString();
}
/**키보드를 뛰운다.*/
public
void
KBShow(){
Log.e(
"HistoryText|KBShow"
,
"KBShow"
);
}
/**키보드를 내린다.*/
public
void
KBdismiss(){
Log.e(
"HistoryText|KBdismiss"
,
"KBdismiss"
);
}
/**메뉴를 뛰운다.*/
public
void
MenuShow(){
if
(!isPopup){
this
.Update();
Menu.showAsDropDown(
this
);
this
.isPopup=
true
;
}
else
{
Menu.dismiss();
this
.isPopup=
false
;
}
}
@Override
public
void
onClick(View v) {
if
(v
instanceof
CTextView) {
CTextView Item = (CTextView)v;
setSelectItem(Item.getText().toString());
MenuShow();
}
}
}