package com.integreight.onesheeld.utils.customviews;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.enums.ArduinoPin;
import com.integreight.onesheeld.shields.observer.OnChildFocusListener;
import com.integreight.onesheeld.utils.customviews.PluginPinsColumnContainer.PinData;
public class PluginConnectingPinsView extends Fragment {
private static PluginConnectingPinsView thisInstance;
private View view;
private String selectedPinName = "";
public static PluginConnectingPinsView getInstance() {
if (thisInstance == null) {
thisInstance = new PluginConnectingPinsView();
}
return thisInstance;
}
public void recycle() {
thisInstance = null;
}
boolean isInflated = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (view == null) {
view = inflater.inflate(R.layout.plugin_connecting_pins_layout,
container, false);
isInflated = true;
} else
isInflated = false;
if (((ViewGroup) view.getParent()) != null)
((ViewGroup) view.getParent()).removeAllViews();
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
private Handler resettingHandler = new Handler();
public void reset(final OnPinSelectionListener listner,
final int currentIndx) {
final TextView show = (TextView) view.findViewById(R.id.show);
selectedPinName = "";
show.setText("");
show.setVisibility(View.INVISIBLE);
final ImageView cursor = ((ImageView) view.findViewById(R.id.cursor));
cursor.setVisibility(View.INVISIBLE);
final PluginPinsColumnContainer thisPinsContainer = ((PluginPinsColumnContainer) view
.findViewById(R.id.cont));
if (resettingHandler == null)
resettingHandler = new Handler();
resettingHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
thisPinsContainer.setup(new OnChildFocusListener() {
@Override
public void focusOnThisChild(int childIndex, String tag) {
show.setVisibility(View.VISIBLE);
show.setText(tag.startsWith("_") ? tag.substring(1)
: tag);
}
@Override
public void selectThisChild(int childIndex, String tag) {
show.setVisibility(tag.length() > 0 ? View.VISIBLE
: View.INVISIBLE);
show.setText(tag.startsWith("_") ? tag.substring(1)
: tag);
if (childIndex != -1) {
listner.onSelect(ArduinoPin.valueOf(tag));
} else {
listner.onSelect(null);
}
}
}, cursor, new onGetPinsView() {
@Override
public void onPinsDrawn() {
if (selectedPinName.length() > 0) {
PinData data = thisPinsContainer
.getDataOfTag(selectedPinName);
if (data.rect != null && data.index != -1) {
thisPinsContainer.setCursorTo(data);
show.setVisibility(View.VISIBLE);
show.setText(data.tag.startsWith("_") ? data.tag
.substring(1) : data.tag);
} else {
show.setText("");
show.setVisibility(View.INVISIBLE);
cursor.setVisibility(View.INVISIBLE);
}
} else {
show.setText("");
show.setVisibility(View.INVISIBLE);
cursor.setVisibility(View.INVISIBLE);
}
}
}, currentIndx);
LinearLayout pinsContainer = (LinearLayout) view
.findViewById(R.id.requiredPinsContainer);
pinsContainer.removeAllViews();
}
});
}
public static interface OnPinSelectionListener {
public void onSelect(ArduinoPin pin);
public void onUnSelect(ArduinoPin pin);
}
public static interface onGetPinsView {
public void onPinsDrawn();
}
}