package org.openintents.filemanager.view;
import org.openintents.filemanager.R;
import android.content.Context;
import android.os.Build.VERSION;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class PickBar extends LinearLayout {
private EditText mEditText;
private Button mButton;
private OnPickRequestedListener mListener;
public PickBar(Context context) {
super(context);
init();
}
public PickBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// Apply borderless style when applicable.
if(VERSION.SDK_INT >= 11)
mButton = new Button(getContext(), null, android.R.attr.buttonBarButtonStyle);
else
mButton = new Button(getContext());
{
mButton.setText(R.string.pick_button_default);
mButton.setId(R.id.pickbar_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mListener!=null)
mListener.pickRequested(mEditText.getText().toString());
}
});
}
// EditText
mEditText = new EditText(getContext());
{
LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
// Take up as much space as possible.
layoutParams.weight = 1;
mEditText.setLayoutParams(layoutParams);
mEditText.setHint(R.string.filename_hint);
mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_URI);
mEditText.setImeOptions(EditorInfo.IME_ACTION_GO);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_GO || (event.getAction() == KeyEvent.ACTION_DOWN && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode() == KeyEvent.KEYCODE_ENTER))) {
if(mListener!=null)
mListener.pickRequested(mEditText.getText().toString());
return true;
}
return false;
}
});
}
addView(mEditText);
addView(mButton);
}
public void setText(CharSequence name) {
mEditText.setText(name);
}
public void setOnPickRequestedListener(OnPickRequestedListener listener) {
mListener = listener;
}
public interface OnPickRequestedListener {
public void pickRequested(String filename);
}
public void setButtonText(CharSequence text) {
mButton.setText( (text == null || text.toString().trim().length() == 0) ? getResources().getString(R.string.pick_button_default) : text);
}
@Override
protected Parcelable onSaveInstanceState() {
Bundle state = new Bundle();
state.putParcelable("superState", super.onSaveInstanceState());
state.putParcelable("editText", mEditText.onSaveInstanceState());
state.putParcelable("button", mButton.onSaveInstanceState());
return state;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
Bundle savedstate = (Bundle) state;
super.onRestoreInstanceState(savedstate.getParcelable("superState"));
mEditText.onRestoreInstanceState(savedstate.getParcelable("editText"));
mButton.onRestoreInstanceState(savedstate.getParcelable("button"));
}
}