diff --git a/.idea/misc.xml b/.idea/misc.xml
index adbae967d..6d6a2581e 100755
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -20,7 +20,7 @@
-
+
diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java
index 68104e0e4..2f229aac4 100755
--- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java
+++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java
@@ -43,6 +43,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.menu.MenuBuilder;
+import androidx.appcompat.widget.TooltipCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import androidx.fragment.app.Fragment;
@@ -67,6 +68,7 @@ import com.itsaky.androidide.databinding.ActivityEditorBinding;
import com.itsaky.androidide.databinding.LayoutDiagnosticInfoBinding;
import com.itsaky.androidide.databinding.LayoutSearchProjectBinding;
import com.itsaky.androidide.fragments.FileTreeFragment;
+import com.itsaky.androidide.fragments.NonEditableEditorFragment;
import com.itsaky.androidide.fragments.SearchResultFragment;
import com.itsaky.androidide.fragments.sheets.OptionsListFragment;
import com.itsaky.androidide.fragments.sheets.ProgressSheet;
@@ -258,9 +260,41 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
}
});
+ mBinding.bottomSheet.tabs.addOnTabSelectedListener (new TabLayout.OnTabSelectedListener () {
+
+ @Override
+ public void onTabSelected (TabLayout.Tab tab) {
+ final var fragment = bottomSheetTabAdapter.getFragmentAtIndex (tab.getPosition ());
+ if (fragment instanceof NonEditableEditorFragment) {
+ mBinding.bottomSheet.clearFab.show ();
+ } else {
+ mBinding.bottomSheet.clearFab.hide ();
+ }
+ }
+
+ @Override
+ public void onTabUnselected (TabLayout.Tab tab) {
+
+ }
+ @Override
+ public void onTabReselected (TabLayout.Tab tab) {
+
+ }
+ });
+
+ TooltipCompat.setTooltipText (mBinding.bottomSheet.clearFab, getString (R.string.title_clear_output));
+ mBinding.bottomSheet.clearFab.setOnClickListener (v -> {
+ final var fragment = bottomSheetTabAdapter.getFragmentAtIndex (mBinding.bottomSheet.tabs.getSelectedTabPosition ());
+ if (fragment instanceof NonEditableEditorFragment) {
+ final var editor = (NonEditableEditorFragment) fragment;
+ if (editor.getEditor () != null) {
+ editor.getEditor ().setText ("");
+ }
+ }
+ });
+
if (!getApp ().getPrefManager ().getBoolean (KEY_BOTTOM_SHEET_SHOWN) && mEditorBottomSheet.getState () != BottomSheetBehavior.STATE_EXPANDED) {
mEditorBottomSheet.setState (BottomSheetBehavior.STATE_EXPANDED);
-
new Handler (Looper.getMainLooper ()).postDelayed (() -> {
mEditorBottomSheet.setState (BottomSheetBehavior.STATE_COLLAPSED);
getApp ().getPrefManager ().putBoolean (KEY_BOTTOM_SHEET_SHOWN, true);
diff --git a/app/src/main/java/com/itsaky/androidide/adapters/EditorBottomSheetTabAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/EditorBottomSheetTabAdapter.java
index ee87332b9..ff1c1284c 100644
--- a/app/src/main/java/com/itsaky/androidide/adapters/EditorBottomSheetTabAdapter.java
+++ b/app/src/main/java/com/itsaky/androidide/adapters/EditorBottomSheetTabAdapter.java
@@ -49,6 +49,10 @@ public class EditorBottomSheetTabAdapter extends FragmentStateAdapter {
this.fragments.add (new Tab (fragmentActivity.getString (R.string.view_search_results), new SearchResultFragment ()));
}
+ public Fragment getFragmentAtIndex (int index) {
+ return this.fragments.get (index).fragment;
+ }
+
@NonNull
@Override
public Fragment createFragment (int position) {
diff --git a/app/src/main/res/layout/layout_editor_bottom_sheet.xml b/app/src/main/res/layout/layout_editor_bottom_sheet.xml
index 1632b4adc..2e176a888 100644
--- a/app/src/main/res/layout/layout_editor_bottom_sheet.xml
+++ b/app/src/main/res/layout/layout_editor_bottom_sheet.xml
@@ -14,8 +14,7 @@
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see .
-->
-
-
+ android:background="@color/content_background"
+ android:layout_below="@id/tabs"/>
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/xml-inflater/src/main/java/com/itsaky/inflater/util/CommonParseUtils.java b/xml-inflater/src/main/java/com/itsaky/inflater/util/CommonParseUtils.java
index 17182329b..ecc01d816 100644
--- a/xml-inflater/src/main/java/com/itsaky/inflater/util/CommonParseUtils.java
+++ b/xml-inflater/src/main/java/com/itsaky/inflater/util/CommonParseUtils.java
@@ -177,18 +177,18 @@ public class CommonParseUtils {
if (drawable == null) {
return null;
}
-
+
try {
final var parser = DrawableParserFactory.newParser (ctx, drawable, resourceFinder);
if (parser == null) {
return null;
}
-
return parser.parse();
} catch (Exception e) {
LOG.error ("Error parsing drawable", e);
return null;
}
+
} else if (value.startsWith("@color/")) {
final String color = resourceFinder.findColor(value.substring("@color/".length()));
// TODO Check if this color resource is a selector
diff --git a/xml-inflater/src/main/java/com/itsaky/inflater/values/ValuesTableFactory.java b/xml-inflater/src/main/java/com/itsaky/inflater/values/ValuesTableFactory.java
index f431bbbb3..454da3489 100644
--- a/xml-inflater/src/main/java/com/itsaky/inflater/values/ValuesTableFactory.java
+++ b/xml-inflater/src/main/java/com/itsaky/inflater/values/ValuesTableFactory.java
@@ -43,7 +43,7 @@ public class ValuesTableFactory {
* @param resDirs The resource directories.
*/
public static void setupWithResDirectories (File... resDirs) {
-
+
if (resDirs == null || resDirs.length <= 0) {
LOG.error ("Cannot create value tables. No directories were specified.");
return;