package com.stardust.scriptdroid.external.tasker;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.TextView;
import com.jecelyin.editor.v2.common.Command;
import com.jecelyin.editor.v2.ui.EditorDelegate;
import com.jecelyin.editor.v2.view.EditorView;
import com.jecelyin.editor.v2.view.menu.MenuDef;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.edit.EditActivity;
import com.stardust.scriptdroid.ui.edit.completion.InputMethodEnhanceBar;
import com.stardust.scriptdroid.ui.edit.editor920.Editor920Activity;
import com.stardust.scriptdroid.ui.edit.editor920.Editor920Utils;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
import com.stardust.widget.ToolbarMenuItem;
/**
* Created by Stardust on 2017/4/5.
*/
public class TaskerScriptEditActivity extends Editor920Activity {
public static final int REQUEST_CODE = "Love you. Can we go back?".hashCode() >> 16;
public static final String EXTRA_CONTENT = "Still Love Eating 17.4.5";
public static void edit(Activity activity, String title, String summary, String content) {
activity.startActivityForResult(new Intent(activity, TaskerScriptEditActivity.class)
.putExtra(EXTRA_CONTENT, content)
.putExtra("summary", summary)
.putExtra("title", title), REQUEST_CODE);
}
private EditorDelegate mEditorDelegate;
private String mTitle, mSummary;
private ToolbarMenuItem mRedo, mUndo;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleIntent(getIntent());
setUpUI();
BaseActivity.setToolbarAsBack(this, R.id.toolbar, mTitle);
setUpEditor();
ViewBinder.bind(this);
}
private void setUpUI() {
setTheme(R.style.EditorTheme);
setContentView(R.layout.activity_tasker_script_edit);
((TextView) findViewById(R.id.summary)).setText(mSummary);
mRedo = (ToolbarMenuItem) findViewById(R.id.redo);
mUndo = (ToolbarMenuItem) findViewById(R.id.undo);
}
private void handleIntent(Intent intent) {
mTitle = intent.getStringExtra("title");
mSummary = intent.getStringExtra("summary");
String content = intent.getStringExtra(EXTRA_CONTENT);
mEditorDelegate = new EditorDelegate(0, mTitle, content);
}
private void setUpEditor() {
final EditorView editorView = (EditorView) findViewById(R.id.editor);
mEditorDelegate.setEditorView(editorView);
Editor920Utils.setLang(mEditorDelegate, "JavaScript");
editorView.getEditText().setHorizontallyScrolling(true);
setUpInputMethodEnhanceBar(editorView);
}
private void setUpInputMethodEnhanceBar(final EditorView editorView) {
InputMethodEnhanceBar inputMethodEnhanceBar = (InputMethodEnhanceBar) findViewById(R.id.input_method_enhance_bar);
inputMethodEnhanceBar.setEditTextBridge(new EditActivity.InputMethodEnhanceBarBridge(this, editorView.getEditText()));
}
@ViewBinding.Click(R.id.undo)
private void undo() {
Command command = new Command(Command.CommandEnum.UNDO);
mEditorDelegate.doCommand(command);
}
@ViewBinding.Click(R.id.redo)
private void redo() {
Command command = new Command(Command.CommandEnum.REDO);
mEditorDelegate.doCommand(command);
}
@Override
public void finish() {
setResult(RESULT_OK, new Intent().putExtra(EXTRA_CONTENT, mEditorDelegate.getText()));
super.finish();
}
public void setMenuStatus(int menuResId, int status) {
boolean disabled = status == MenuDef.STATUS_DISABLED;
if (menuResId == com.jecelyin.editor.v2.R.id.m_redo) {
mRedo.setEnabled(!disabled);
} else if (menuResId == com.jecelyin.editor.v2.R.id.m_undo) {
mUndo.setEnabled(!disabled);
}
}
}