aboutsummaryrefslogtreecommitdiff
path: root/libs/editor/example/src/main/java/org/wordpress/android
diff options
context:
space:
mode:
Diffstat (limited to 'libs/editor/example/src/main/java/org/wordpress/android')
-rw-r--r--libs/editor/example/src/main/java/org/wordpress/android/editor/example/EditorExampleActivity.java348
-rw-r--r--libs/editor/example/src/main/java/org/wordpress/android/editor/example/MainExampleActivity.java86
2 files changed, 434 insertions, 0 deletions
diff --git a/libs/editor/example/src/main/java/org/wordpress/android/editor/example/EditorExampleActivity.java b/libs/editor/example/src/main/java/org/wordpress/android/editor/example/EditorExampleActivity.java
new file mode 100644
index 000000000..8723f708e
--- /dev/null
+++ b/libs/editor/example/src/main/java/org/wordpress/android/editor/example/EditorExampleActivity.java
@@ -0,0 +1,348 @@
+package org.wordpress.android.editor.example;
+
+import android.app.Fragment;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.ContextMenu;
+import android.view.DragEvent;
+import android.view.MenuItem;
+import android.view.View;
+
+import org.wordpress.android.editor.EditorFragmentAbstract;
+import org.wordpress.android.editor.EditorFragmentAbstract.EditorDragAndDropListener;
+import org.wordpress.android.editor.EditorFragmentAbstract.EditorFragmentListener;
+import org.wordpress.android.editor.EditorFragmentAbstract.TrackableEvent;
+import org.wordpress.android.editor.EditorMediaUploadListener;
+import org.wordpress.android.editor.ImageSettingsDialogFragment;
+import org.wordpress.android.util.AppLog;
+import org.wordpress.android.util.AppLog.T;
+import org.wordpress.android.util.ToastUtils;
+import org.wordpress.android.util.helpers.MediaFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+public class EditorExampleActivity extends AppCompatActivity implements EditorFragmentListener,
+ EditorDragAndDropListener {
+ public static final String EDITOR_PARAM = "EDITOR_PARAM";
+ public static final String TITLE_PARAM = "TITLE_PARAM";
+ public static final String CONTENT_PARAM = "CONTENT_PARAM";
+ public static final String DRAFT_PARAM = "DRAFT_PARAM";
+ public static final String TITLE_PLACEHOLDER_PARAM = "TITLE_PLACEHOLDER_PARAM";
+ public static final String CONTENT_PLACEHOLDER_PARAM = "CONTENT_PLACEHOLDER_PARAM";
+ public static final int USE_NEW_EDITOR = 1;
+ public static final int USE_LEGACY_EDITOR = 2;
+
+ public static final int ADD_MEDIA_ACTIVITY_REQUEST_CODE = 1111;
+ public static final int ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE = 1112;
+ public static final int ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE = 1113;
+
+ public static final String MEDIA_REMOTE_ID_SAMPLE = "123";
+
+ private static final int SELECT_IMAGE_MENU_POSITION = 0;
+ private static final int SELECT_IMAGE_FAIL_MENU_POSITION = 1;
+ private static final int SELECT_VIDEO_MENU_POSITION = 2;
+ private static final int SELECT_VIDEO_FAIL_MENU_POSITION = 3;
+ private static final int SELECT_IMAGE_SLOW_MENU_POSITION = 4;
+
+ private EditorFragmentAbstract mEditorFragment;
+
+ private Map<String, String> mFailedUploads;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getIntent().getIntExtra(EDITOR_PARAM, USE_NEW_EDITOR) == USE_NEW_EDITOR) {
+ ToastUtils.showToast(this, R.string.starting_new_editor);
+ setContentView(R.layout.activity_new_editor);
+ } else {
+ ToastUtils.showToast(this, R.string.starting_legacy_editor);
+ setContentView(R.layout.activity_legacy_editor);
+ }
+
+ mFailedUploads = new HashMap<>();
+ }
+
+ @Override
+ public void onAttachFragment(Fragment fragment) {
+ super.onAttachFragment(fragment);
+ if (fragment instanceof EditorFragmentAbstract) {
+ mEditorFragment = (EditorFragmentAbstract) fragment;
+ }
+ }
+
+ @Override
+ public void onBackPressed() {
+ Fragment fragment = getFragmentManager()
+ .findFragmentByTag(ImageSettingsDialogFragment.IMAGE_SETTINGS_DIALOG_TAG);
+ if (fragment != null && fragment.isVisible()) {
+ ((ImageSettingsDialogFragment) fragment).dismissFragment();
+ } else {
+ super.onBackPressed();
+ }
+ }
+
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ menu.add(0, SELECT_IMAGE_MENU_POSITION, 0, getString(R.string.select_image));
+ menu.add(0, SELECT_IMAGE_FAIL_MENU_POSITION, 0, getString(R.string.select_image_fail));
+ menu.add(0, SELECT_VIDEO_MENU_POSITION, 0, getString(R.string.select_video));
+ menu.add(0, SELECT_VIDEO_FAIL_MENU_POSITION, 0, getString(R.string.select_video_fail));
+ menu.add(0, SELECT_IMAGE_SLOW_MENU_POSITION, 0, getString(R.string.select_image_slow_network));
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem item) {
+ Intent intent = new Intent(Intent.ACTION_PICK);
+
+ switch (item.getItemId()) {
+ case SELECT_IMAGE_MENU_POSITION:
+ intent.setType("image/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+ intent = Intent.createChooser(intent, getString(R.string.select_image));
+
+ startActivityForResult(intent, ADD_MEDIA_ACTIVITY_REQUEST_CODE);
+ return true;
+ case SELECT_IMAGE_FAIL_MENU_POSITION:
+ intent.setType("image/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+ intent = Intent.createChooser(intent, getString(R.string.select_image_fail));
+
+ startActivityForResult(intent, ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE);
+ return true;
+ case SELECT_VIDEO_MENU_POSITION:
+ intent.setType("video/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+ intent = Intent.createChooser(intent, getString(R.string.select_video));
+
+ startActivityForResult(intent, ADD_MEDIA_ACTIVITY_REQUEST_CODE);
+ return true;
+ case SELECT_VIDEO_FAIL_MENU_POSITION:
+ intent.setType("video/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+ intent = Intent.createChooser(intent, getString(R.string.select_video_fail));
+
+ startActivityForResult(intent, ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE);
+ return true;
+ case SELECT_IMAGE_SLOW_MENU_POSITION:
+ intent.setType("image/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+ intent = Intent.createChooser(intent, getString(R.string.select_image_slow_network));
+
+ startActivityForResult(intent, ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (data == null) {
+ return;
+ }
+
+ Uri mediaUri = data.getData();
+
+ MediaFile mediaFile = new MediaFile();
+ String mediaId = String.valueOf(System.currentTimeMillis());
+ mediaFile.setMediaId(mediaId);
+ mediaFile.setVideo(mediaUri.toString().contains("video"));
+
+ switch (requestCode) {
+ case ADD_MEDIA_ACTIVITY_REQUEST_CODE:
+ mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null);
+
+ if (mEditorFragment instanceof EditorMediaUploadListener) {
+ simulateFileUpload(mediaId, mediaUri.toString());
+ }
+ break;
+ case ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE:
+ mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null);
+
+ if (mEditorFragment instanceof EditorMediaUploadListener) {
+ simulateFileUploadFail(mediaId, mediaUri.toString());
+ }
+ break;
+ case ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE:
+ mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null);
+
+ if (mEditorFragment instanceof EditorMediaUploadListener) {
+ simulateSlowFileUpload(mediaId, mediaUri.toString());
+ }
+ break;
+ }
+ }
+
+ @Override
+ public void onSettingsClicked() {
+ // TODO
+ }
+
+ @Override
+ public void onAddMediaClicked() {
+ // TODO
+ }
+
+ @Override
+ public void onMediaRetryClicked(String mediaId) {
+ if (mFailedUploads.containsKey(mediaId)) {
+ simulateFileUpload(mediaId, mFailedUploads.get(mediaId));
+ }
+ }
+
+ @Override
+ public void onMediaUploadCancelClicked(String mediaId, boolean delete) {
+
+ }
+
+ @Override
+ public void onFeaturedImageChanged(long mediaId) {
+
+ }
+
+ @Override
+ public void onVideoPressInfoRequested(String videoId) {
+
+ }
+
+ @Override
+ public String onAuthHeaderRequested(String url) {
+ return "";
+ }
+
+ @Override
+ public void onEditorFragmentInitialized() {
+ // arbitrary setup
+ mEditorFragment.setFeaturedImageSupported(true);
+ mEditorFragment.setBlogSettingMaxImageWidth("600");
+ mEditorFragment.setDebugModeEnabled(true);
+
+ // get title and content and draft switch
+ String title = getIntent().getStringExtra(TITLE_PARAM);
+ String content = getIntent().getStringExtra(CONTENT_PARAM);
+ boolean isLocalDraft = getIntent().getBooleanExtra(DRAFT_PARAM, true);
+ mEditorFragment.setTitle(title);
+ mEditorFragment.setContent(content);
+ mEditorFragment.setTitlePlaceholder(getIntent().getStringExtra(TITLE_PLACEHOLDER_PARAM));
+ mEditorFragment.setContentPlaceholder(getIntent().getStringExtra(CONTENT_PLACEHOLDER_PARAM));
+ mEditorFragment.setLocalDraft(isLocalDraft);
+ }
+
+ @Override
+ public void saveMediaFile(MediaFile mediaFile) {
+ // TODO
+ }
+
+ @Override
+ public void onTrackableEvent(TrackableEvent event) {
+ AppLog.d(T.EDITOR, "Trackable event: " + event);
+ }
+
+ private void simulateFileUpload(final String mediaId, final String mediaUrl) {
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ float count = (float) 0.1;
+ while (count < 1.1) {
+ sleep(500);
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count);
+
+ count += 0.1;
+ }
+
+ MediaFile mediaFile = new MediaFile();
+ mediaFile.setMediaId(MEDIA_REMOTE_ID_SAMPLE);
+ mediaFile.setFileURL(mediaUrl);
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadSucceeded(mediaId, mediaFile);
+
+ if (mFailedUploads.containsKey(mediaId)) {
+ mFailedUploads.remove(mediaId);
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+
+ thread.start();
+ }
+
+ private void simulateFileUploadFail(final String mediaId, final String mediaUrl) {
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ float count = (float) 0.1;
+ while (count < 0.6) {
+ sleep(500);
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count);
+
+ count += 0.1;
+ }
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadFailed(mediaId,
+ getString(R.string.tap_to_try_again));
+
+ mFailedUploads.put(mediaId, mediaUrl);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+
+ thread.start();
+ }
+
+ private void simulateSlowFileUpload(final String mediaId, final String mediaUrl) {
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ sleep(5000);
+ float count = (float) 0.1;
+ while (count < 1.1) {
+ sleep(2000);
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count);
+
+ count += 0.1;
+ }
+
+ MediaFile mediaFile = new MediaFile();
+ mediaFile.setMediaId(MEDIA_REMOTE_ID_SAMPLE);
+ mediaFile.setFileURL(mediaUrl);
+
+ ((EditorMediaUploadListener) mEditorFragment).onMediaUploadSucceeded(mediaId, mediaFile);
+
+ if (mFailedUploads.containsKey(mediaId)) {
+ mFailedUploads.remove(mediaId);
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+
+ thread.start();
+ }
+
+ @Override
+ public void onMediaDropped(ArrayList<Uri> mediaUri) {
+ // TODO
+ }
+
+ @Override
+ public void onRequestDragAndDropPermissions(DragEvent dragEvent) {
+ // TODO
+ }
+}
diff --git a/libs/editor/example/src/main/java/org/wordpress/android/editor/example/MainExampleActivity.java b/libs/editor/example/src/main/java/org/wordpress/android/editor/example/MainExampleActivity.java
new file mode 100644
index 000000000..52b522d38
--- /dev/null
+++ b/libs/editor/example/src/main/java/org/wordpress/android/editor/example/MainExampleActivity.java
@@ -0,0 +1,86 @@
+package org.wordpress.android.editor.example;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+
+import org.wordpress.android.editor.Utils;
+import org.wordpress.android.editor.example.EditorExampleActivity;
+
+public class MainExampleActivity extends AppCompatActivity {
+ private Activity mActivity;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mActivity = this;
+ setContentView(R.layout.activity_example);
+
+ Button newEditorPost1 = (Button) findViewById(R.id.new_editor_post_1);
+ newEditorPost1.setOnClickListener(new OnClickListener() {
+ @Override public void onClick(View v) {
+ Intent intent = new Intent(MainExampleActivity.this, EditorExampleActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString(EditorExampleActivity.TITLE_PARAM, getString(R.string.example_post_visual_title));
+ bundle.putString(EditorExampleActivity.CONTENT_PARAM, Utils.getHtmlFromFile(mActivity,
+ "example/example-content.html"));
+ bundle.putString(EditorExampleActivity.TITLE_PLACEHOLDER_PARAM,
+ getString(R.string.example_post_title_placeholder));
+ bundle.putString(EditorExampleActivity.CONTENT_PLACEHOLDER_PARAM,
+ getString(R.string.example_post_content_placeholder));
+ bundle.putInt(EditorExampleActivity.EDITOR_PARAM, EditorExampleActivity.USE_NEW_EDITOR);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }
+ });
+
+ Button newEditorPostEmpty = (Button) findViewById(R.id.new_editor_post_empty);
+ newEditorPostEmpty.setOnClickListener(new OnClickListener() {
+ @Override public void onClick(View v) {
+ Intent intent = new Intent(MainExampleActivity.this, EditorExampleActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString(EditorExampleActivity.TITLE_PARAM, "");
+ bundle.putString(EditorExampleActivity.CONTENT_PARAM, "");
+ bundle.putString(EditorExampleActivity.TITLE_PLACEHOLDER_PARAM,
+ getString(R.string.example_post_title_placeholder));
+ bundle.putString(EditorExampleActivity.CONTENT_PLACEHOLDER_PARAM,
+ getString(R.string.example_post_content_placeholder));
+ bundle.putInt(EditorExampleActivity.EDITOR_PARAM, EditorExampleActivity.USE_NEW_EDITOR);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }
+ });
+
+ Button legacyEditorPost1Local = (Button) findViewById(R.id.legacy_editor_post_1_local);
+ legacyEditorPost1Local.setOnClickListener(new OnClickListener() {
+ @Override public void onClick(View v) {
+ Intent intent = new Intent(MainExampleActivity.this, EditorExampleActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString(EditorExampleActivity.TITLE_PARAM, getString(R.string.example_post_1_title));
+ bundle.putString(EditorExampleActivity.CONTENT_PARAM, getString(R.string.example_post_1_content));
+ bundle.putInt(EditorExampleActivity.EDITOR_PARAM, EditorExampleActivity.USE_LEGACY_EDITOR);
+ bundle.putBoolean(EditorExampleActivity.DRAFT_PARAM, true);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }
+ });
+
+ Button legacyEditorPost1Remote = (Button) findViewById(R.id.legacy_editor_post_1_remote);
+ legacyEditorPost1Remote.setOnClickListener(new OnClickListener() {
+ @Override public void onClick(View v) {
+ Intent intent = new Intent(MainExampleActivity.this, EditorExampleActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString(EditorExampleActivity.TITLE_PARAM, getString(R.string.example_post_1_title));
+ bundle.putString(EditorExampleActivity.CONTENT_PARAM, getString(R.string.example_post_1_content));
+ bundle.putInt(EditorExampleActivity.EDITOR_PARAM, EditorExampleActivity.USE_LEGACY_EDITOR);
+ bundle.putBoolean(EditorExampleActivity.DRAFT_PARAM, false);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }
+ });
+ }
+}