package com.alorma.github.ui.activity.gists; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewCompat; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.afollestad.materialdialogs.MaterialDialog; import com.alorma.github.R; import com.alorma.github.sdk.bean.dto.response.GistFile; import com.alorma.github.ui.activity.LanguagesActivity; import com.alorma.github.ui.activity.base.BackActivity; import com.alorma.github.ui.utils.DialogUtils; /** * Created by Bernat on 03/04/2015. */ public class GistEditorActivity extends BackActivity { public static final String EXTRA_FILE = "EXTRA_FILE"; private static final String EXTRA_LANGUAGE = "EXTRA_LANGUAGE"; private static final int LANGUAGE_REQUEST = 854; private EditText editTitle; private EditText editText; private String currentLanguage; private Button buttonLanguages; public static Intent createLauncherIntent(Context context, Bundle extras) { Intent intent = new Intent(context, GistEditorActivity.class); if (extras != null) { intent.putExtras(extras); } return intent; } public static Intent createLauncherIntent(Context context, GistFile file) { Bundle bundle = new Bundle(); bundle.putString(Intent.EXTRA_TITLE, file.filename); bundle.putString(Intent.EXTRA_TEXT, file.content); if (file.language != null) { bundle.putString(EXTRA_LANGUAGE, file.language); } return createLauncherIntent(context, bundle); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.editor_fragment); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ViewCompat.setElevation(toolbar, getResources().getDimension(R.dimen.gapSmall)); editTitle = (EditText) findViewById(R.id.editTitle); editText = (EditText) findViewById(R.id.editText); buttonLanguages = (Button) findViewById(R.id.buttonLanguages); String title = null; String text = null; if (getIntent().getExtras() != null) { title = getIntent().getExtras().getString(Intent.EXTRA_TITLE); text = getIntent().getExtras().getString(Intent.EXTRA_TEXT); currentLanguage = getIntent().getExtras().getString(EXTRA_LANGUAGE); } editTitle.setText(title); editText.setText(text); if (currentLanguage != null) { buttonLanguages.setText(currentLanguage); } buttonLanguages.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(view.getContext(), LanguagesActivity.class); startActivityForResult(intent, LANGUAGE_REQUEST); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.gist_editor_activity, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: String filename = editTitle.getText().toString(); String content = editText.getText().toString(); if (!TextUtils.isEmpty(filename) || !TextUtils.isEmpty(content)) { showDialogCancelFile(); } else { finish(); } break; case R.id.gist_editor_add_file_action: endGistFile(); break; } return true; } private void showDialogCancelFile() { MaterialDialog.Builder builder = new DialogUtils().builder(this); builder.content(R.string.gist_file_editor_cancel_job); builder.positiveText(R.string.ok); builder.negativeText(R.string.cancel); builder.neutralText(R.string.gist_editor_add_file_action); builder.callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { super.onPositive(dialog); finish(); } @Override public void onNeutral(MaterialDialog dialog) { super.onNeutral(dialog); endGistFile(); } }); dialog = builder.show(); } private void endGistFile() { GistFile file = new GistFile(); file.type = "text/plain"; file.filename = editTitle.getText().toString(); file.content = editText.getText().toString(); file.language = currentLanguage; Intent data = new Intent(); data.putExtra(EXTRA_FILE, file); setResult(RESULT_OK, data); finish(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data != null && requestCode == LANGUAGE_REQUEST && resultCode == Activity.RESULT_OK) { currentLanguage = data.getStringExtra(LanguagesActivity.EXTRA_LANGUAGE); buttonLanguages.setText(currentLanguage); } } }