package com.flipkart.chatheads.ui;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
/**
* Created by kiran.kumar on 02/11/16.
*/
public abstract class FrameChatHeadContainer implements ChatHeadContainer {
private HostFrameLayout frameLayout;
private final Context context;
DisplayMetrics displayMetrics = new DisplayMetrics();
private ChatHeadManager manager;
public FrameChatHeadContainer(Context context) {
this.context = context;
}
public ChatHeadManager getManager() {
return manager;
}
@Override
public void onInitialized(ChatHeadManager manager) {
this.manager = manager;
HostFrameLayout frameLayout = new HostFrameLayout(context, this, manager);
frameLayout.setFocusable(true);
frameLayout.setFocusableInTouchMode(true);
this.frameLayout = frameLayout;
addContainer(frameLayout, false);
}
public Context getContext() {
return context;
}
public HostFrameLayout getFrameLayout() {
return frameLayout;
}
@Override
public void addView(View view, ViewGroup.LayoutParams layoutParams) {
if(frameLayout!=null) {
frameLayout.addView(view, layoutParams);
}
}
@Override
public void requestLayout() {
if(frameLayout!=null) {
frameLayout.requestLayout();
}
}
@Override
public void removeView(View view) {
if (frameLayout!=null) {
frameLayout.removeView(view);
}
}
@Override
public ViewGroup.LayoutParams createLayoutParams(int height, int width, int gravity, int bottomMargin) {
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(width, height);
layoutParams.gravity = gravity;
layoutParams.bottomMargin = bottomMargin;
return layoutParams;
}
@Override
public void setViewX(View view, int xPosition) {
view.setTranslationX(xPosition);
}
@Override
public void setViewY(View view, int yPosition) {
view.setTranslationY(yPosition);
}
@Override
public DisplayMetrics getDisplayMetrics() {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics;
}
@Override
public int getViewX(View view) {
return (int) view.getTranslationX();
}
@Override
public int getViewY(View view) {
return (int) view.getTranslationY();
}
@Override
public void bringToFront(View view) {
view.bringToFront();
}
public abstract void addContainer(View container, boolean focusable);
}