From b12e26b797acff3156d0d47b69482b296573652a Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Thu, 11 May 2017 17:06:37 +0800 Subject: [PATCH] add sublime text plugin support --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 1 + .../java/com/stardust/scriptdroid/App.java | 1 - .../stardust/scriptdroid/autojs/AutoJs.java | 5 +- .../autojs/api/BlockedMaterialDialog.java | 1 + .../scriptdroid/autojs/api/Dialogs.java | 4 +- .../OverlayPermissionChecker.java | 6 -- .../menu/HoverMenuService.java | 1 - .../content/MainMenuNavigatorContent.java | 2 +- .../menu/content/RecordNavigatorContent.java | 10 +- .../layout_inspector/LayoutInspector.java | 7 +- .../menu}/layout_inspector/NodeInfo.java | 2 +- .../view/LayoutBoundsView.java | 6 +- .../view/LayoutHierarchyView.java | 4 +- .../view/LayoutInspectView.java | 6 +- .../layout_inspector/view/NodeInfoView.java | 4 +- .../view/OnNodeInfoSelectListener.java | 12 +++ .../menu}/record/Recorder.java | 2 +- .../AccessibilityActionConverter.java | 5 +- .../AccessibilityActionRecorder.java | 4 +- .../inputevent/EventFormatException.java | 2 +- .../inputevent/InputEventConverter.java | 7 +- .../record/inputevent/InputEventRecorder.java | 4 +- .../inputevent/InputEventToJsConverter.java | 2 +- .../InputEventToSendEventConverter.java | 2 +- .../InputEventToSendEventJsConverter.java | 2 +- .../menu}/record/inputevent/KeyObserver.java | 2 +- .../record/inputevent/TouchRecorder.java | 2 +- .../menu/view/FloatingLayoutBoundsView.java | 8 +- .../view/FloatingLayoutHierarchyView.java | 8 +- .../external/open/ImportIntentActivity.java | 4 - .../external/open/RunIntentActivity.java | 6 +- .../view/OnNodeInfoSelectListener.java | 12 --- .../sublime_plugin_client/Handler.java | 12 +++ .../sublime_plugin_client/Router.java | 32 ++++++ .../SublimePluginClient.java | 102 ++++++++++++++++++ .../SublimePluginClientManager.java | 54 ++++++++++ .../SublimeResponseHandler.java | 85 +++++++++++++++ .../scriptdroid/tool/CrashHandler.java | 18 ++++ .../stardust/scriptdroid/tool/WifiTool.java | 24 +++++ .../scriptdroid/ui/console/JraskaConsole.java | 3 + .../scriptdroid/ui/main/MainActivity.java | 4 + .../ui/main/SlideMenuFragment.java | 27 +++++ app/src/main/res/drawable-xxhdpi/ic_debug.png | Bin 0 -> 1136 bytes .../res/layout/floating_window_expand.xml | 4 +- .../main/res/layout/fragment_slide_menu.xml | 33 ++++++ app/src/main/res/values/strings.xml | 1 + .../autojs/runtime/ScriptRuntime.java | 16 +++ .../autojs/runtime/ScriptRuntimeBuilder.java | 11 -- .../runtime/api/internal}/VolatileBox.java | 2 +- .../java/com/stardust/util/ClipboardUtil.java | 14 +++ 51 files changed, 490 insertions(+), 100 deletions(-) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/LayoutInspector.java (84%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/NodeInfo.java (97%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/view/LayoutBoundsView.java (95%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/view/LayoutHierarchyView.java (97%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/view/LayoutInspectView.java (92%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/layout_inspector/view/NodeInfoView.java (95%) create mode 100644 app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/OnNodeInfoSelectListener.java rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/Recorder.java (98%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/accessibility/AccessibilityActionConverter.java (96%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/accessibility/AccessibilityActionRecorder.java (93%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/EventFormatException.java (86%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/InputEventConverter.java (94%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/InputEventRecorder.java (91%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/InputEventToJsConverter.java (98%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/InputEventToSendEventConverter.java (94%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/InputEventToSendEventJsConverter.java (97%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/KeyObserver.java (94%) rename app/src/main/java/com/stardust/scriptdroid/{ => external/floating_window/menu}/record/inputevent/TouchRecorder.java (77%) delete mode 100644 app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/OnNodeInfoSelectListener.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Handler.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Router.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java create mode 100644 app/src/main/res/drawable-xxhdpi/ic_debug.png delete mode 100644 autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntimeBuilder.java rename {app/src/main/java/com/stardust/scriptdroid/autojs/api => autojs/src/main/java/com/stardust/autojs/runtime/api/internal}/VolatileBox.java (93%) diff --git a/app/build.gradle b/app/build.gradle index 3fae4f85..1167f3a3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 19 targetSdkVersion 23 - versionCode 126 - versionName "2.0.10 Beta" + versionCode 128 + versionName "2.0.10c Beta" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7ac2b7a4..466e7a2d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java index 94c5e0ed..2c177113 100644 --- a/app/src/main/java/com/stardust/scriptdroid/App.java +++ b/app/src/main/java/com/stardust/scriptdroid/App.java @@ -74,7 +74,6 @@ public class App extends MultiDexApplication { AutoJs.initInstance(this); JsBeautifierFactory.initJsBeautify(this, "js/jsbeautify.js"); initVolumeChangeObserver(); - startService(new Intent(this, AccessibilityWatchDogService.class)); } private void initVolumeChangeObserver() { diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java index 4eb9c10b..d964f648 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java @@ -20,13 +20,12 @@ import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.autojs.api.Shell; -import com.stardust.scriptdroid.script.StorageScriptProvider; import com.stardust.scriptdroid.ui.console.StardustConsole; import com.stardust.util.Supplier; import com.stardust.util.UiHandler; import com.stardust.view.accessibility.AccessibilityInfoProvider; -import com.stardust.scriptdroid.layout_inspector.LayoutInspector; -import com.stardust.scriptdroid.record.accessibility.AccessibilityActionRecorder; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.LayoutInspector; +import com.stardust.scriptdroid.external.floating_window.menu.record.accessibility.AccessibilityActionRecorder; import com.stardust.scriptdroid.service.AccessibilityWatchDogService; import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.ui.console.JraskaConsole; diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java b/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java index 4409f9cf..66029def 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java @@ -11,6 +11,7 @@ import android.view.WindowManager; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.autojs.runtime.api.internal.VolatileBox; import com.stardust.util.UiHandler; /** diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java index d6d0def4..34292603 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java @@ -2,15 +2,13 @@ package com.stardust.scriptdroid.autojs.api; import android.content.Context; import android.content.ContextWrapper; -import android.content.DialogInterface; import android.text.TextUtils; import android.view.ContextThemeWrapper; import com.afollestad.materialdialogs.MaterialDialog; import com.stardust.autojs.runtime.ScriptInterface; -import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.api.AppUtils; -import com.stardust.scriptdroid.App; +import com.stardust.autojs.runtime.api.internal.VolatileBox; import com.stardust.scriptdroid.R; import com.stardust.util.ArrayUtils; import com.stardust.util.UiHandler; diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/OverlayPermissionChecker.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/OverlayPermissionChecker.java index 2ab56535..a3996401 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/OverlayPermissionChecker.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/OverlayPermissionChecker.java @@ -6,18 +6,12 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PixelFormat; import android.os.Handler; -import android.support.annotation.IntDef; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import com.stardust.enhancedfloaty.FloatyService; import com.stardust.enhancedfloaty.FloatyWindow; -import com.stardust.scriptdroid.App; -import com.stardust.scriptdroid.autojs.api.VolatileBox; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; /** * Created by Stardust on 2017/5/9. diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/HoverMenuService.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/HoverMenuService.java index e433a622..aedb71ad 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/HoverMenuService.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/HoverMenuService.java @@ -20,7 +20,6 @@ import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floating_window.menu.view.FloatingLayoutBoundsView; import com.stardust.scriptdroid.external.floating_window.menu.view.FloatingLayoutHierarchyView; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.theme.ThemeColorManagerCompat; import com.stardust.util.MessageEvent; diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/MainMenuNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/MainMenuNavigatorContent.java index 3cfeeafd..57ce80cd 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/MainMenuNavigatorContent.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/MainMenuNavigatorContent.java @@ -12,7 +12,7 @@ import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; -import com.stardust.scriptdroid.layout_inspector.LayoutInspector; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.LayoutInspector; import com.stardust.util.ClipboardUtil; import com.stardust.scriptdroid.ui.main.MainActivity; import com.stardust.util.MessageEvent; diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/RecordNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/RecordNavigatorContent.java index d7405f3c..fe513f53 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/RecordNavigatorContent.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/content/RecordNavigatorContent.java @@ -15,17 +15,15 @@ import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.accessibility.AccessibilityEventHelper; import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; -import com.stardust.scriptdroid.record.Recorder; -import com.stardust.scriptdroid.record.accessibility.AccessibilityActionRecorder; -import com.stardust.scriptdroid.record.inputevent.InputEventConverter; -import com.stardust.scriptdroid.record.inputevent.KeyObserver; -import com.stardust.scriptdroid.record.inputevent.TouchRecorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.accessibility.AccessibilityActionRecorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.inputevent.KeyObserver; +import com.stardust.scriptdroid.external.floating_window.menu.record.inputevent.TouchRecorder; import com.stardust.scriptdroid.ui.main.MainActivity; import com.stardust.util.MessageEvent; import com.stardust.view.ViewBinder; import com.stardust.view.ViewBinding; -import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import io.mattcarroll.hover.Navigator; diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/LayoutInspector.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/LayoutInspector.java similarity index 84% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/LayoutInspector.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/LayoutInspector.java index 44b7e1c7..1b16dd1a 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/LayoutInspector.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/LayoutInspector.java @@ -1,17 +1,12 @@ -package com.stardust.scriptdroid.layout_inspector; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector; import android.accessibilityservice.AccessibilityService; -import android.util.Log; -import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import com.stardust.scriptdroid.service.AccessibilityWatchDogService; import com.stardust.util.UnderuseExecutors; -import com.stardust.view.accessibility.AccessibilityDelegate; -import java.util.Set; import java.util.concurrent.Executor; -import java.util.concurrent.Executors; /** * Created by Stardust on 2017/3/10. diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/NodeInfo.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/NodeInfo.java similarity index 97% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/NodeInfo.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/NodeInfo.java index 7685e6a0..167ab53f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/NodeInfo.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/NodeInfo.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.layout_inspector; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector; import android.graphics.Rect; import android.support.annotation.Keep; diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutBoundsView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutBoundsView.java similarity index 95% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutBoundsView.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutBoundsView.java index f4b6e0b8..e02fe525 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutBoundsView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutBoundsView.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.layout_inspector.view; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; import android.content.Context; import android.graphics.Canvas; @@ -12,12 +12,10 @@ import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.util.ViewUtil; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutHierarchyView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutHierarchyView.java similarity index 97% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutHierarchyView.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutHierarchyView.java index ff80632a..0bb08acf 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutHierarchyView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutHierarchyView.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.layout_inspector.view; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; import android.content.Context; import android.graphics.Canvas; @@ -14,7 +14,7 @@ import android.widget.ListView; import android.widget.TextView; import com.stardust.scriptdroid.R; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.util.ViewUtil; import com.stardust.widget.LevelBeamView; diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutInspectView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutInspectView.java similarity index 92% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutInspectView.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutInspectView.java index 32239b43..0302373a 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/LayoutInspectView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/LayoutInspectView.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.layout_inspector.view; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; import android.content.Context; import android.os.Build; @@ -13,9 +13,7 @@ import android.widget.FrameLayout; import android.widget.ViewSwitcher; import com.stardust.scriptdroid.R; -import com.stardust.scriptdroid.autojs.AutoJs; -import com.stardust.scriptdroid.layout_inspector.LayoutInspector; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; /** * Created by Stardust on 2017/3/10. diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/NodeInfoView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/NodeInfoView.java similarity index 95% rename from app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/NodeInfoView.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/NodeInfoView.java index 3cf1bcad..b4edec67 100644 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/NodeInfoView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/NodeInfoView.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.layout_inspector.view; +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; import android.content.Context; import android.graphics.Color; @@ -10,7 +10,7 @@ import android.widget.TextView; import android.widget.Toast; import com.stardust.scriptdroid.R; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.util.ClipboardUtil; import java.lang.reflect.Field; diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/OnNodeInfoSelectListener.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/OnNodeInfoSelectListener.java new file mode 100644 index 00000000..4970a277 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/layout_inspector/view/OnNodeInfoSelectListener.java @@ -0,0 +1,12 @@ +package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; + +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; + +/** + * Created by Stardust on 2017/3/10. + */ + +public interface OnNodeInfoSelectListener { + void onNodeSelect(NodeInfo info); + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/record/Recorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/Recorder.java similarity index 98% rename from app/src/main/java/com/stardust/scriptdroid/record/Recorder.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/Recorder.java index 8dd74e2a..afde01bb 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/Recorder.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/Recorder.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record; +package com.stardust.scriptdroid.external.floating_window.menu.record; import java.util.Arrays; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionConverter.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionConverter.java similarity index 96% rename from app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionConverter.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionConverter.java index 9166fa1e..f7fe9efb 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionConverter.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionConverter.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.accessibility; +package com.stardust.scriptdroid.external.floating_window.menu.record.accessibility; import android.accessibilityservice.AccessibilityService; import android.os.Build; @@ -8,9 +8,8 @@ import android.view.accessibility.AccessibilityNodeInfo; import com.stardust.automator.UiObject; import com.stardust.automator.simple_action.FilterAction; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.util.SparseArrayEntries; -import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator; import com.stardust.view.accessibility.AccessibilityNodeInfoHelper; import org.greenrobot.eventbus.EventBus; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionRecorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionRecorder.java similarity index 93% rename from app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionRecorder.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionRecorder.java index c0207e6e..7b748734 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/accessibility/AccessibilityActionRecorder.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/accessibility/AccessibilityActionRecorder.java @@ -1,9 +1,9 @@ -package com.stardust.scriptdroid.record.accessibility; +package com.stardust.scriptdroid.external.floating_window.menu.record.accessibility; import android.accessibilityservice.AccessibilityService; import android.view.accessibility.AccessibilityEvent; -import com.stardust.scriptdroid.record.Recorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.view.accessibility.AccessibilityDelegate; import java.util.Arrays; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/EventFormatException.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/EventFormatException.java similarity index 86% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/EventFormatException.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/EventFormatException.java index e6e8c15e..e383c768 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/EventFormatException.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/EventFormatException.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; /** * Created by Stardust on 2017/3/7. diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventConverter.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventConverter.java similarity index 94% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventConverter.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventConverter.java index 9019bf2d..21be0eec 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventConverter.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventConverter.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import android.support.annotation.NonNull; import android.text.TextUtils; @@ -7,12 +7,9 @@ import android.widget.Toast; import com.flurry.android.FlurryAgent; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.R; -import com.stardust.scriptdroid.autojs.AutoJs; -import com.stardust.scriptdroid.record.Recorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.util.MapEntries; -import org.greenrobot.eventbus.EventBus; - import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventRecorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventRecorder.java similarity index 91% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventRecorder.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventRecorder.java index ff74118f..b8a8d181 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventRecorder.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventRecorder.java @@ -1,7 +1,7 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import com.stardust.scriptdroid.autojs.api.Shell; -import com.stardust.scriptdroid.record.Recorder; +import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; /** * Created by Stardust on 2017/3/6. diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToJsConverter.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToJsConverter.java similarity index 98% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToJsConverter.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToJsConverter.java index 237910b7..b7f71142 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToJsConverter.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToJsConverter.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventConverter.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventConverter.java similarity index 94% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventConverter.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventConverter.java index 3e17a492..ce248eac 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventConverter.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventConverter.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventJsConverter.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventJsConverter.java similarity index 97% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventJsConverter.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventJsConverter.java index dbcf95ad..9855e601 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/InputEventToSendEventJsConverter.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/InputEventToSendEventJsConverter.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/KeyObserver.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/KeyObserver.java similarity index 94% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/KeyObserver.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/KeyObserver.java index d5807756..0c652ee0 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/KeyObserver.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/KeyObserver.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/TouchRecorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/TouchRecorder.java similarity index 77% rename from app/src/main/java/com/stardust/scriptdroid/record/inputevent/TouchRecorder.java rename to app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/TouchRecorder.java index 27d1f427..641bac6c 100644 --- a/app/src/main/java/com/stardust/scriptdroid/record/inputevent/TouchRecorder.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/record/inputevent/TouchRecorder.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.record.inputevent; +package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; /** * Created by Stardust on 2017/3/16. diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutBoundsView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutBoundsView.java index 29bc4ce8..b0933c68 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutBoundsView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutBoundsView.java @@ -7,10 +7,10 @@ import android.view.WindowManager; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; -import com.stardust.scriptdroid.layout_inspector.view.LayoutBoundsView; -import com.stardust.scriptdroid.layout_inspector.view.NodeInfoView; -import com.stardust.scriptdroid.layout_inspector.view.OnNodeInfoSelectListener; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.LayoutBoundsView; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.NodeInfoView; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.OnNodeInfoSelectListener; import com.stardust.util.MessageEvent; /** diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutHierarchyView.java b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutHierarchyView.java index 36d7ca23..12bb2a9f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutHierarchyView.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floating_window/menu/view/FloatingLayoutHierarchyView.java @@ -7,10 +7,10 @@ import android.view.WindowManager; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; -import com.stardust.scriptdroid.layout_inspector.NodeInfo; -import com.stardust.scriptdroid.layout_inspector.view.LayoutHierarchyView; -import com.stardust.scriptdroid.layout_inspector.view.NodeInfoView; -import com.stardust.scriptdroid.layout_inspector.view.OnNodeInfoSelectListener; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.LayoutHierarchyView; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.NodeInfoView; +import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.OnNodeInfoSelectListener; import com.stardust.util.MessageEvent; /** diff --git a/app/src/main/java/com/stardust/scriptdroid/external/open/ImportIntentActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/open/ImportIntentActivity.java index 17ed14af..b6ff3d5c 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/open/ImportIntentActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/open/ImportIntentActivity.java @@ -40,8 +40,4 @@ public class ImportIntentActivity extends BaseActivity { finish(); } - private void startMainActivity() { - - finish(); - } } \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java index 06ad2d9f..703a9222 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java @@ -44,7 +44,11 @@ public class RunIntentActivity extends Activity { source = new StringScriptSource(script); } else if (path != null && new PathChecker(this).checkAndToastError(path)) { ScriptSource fileScriptSource = new FileScriptSource(path); - source = new SequenceScriptSource(fileScriptSource.getName(), new StringScriptSource(script), fileScriptSource); + if (script != null) { + source = new SequenceScriptSource(fileScriptSource.getName(), new StringScriptSource(script), fileScriptSource); + } else { + source = fileScriptSource; + } directoryPath = new File(path).getParent(); } if (source != null) { diff --git a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/OnNodeInfoSelectListener.java b/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/OnNodeInfoSelectListener.java deleted file mode 100644 index 98564164..00000000 --- a/app/src/main/java/com/stardust/scriptdroid/layout_inspector/view/OnNodeInfoSelectListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.stardust.scriptdroid.layout_inspector.view; - -import com.stardust.scriptdroid.layout_inspector.NodeInfo; - -/** - * Created by Stardust on 2017/3/10. - */ - -public interface OnNodeInfoSelectListener { - void onNodeSelect(NodeInfo info); - -} diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Handler.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Handler.java new file mode 100644 index 00000000..f5d8f840 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Handler.java @@ -0,0 +1,12 @@ +package com.stardust.scriptdroid.sublime_plugin_client; + +import com.google.gson.JsonObject; + +/** + * Created by Stardust on 2017/5/11. + */ + +public interface Handler { + + boolean handle(JsonObject data); +} diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Router.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Router.java new file mode 100644 index 00000000..74a27f65 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/Router.java @@ -0,0 +1,32 @@ +package com.stardust.scriptdroid.sublime_plugin_client; + +import com.google.gson.JsonObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Stardust on 2017/5/11. + */ + +public class Router implements Handler { + + private Map mHandlerMap = new HashMap<>(); + private String mKey; + + public Router(String key) { + mKey = key; + } + + public Router handler(String value, Handler handler) { + mHandlerMap.put(value, handler); + return this; + } + + @Override + public boolean handle(JsonObject data) { + Handler handler = mHandlerMap.get(data.get(mKey).getAsString()); + return handler != null && handler.handle(data); + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java new file mode 100644 index 00000000..c636d6a7 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java @@ -0,0 +1,102 @@ +package com.stardust.scriptdroid.sublime_plugin_client; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.stardust.util.UiHandler; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +/** + * Created by Stardust on 2017/5/10. + */ + +public class SublimePluginClient { + + + private Socket mSocket; + private Handler mResponseHandler; + private String host; + private int port; + private OutputStream mOutputStream; + private UiHandler mUiHandler; + + public SublimePluginClient(UiHandler handler, String host, int port) { + this.host = host; + this.port = port; + mUiHandler = handler; + } + + public void setResponseHandler(Handler handler) { + mResponseHandler = handler; + } + + public void listen() { + if (mSocket != null) { + throw new IllegalStateException("Socket listening "); + } + new Thread(new Runnable() { + @Override + public void run() { + try { + mSocket = new Socket(host, port); + mSocket.setTcpNoDelay(true); + mUiHandler.toast("Connected"); + mOutputStream = mSocket.getOutputStream(); + startReadLoop(mSocket.getInputStream()); + } catch (IOException e) { + e.printStackTrace(); + } finally { + tryClose(); + } + } + }).start(); + } + + private void tryClose() { + try { + close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void send(JsonObject object) throws IOException { + if (mSocket == null) { + throw new IllegalStateException("Socket is not listening "); + } + mOutputStream.write(object.toString().getBytes()); + mOutputStream.write("\n".getBytes()); + mOutputStream.flush(); + } + + public void close() throws IOException { + if (mSocket != null) { + mSocket.close(); + mSocket = null; + mOutputStream = null; + mUiHandler.toast("Disconnected"); + } + } + + private void startReadLoop(InputStream stream) throws IOException { + byte[] buffer = new byte[8192]; + while (!Thread.currentThread().isInterrupted()) { + int len = stream.read(buffer); + if (len <= 0) { + return; + } + if (mResponseHandler != null) { + String str = new String(buffer, 0, len); + JsonElement jsonElement = new JsonParser().parse(str); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + mResponseHandler.handle(jsonObject); + } + } + } + + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java new file mode 100644 index 00000000..10a63383 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java @@ -0,0 +1,54 @@ +package com.stardust.scriptdroid.sublime_plugin_client; + +import com.google.gson.JsonObject; +import com.stardust.scriptdroid.autojs.AutoJs; + +import java.io.IOException; + +/** + * Created by Stardust on 2017/5/11. + */ + +public class SublimePluginClientManager { + + private static SublimePluginClient client; + + public static boolean isConnected() { + return client != null; + } + + public static void disconnectIfNeeded() { + if (!isConnected()) + return; + disconnect(); + } + + public static void disconnect() { + try { + client.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + client = null; + } + } + + public static void connect(String host) { + client = new SublimePluginClient(AutoJs.getInstance().getUiHandler(), host, 1209); + client.setResponseHandler(new SublimeResponseHandler()); + client.listen(); + } + + public static void log(String log) { + if (!isConnected()) + return; + JsonObject object = new JsonObject(); + object.addProperty("type", "log"); + object.addProperty("log", log); + try { + client.send(object); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java new file mode 100644 index 00000000..f38b955e --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java @@ -0,0 +1,85 @@ +package com.stardust.scriptdroid.sublime_plugin_client; + +import android.text.TextUtils; +import android.util.SparseArray; + +import com.google.gson.JsonObject; +import com.stardust.autojs.engine.ScriptEngine; +import com.stardust.autojs.execution.ScriptExecution; +import com.stardust.autojs.script.StringScriptSource; +import com.stardust.pio.PFile; +import com.stardust.scriptdroid.autojs.AutoJs; +import com.stardust.scriptdroid.script.Scripts; + +/** + * Created by Stardust on 2017/5/11. + */ + +public class SublimeResponseHandler implements Handler { + + + private Router mRouter = new Router("type") + .handler("command", new Router("command") + .handler("run", new Handler() { + @Override + public boolean handle(JsonObject data) { + String script = data.get("script").getAsString(); + String name = data.get("name").getAsString(); + int viewId = data.get("view_id").getAsInt(); + runScript(viewId, name, script); + return false; + } + }) + .handler("stop", new Handler() { + @Override + public boolean handle(JsonObject data) { + int viewId = data.get("view_id").getAsInt(); + stopScript(viewId); + return true; + } + }) + .handler("rerun", new Handler() { + + @Override + public boolean handle(JsonObject data) { + int viewId = data.get("view_id").getAsInt(); + String script = data.get("script").getAsString(); + String name = data.get("name").getAsString(); + stopScript(viewId); + runScript(viewId, name, script); + return false; + } + }) + .handler("stopAll", new Handler() { + @Override + public boolean handle(JsonObject data) { + AutoJs.getInstance().getScriptEngineService().stopAllAndToast(); + return false; + } + })); + + + private SparseArray mScriptExecutions = new SparseArray<>(); + + @Override + public boolean handle(JsonObject data) { + return mRouter.handle(data); + } + + private void runScript(int viewId, String name, String script) { + if (TextUtils.isEmpty(name)) { + name = "[" + viewId + "]"; + } else { + name = PFile.getNameWithoutExtension(name); + } + mScriptExecutions.put(viewId, Scripts.run(new StringScriptSource(":" + name, script))); + } + + private void stopScript(int viewId) { + ScriptExecution execution = mScriptExecutions.get(viewId); + if (execution != null) { + execution.getEngine().forceStop(); + mScriptExecutions.delete(viewId); + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java b/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java index 852298ff..928392d2 100644 --- a/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java +++ b/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java @@ -7,9 +7,12 @@ package com.stardust.scriptdroid.tool; import android.content.Intent; import android.util.Log; +import android.view.WindowManager; +import android.widget.Toast; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.R; +import com.stardust.util.IntentUtil; import java.io.PrintWriter; import java.io.StringWriter; @@ -26,6 +29,11 @@ public class CrashHandler implements UncaughtExceptionHandler { } public void uncaughtException(Thread thread, Throwable ex) { + if (causedByBadWindowToken(ex)) { + Toast.makeText(App.getApp(), R.string.text_no_floating_window_permission, Toast.LENGTH_SHORT).show(); + IntentUtil.goToAppDetailSettings(App.getApp()); + return; + } try { Log.e(TAG, "Uncaught Exception", ex); if (crashTooManyTimes()) @@ -38,6 +46,16 @@ public class CrashHandler implements UncaughtExceptionHandler { } } + private static boolean causedByBadWindowToken(Throwable e) { + while (e != null) { + if (e instanceof WindowManager.BadTokenException) { + return true; + } + e = e.getCause(); + } + return false; + } + private void startErrorReportActivity(String msg, String detail) { Intent intent = new Intent(App.getApp(), this.mErrorReportClass); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java new file mode 100644 index 00000000..3667bb33 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java @@ -0,0 +1,24 @@ +package com.stardust.scriptdroid.tool; + +import android.content.Context; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.text.format.Formatter; + +import java.net.InetAddress; + +import static android.content.Context.WIFI_SERVICE; + +/** + * Created by Stardust on 2017/5/11. + */ + +public class WifiTool { + + public static String getWifiAddress(Context context) { + WifiManager wifiMgr = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE); + WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); + int ip = wifiInfo.getIpAddress(); + return Formatter.formatIpAddress(ip); + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java b/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java index c79c2f30..8fc2f4bd 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java @@ -10,6 +10,7 @@ import android.util.SparseArray; import com.jraska.console.Console; import com.stardust.autojs.runtime.api.AbstractConsole; import com.stardust.scriptdroid.App; +import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClientManager; import com.stardust.util.SparseArrayEntries; import com.stardust.util.TextUtils; @@ -48,12 +49,14 @@ public class JraskaConsole extends AbstractConsole { public void println(int level, CharSequence charSequence) { Console.write(getLevelSpannable(level, getTag(level))); Console.writeLine(getLevelSpannable(level, charSequence)); + SublimePluginClientManager.log(getTag(level) + charSequence.toString()); } @Override public void write(int level, CharSequence data) { Console.write(getLevelSpannable(level, getTag(level))); Console.write(getLevelSpannable(level, data)); + SublimePluginClientManager.log(getTag(level) + data.toString()); } private CharSequence getTag(int level) { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java index 1daa915e..dd88e0be 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java @@ -16,6 +16,7 @@ import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.ImageView; @@ -24,6 +25,7 @@ import android.widget.Toast; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; +import com.google.gson.JsonObject; import com.stardust.app.FragmentPagerAdapterBuilder; import com.stardust.app.NotAskAgainDialog; import com.stardust.app.OnActivityResultDelegate; @@ -36,6 +38,8 @@ import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.StorageScriptProvider; import com.stardust.scriptdroid.script.sample.Sample; import com.stardust.scriptdroid.service.AccessibilityWatchDogService; +import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClient; +import com.stardust.scriptdroid.sublime_plugin_client.SublimeResponseHandler; import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.DrawableSaver; import com.stardust.scriptdroid.ui.BaseActivity; diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java index f81a8103..b33e17ea 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java @@ -2,6 +2,7 @@ package com.stardust.scriptdroid.ui.main; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.FragmentActivity; @@ -10,13 +11,16 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.afollestad.materialdialogs.MaterialDialog; import com.stardust.app.Fragment; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.service.AccessibilityWatchDogService; +import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClientManager; import com.stardust.scriptdroid.tool.AccessibilityServiceTool; +import com.stardust.scriptdroid.tool.WifiTool; import com.stardust.scriptdroid.ui.console.LogActivity; import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity; import com.stardust.util.UnderuseExecutors; @@ -42,6 +46,7 @@ public class SlideMenuFragment extends Fragment { } private SwitchCompat mAccessibilityServiceSwitch, mFloatingWindowSwitch; + private SwitchCompat mDebugSwith; private Executor mExecutor = UnderuseExecutors.getExecutor(); @Override @@ -94,6 +99,7 @@ public class SlideMenuFragment extends Fragment { private void setUpSwitchCompat() { mAccessibilityServiceSwitch = $(R.id.sw_auto_operate_service); mFloatingWindowSwitch = $(R.id.sw_floating_window); + mDebugSwith = $(R.id.sw_debug); } @@ -135,6 +141,27 @@ public class SlideMenuFragment extends Fragment { mFloatingWindowSwitch.toggle(); } + @ViewBinding.Click(R.id.debug) + private void toggleDebugSwitch() { + mDebugSwith.toggle(); + } + + @ViewBinding.Check(R.id.sw_debug) + private void setDebugEnabled(boolean enabled) { + if (enabled && !SublimePluginClientManager.isConnected()) { + new MaterialDialog.Builder(getActivity()) + .title("服务器地址") + .input("", WifiTool.getWifiAddress(getActivity()), new MaterialDialog.InputCallback() { + @Override + public void onInput(@NonNull MaterialDialog dialog, CharSequence input) { + SublimePluginClientManager.connect(input.toString()); + } + }) + .show(); + } else if (!enabled) { + SublimePluginClientManager.disconnectIfNeeded(); + } + } @ViewBinding.Click(R.id.stop_all_running_scripts) private void stopAllRunningScripts() { diff --git a/app/src/main/res/drawable-xxhdpi/ic_debug.png b/app/src/main/res/drawable-xxhdpi/ic_debug.png new file mode 100644 index 0000000000000000000000000000000000000000..f1151fa34d11b2252d3a17fe03ac28b4af1dfc11 GIT binary patch literal 1136 zcmV-$1dscPP)&Okf_@EO35Scez@4tfs&m1VmH;HyyKniyC6?Y!ce?r0GY0MI(Tjh6Ot?t}nv zabNIz3;@lK0EG4o073CIt~e*}X^#QC^K>vzmKGQq0hp{Y2H+`xSCJ5Xk*jBIJtiN< zzU#CES`oP?v<1`{fSUlmL_##dE5_N=jo257u1BLT*BzYjH&KFpO30rx9 zCQH)k+1>!4m1KRsSym;N^i7afzZ* z8STzg_5Tt8ULF_;KuPBkfK~r5b>`)P)PK-K?iXnJ^HBnd7dtN^X1|JMNU z@IdN!0$s%-nr*P@|1|(c?&adyb{5Qnm&*rm+>{48>#|9AOZ*>?UIHK&4{V}!r$G5JC-TJq{r8jA&tEP!ZDu=TsTfWiU*m0zmqH#PPz&tQvYw2%rZsJGs0TC0$HCgWNYR8X^Bjh2XY*c7Dq_8n6*HV zOg^}asYuFGCPxtHKBJDyG<%*!q!&3%WpWz-&k++jfz{&i-A zZpG#Tp>V6)Tzsg}Y(-fvZn&ks3~S8_uc-Ifq5c7ky7N8C_eS{u0000 - - + + + + + + + + + + 又双 又双叒 又双叒叕 + 连接调试服务器 diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java index 1a12de09..c82aac1e 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java @@ -2,6 +2,7 @@ package com.stardust.autojs.runtime; import android.content.Intent; import android.os.Build; +import android.os.Looper; import com.stardust.autojs.R; import com.stardust.autojs.engine.ScriptEngine; @@ -10,6 +11,7 @@ import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.UiSelector; +import com.stardust.autojs.runtime.api.internal.VolatileBox; import com.stardust.pio.UncheckedIOException; import com.stardust.util.ClipboardUtil; import com.stardust.autojs.runtime.api.ProcessShell; @@ -117,6 +119,20 @@ public class ScriptRuntime extends AbstractScriptRuntime { }); } + public String getClip() { + if (Looper.myLooper() == Looper.getMainLooper()) { + return ClipboardUtil.getClipOrEmpty(mUiHandler.getContext()).toString(); + } + final VolatileBox clip = new VolatileBox<>(""); + mUiHandler.post(new Runnable() { + @Override + public void run() { + clip.setAndNotify(ClipboardUtil.getClipOrEmpty(mUiHandler.getContext()).toString()); + } + }); + return clip.blockedGet(); + } + @Override public AbstractShell getRootShell() { ensureRootShell(); diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntimeBuilder.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntimeBuilder.java deleted file mode 100644 index cd30ea3c..00000000 --- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntimeBuilder.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.stardust.autojs.runtime; - -import com.stardust.autojs.runtime.api.AbstractShell; -import com.stardust.autojs.runtime.api.AppUtils; -import com.stardust.autojs.runtime.api.Console; -import com.stardust.util.Supplier; -import com.stardust.util.UiHandler; - -public class ScriptRuntimeBuilder { - -} \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/VolatileBox.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/internal/VolatileBox.java similarity index 93% rename from app/src/main/java/com/stardust/scriptdroid/autojs/api/VolatileBox.java rename to autojs/src/main/java/com/stardust/autojs/runtime/api/internal/VolatileBox.java index a0cc60eb..3afe761d 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/VolatileBox.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/internal/VolatileBox.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.autojs.api; +package com.stardust.autojs.runtime.api.internal; import com.stardust.autojs.runtime.ScriptInterruptedException; diff --git a/common/src/main/java/com/stardust/util/ClipboardUtil.java b/common/src/main/java/com/stardust/util/ClipboardUtil.java index eb4187a4..ba7abe38 100644 --- a/common/src/main/java/com/stardust/util/ClipboardUtil.java +++ b/common/src/main/java/com/stardust/util/ClipboardUtil.java @@ -3,6 +3,7 @@ package com.stardust.util; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; +import android.support.annotation.NonNull; /** @@ -15,4 +16,17 @@ public class ClipboardUtil { public static void setClip(Context context, CharSequence text) { ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("", text)); } + + public static CharSequence getClip(Context context) { + return ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).getPrimaryClip().getItemAt(0).getText(); + } + + @NonNull + public static CharSequence getClipOrEmpty(Context context) { + CharSequence clip = getClip(context); + if (clip == null) { + return ""; + } + return clip; + } }