Skip to content

Commit 707cc0d

Browse files
committed
Bug fixes and fix sora editor works
1 parent 2f25384 commit 707cc0d

29 files changed

Lines changed: 565 additions & 264 deletions

filetree/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,4 @@ dependencies {
3838
exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk8"
3939
}
4040
implementation("androidx.recyclerview:recyclerview:1.3.2")
41-
implementation(project(":utils"))
4241
}

main/src/main/assets/textmate/languages.json

Lines changed: 0 additions & 22 deletions
This file was deleted.

main/src/main/assets/textmate/themes/darcula.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "darcula",
33
"settings": [{
44
"settings": {
5-
"background": "#1C1B20",
5+
"background": "#1E1E1E",
66
"foreground": "#cccccc",
77
"lineHighlight": "#2B2B2B",
88
"selection": "#214283",

main/src/main/java/org/xedox/webaide/AppCore.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,27 @@
1111
import org.xedox.utils.FileX;
1212
import org.xedox.utils.dialog.DialogBuilder;
1313
import org.xedox.utils.dialog.NeoAlertDialogBuilder;
14-
import org.xedox.utils.sora.SoraEditorManager;
14+
import org.xedox.webaide.sora.SoraEditorManager;
1515
import static androidx.appcompat.app.AppCompatDelegate.*;
16+
import org.xedox.webaide.dialog.CopyAssetsDialog;
1617

1718
public class AppCore extends MultiDexApplication {
1819

1920
public static AppCore instance;
2021

2122
private String filesDir;
2223
private String projectsDir;
24+
private String textmateDir;
2325

2426
@Override
2527
public void onCreate() {
2628
super.onCreate();
2729
instance = this;
28-
filesDir = getExternalFilesDir(null).getAbsolutePath() + "/";
30+
filesDir = instance.getExternalFilesDir(null).getAbsolutePath() + "/";
31+
//filesDir = "/storage/emulated/0/Android/data/org.xedox.webaide/files/";
2932
projectsDir = filesDir + "projects/";
30-
mkdirs(projectsDir);
33+
textmateDir = filesDir + "textmate/";
34+
mkdirs(projectsDir, textmateDir);
3135
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
3236
AppCore.setAppDelegate(sp.getString("app_theme", "SYSTEM"));
3337
AppCore.setDialogType(sp.getString("app_dialog_type", "MATERIAL"));
@@ -46,6 +50,7 @@ public static String dir(String name) {
4650
return switch (name) {
4751
case "files" -> instance.filesDir;
4852
case "projects" -> instance.projectsDir;
53+
case "textmate" -> instance.textmateDir;
4954
default -> throw new NoSuchElementException("No exists directory: " + name);
5055
};
5156
}
@@ -69,9 +74,9 @@ public static void setAppDelegate(String newValue) {
6974
}
7075

7176
public static void setDialogType(String type) {
72-
if("ANDROIDX".equals(type)) {
77+
if ("ANDROIDX".equals(type)) {
7378
DialogBuilder.builderType = AlertDialog.Builder.class;
74-
} else if("NEO".equals(type)) {
79+
} else if ("NEO".equals(type)) {
7580
DialogBuilder.builderType = NeoAlertDialogBuilder.class;
7681
} else {
7782
DialogBuilder.builderType = MaterialAlertDialogBuilder.class;

main/src/main/java/org/xedox/webaide/DevToolsActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ private void initFragments(FragmentManager fm) {
6363
sourceFragment = SourceFragment.newInstance();
6464

6565
fm.beginTransaction()
66-
.add(R.id.content, previewFragment)
6766
.add(R.id.content, sourceFragment)
67+
.add(R.id.content, previewFragment)
6868
.commit();
6969
fm.beginTransaction().hide(sourceFragment);
7070
}

main/src/main/java/org/xedox/webaide/EditorActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
8787
}
8888
} else if (item.getItemId() == R.id.color_picker) {
8989
ColorPickerDialog.show(this);
90+
} else if (item.getItemId() == R.id.dev_tools) {
91+
Intent intent = new Intent(this, DevToolsActivity.class);
92+
startActivity(intent);
9093
}
9194
return super.onOptionsItemSelected(item);
9295
}

main/src/main/java/org/xedox/webaide/MainActivity.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package org.xedox.webaide;
22

33
import android.content.Intent;
4+
import android.content.SharedPreferences;
45
import android.os.Bundle;
56
import android.view.View;
67
import android.widget.ImageButton;
78
import androidx.appcompat.app.AppCompatActivity;
9+
import androidx.preference.PreferenceManager;
810
import androidx.recyclerview.widget.LinearLayoutManager;
911
import androidx.recyclerview.widget.RecyclerView;
1012
import com.google.android.material.appbar.MaterialToolbar;
13+
import java.io.File;
1114
import org.xedox.filetree.widget.FileTreeView;
1215
import org.xedox.utils.BaseActivity;
1316
import org.xedox.utils.dialog.ErrorDialog;
14-
import org.xedox.utils.sora.SoraEditorManager;
17+
import org.xedox.webaide.sora.SoraEditorManager;
18+
import org.xedox.webaide.dialog.CopyAssetsDialog;
1519
import org.xedox.webaide.dialog.CreateProjectDialog;
1620
import org.xedox.webaide.project.Project;
1721
import org.xedox.webaide.project.ProjectsAdapter;
@@ -25,8 +29,6 @@ public class MainActivity extends BaseActivity {
2529
private View emptyProjectsRecycler;
2630
private ImageButton newProject, settings, devTools;
2731

28-
public static boolean initialize = false;
29-
3032
@Override
3133
protected void onCreate(Bundle savedInstanceState) {
3234
super.onCreate(savedInstanceState);
@@ -53,20 +55,25 @@ protected void onCreate(Bundle savedInstanceState) {
5355
finish();
5456
});
5557
newProject.setOnClickListener((v) -> CreateProjectDialog.show(this, projectsAdapter));
56-
settings.setOnClickListener((v) -> {
57-
Intent intent = new Intent(this, SettingsActivity.class);
58-
startActivity(intent);
59-
});
60-
devTools.setOnClickListener((v) -> {
61-
Intent intent = new Intent(this, DevToolsActivity.class);
62-
startActivity(intent);
63-
});
58+
settings.setOnClickListener(
59+
(v) -> {
60+
Intent intent = new Intent(this, SettingsActivity.class);
61+
startActivity(intent);
62+
});
63+
devTools.setOnClickListener(
64+
(v) -> {
65+
Intent intent = new Intent(this, DevToolsActivity.class);
66+
startActivity(intent);
67+
});
6468
projectsAdapter.setOnChangeListener(
6569
hasItems ->
6670
emptyProjectsRecycler.setVisibility(hasItems ? View.GONE : View.VISIBLE));
67-
if (!initialize) {
71+
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
72+
if (!sp.getBoolean("isCopyedAssets", false)
73+
|| !new File(AppCore.dir("files"), "textmate").exists()) {
74+
CopyAssetsDialog.show(this);
75+
} else {
6876
SoraEditorManager.initialize(this);
69-
initialize = true;
7077
}
7178
}
7279

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.xedox.webaide.dialog;
2+
3+
import android.content.Context;
4+
import android.content.SharedPreferences;
5+
import androidx.preference.PreferenceManager;
6+
import org.xedox.utils.Assets;
7+
import org.xedox.utils.dialog.ErrorDialog;
8+
import org.xedox.utils.dialog.LoadingDialog;
9+
import org.xedox.webaide.AppCore;
10+
import org.xedox.webaide.R;
11+
import org.xedox.webaide.sora.SoraEditorManager;
12+
13+
public class CopyAssetsDialog extends LoadingDialog {
14+
15+
private Context mContext;
16+
17+
private CopyAssetsDialog(Context context) {
18+
super(context, R.string.copying_assets, null);
19+
this.mContext = context;
20+
setRunnable(this::copyAssets);
21+
}
22+
23+
public static void show(Context context) {
24+
CopyAssetsDialog d = new CopyAssetsDialog(context);
25+
d.setMaxProgress(-1);
26+
d.show();
27+
}
28+
29+
private void copyAssets() {
30+
Assets ass = Assets.from(mContext);
31+
try {
32+
ass.copyAssetsRecursive("textmate", AppCore.file("textmate"));
33+
getHandler().post(() -> SoraEditorManager.initialize(mContext));
34+
} catch (Exception err) {
35+
getHandler().post(() -> ErrorDialog.show(mContext, err));
36+
}
37+
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
38+
sp.edit().putBoolean("isCopyedAssets", true).apply();
39+
dismiss();
40+
}
41+
}

main/src/main/java/org/xedox/webaide/editor/FileFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
import org.xedox.utils.BaseFragment;
1414
import org.xedox.utils.FileX;
1515
import org.xedox.utils.dialog.ErrorDialog;
16-
import org.xedox.utils.sora.SoraEditor;
17-
import org.xedox.utils.sora.SoraTextMateLanguage;
16+
import org.xedox.webaide.sora.SoraEditor;
17+
import org.xedox.webaide.sora.SoraTextMateLanguage;
1818

1919
public class FileFragment extends BaseFragment {
2020

utils/src/main/java/org/xedox/utils/sora/ResourceFileResolver.java renamed to main/src/main/java/org/xedox/webaide/sora/ResourceFileResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.xedox.utils.sora;
1+
package org.xedox.webaide.sora;
22

33
import io.github.rosemoe.sora.langs.textmate.registry.provider.FileResolver;
44
import java.io.FileInputStream;
@@ -14,7 +14,7 @@ public InputStream resolveStreamByPath(String path) {
1414
try {
1515
return new FileInputStream(path);
1616
} catch (FileNotFoundException e) {
17-
throw new RuntimeException("File not found: " + path, e);
17+
throw new RuntimeException(e);
1818
}
1919
}
2020
}

0 commit comments

Comments
 (0)