Last active
January 27, 2020 13:22
-
-
Save tonsky/bca64aeb0c0e79151c39dd0e5a508d22 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.onair | |
import android.os.Bundle | |
import androidx.appcompat.app.AppCompatActivity | |
import androidx.compose.* | |
import androidx.ui.core.Text | |
import androidx.ui.core.dp | |
import androidx.ui.core.setContent | |
import androidx.ui.foundation.Clickable | |
import androidx.ui.foundation.ColoredRect | |
import androidx.ui.foundation.DrawImage | |
import androidx.ui.foundation.VerticalScroller | |
import androidx.ui.foundation.shape.RectangleShape | |
import androidx.ui.graphics.Color | |
import androidx.ui.layout.* | |
import androidx.ui.material.Button | |
import androidx.ui.material.MaterialTheme | |
import androidx.ui.res.imageResource | |
import androidx.ui.text.TextStyle | |
import androidx.ui.tooling.preview.Preview | |
class MainActivity : AppCompatActivity() { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContent { | |
DefaultPreview() | |
} | |
} | |
} | |
@Composable | |
fun Line(s: String) { | |
val lastSlash = s.lastIndexOf('/') | |
val path = s.substring(0, lastSlash) | |
val name = s.substring(lastSlash + 1, s.length) | |
Padding(padding = 2.dp) { | |
Row { | |
ColoredRect(color = Color.DarkGray, width = 16.dp, height = 16.dp) | |
WidthSpacer(width = 10.dp) | |
Text(text = name, softWrap = false) | |
WidthSpacer(width = 10.dp) | |
Text(text = path, softWrap = false, style = TextStyle(color = Color.Gray)) | |
} | |
} | |
} | |
@Preview | |
@Composable | |
fun DefaultPreview() { | |
val lines = +state { paths } | |
MaterialTheme { | |
Column { | |
Padding(padding = 5.dp) { | |
Row { | |
Clickable(onClick = { lines.value = paths.shuffled() }) { Text(text = "Shuffle") } | |
WidthSpacer(width = 10.dp) | |
} | |
} | |
VerticalScroller { | |
Column { | |
val t0 = System.nanoTime() | |
lines.value.forEach { | |
Line(it) | |
} | |
println(">>> Recompose lines took ${(System.nanoTime() - t0) / 1000000.0}ms") | |
} | |
} | |
} | |
} | |
} | |
val paths = listOf<String>("./deps.edn", | |
"./target/classes/onair/frontend/indent/Indent.class", | |
"./target/classes/onair/frontend/indent/Indenter.class", | |
"./target/classes/onair/frontend/strings/FixingLayoutTypoTolerantMatcher.class", | |
"./target/classes/onair/frontend/strings/FList.class", | |
"./target/classes/onair/frontend/strings/CharArrayCharSequence.class", | |
"./target/classes/onair/frontend/strings/NameUtil\$Matcher.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$Error.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher.class", | |
"./target/classes/onair/frontend/strings/NameUtil.class", | |
"./target/classes/onair/frontend/strings/CharSequenceWithStringHash.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$Fragment.class", | |
"./target/classes/onair/frontend/strings/MatcherWithFallback.class", | |
"./target/classes/onair/frontend/strings/NameUtilCore.class", | |
"./target/classes/onair/frontend/strings/NameUtil\$MatcherBuilder.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$ErrorState.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$Range.class", | |
"./target/classes/onair/frontend/strings/StringSearcher.class", | |
"./target/classes/onair/frontend/strings/MinusculeMatcherImpl.class", | |
"./target/classes/onair/frontend/strings/Segment.class", | |
"./target/classes/onair/frontend/strings/MinusculeMatcher.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$MissError.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$TypoError.class", | |
"./target/classes/onair/frontend/strings/CharSequenceBackedByArray.class", | |
"./target/classes/onair/frontend/strings/StringUtil$2.class", | |
"./target/classes/onair/frontend/strings/TextRange.class", | |
"./target/classes/onair/frontend/strings/Matcher.class", | |
"./target/classes/onair/frontend/strings/CharArrayUtil.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$SwapError.class", | |
"./target/classes/onair/frontend/strings/FixingLayoutMatcher.class", | |
"./target/classes/onair/frontend/strings/StringUtil$1.class", | |
"./target/classes/onair/frontend/strings/StringUtil\$BombedCharSequence.class", | |
"./target/classes/onair/frontend/strings/TypoTolerantMatcher\$Session.class", | |
"./target/classes/onair/frontend/strings/FList$1.class", | |
"./target/classes/onair/frontend/strings/StringUtilRt.class", | |
"./target/classes/onair/frontend/strings/NameUtil\$MatchingCaseSensitivity.class", | |
"./target/classes/onair/frontend/strings/ProcessCanceledException.class", | |
"./target/classes/onair/frontend/strings/StringUtil.class", | |
"./target/classes/onair/frontend/ast/ASTContainer\$Job.class", | |
"./target/classes/onair/frontend/ast/Future.class", | |
"./target/classes/onair/frontend/ast/ASTContainer.class", | |
"./target/classes/onair/frontend/ast/ParserPool.class", | |
"./target/classes/onair/frontend/ast/JSitterText.class", | |
"./target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst", | |
"./target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst", | |
"./target/maven-archiver/pom.properties", | |
"./target/frontend-0.1-SNAPSHOT.jar", | |
"./resources/.DS_Store", | |
"./resources/icons/directory-closed.svg", | |
"./resources/icons/directory-open.svg", | |
"./resources/Fira Code/variable_ttf/FiraCode-VF.ttf", | |
"./resources/Fira Code/ttf/FiraCode-Medium.ttf", | |
"./resources/Fira Code/ttf/FiraCode-Regular.ttf", | |
"./resources/Fira Code/ttf/FiraCode-Retina.ttf", | |
"./resources/Fira Code/ttf/FiraCode-Bold.ttf", | |
"./resources/Fira Code/ttf/FiraCode-Light.ttf", | |
"./pom.xml", | |
"./.gitignore", | |
"./frontend.iml", | |
"./.cpcache/927574275.libs", | |
"./.cpcache/927574275.cp", | |
"./src/test/clj/onair/bench/fixtures.clj", | |
"./src/test/clj/onair/tests/fsd.clj", | |
"./src/test/clj/onair/tests/kernel.clj", | |
"./src/main/java/onair/frontend/indent/Indent.java", | |
"./src/main/java/onair/frontend/indent/Indenter.java", | |
"./src/main/java/onair/frontend/strings/TextRange.java", | |
"./src/main/java/onair/frontend/strings/Matcher.java", | |
"./src/main/java/onair/frontend/strings/ProcessCanceledException.java", | |
"./src/main/java/onair/frontend/strings/TypoTolerantMatcher.java", | |
"./src/main/java/onair/frontend/strings/NameUtilCore.java", | |
"./src/main/java/onair/frontend/strings/CharArrayCharSequence.java", | |
"./src/main/java/onair/frontend/strings/Segment.java", | |
"./src/main/java/onair/frontend/strings/FixingLayoutTypoTolerantMatcher.java", | |
"./src/main/java/onair/frontend/strings/FixingLayoutMatcher.java", | |
"./src/main/java/onair/frontend/strings/CharSequenceBackedByArray.java", | |
"./src/main/java/onair/frontend/strings/StringUtil.java", | |
"./src/main/java/onair/frontend/strings/CharArrayUtil.java", | |
"./src/main/java/onair/frontend/strings/StringSearcher.java", | |
"./src/main/java/onair/frontend/strings/MinusculeMatcher.java", | |
"./src/main/java/onair/frontend/strings/CharSequenceWithStringHash.java", | |
"./src/main/java/onair/frontend/strings/FList.java", | |
"./src/main/java/onair/frontend/strings/NameUtil.java", | |
"./src/main/java/onair/frontend/strings/MinusculeMatcherImpl.java", | |
"./src/main/java/onair/frontend/strings/MatcherWithFallback.java", | |
"./src/main/java/onair/frontend/strings/StringUtilRt.java", | |
"./src/main/java/onair/frontend/ast/Future.java", | |
"./src/main/java/onair/frontend/ast/JSitterText.java", | |
"./src/main/java/onair/frontend/ast/ASTContainer.java", | |
"./src/main/java/onair/frontend/ast/ParserPool.java", | |
"./src/main/clj/onair/frontend/editors.clj", | |
"./src/main/clj/onair/frontend/layout.clj", | |
"./src/main/clj/onair/frontend/ui/tree.clj", | |
"./src/main/clj/onair/frontend/ui/render.clj", | |
"./src/main/clj/onair/frontend/ui/core.clj", | |
"./src/main/clj/onair/frontend/ui/navigation.clj", | |
"./src/main/clj/onair/frontend/ui/keyboard.clj", | |
"./src/main/clj/onair/frontend/ui/list.clj", | |
"./src/main/clj/onair/frontend/poly.clj", | |
"./src/main/clj/onair/frontend/file_tree.clj", | |
"./src/main/clj/onair/frontend/blob.clj", | |
"./src/main/clj/onair/frontend/reducers.clj", | |
"./src/main/clj/onair/frontend/db.clj", | |
"./src/main/clj/onair/frontend/workspace.clj", | |
"./src/main/clj/onair/frontend/patterns.clj", | |
"./src/main/clj/onair/frontend/interop.clj", | |
"./src/main/clj/onair/frontend/tags.clj", | |
"./src/main/clj/onair/frontend/fsd.clj", | |
"./src/main/clj/onair/frontend/layout/window.clj", | |
"./src/main/clj/onair/frontend/layout/buffer.clj", | |
"./src/main/clj/onair/frontend/layout/stack.clj", | |
"./src/main/clj/onair/frontend/layout/sidebar.clj", | |
"./src/main/clj/onair/frontend/layout/core.clj", | |
"./src/main/clj/onair/frontend/layout/layout-actions.edn", | |
"./src/main/clj/onair/frontend/utils.cljc", | |
"./src/main/clj/onair/frontend/spec/layout.clj", | |
"./src/main/clj/onair/frontend/spec/db.clj", | |
"./src/main/clj/onair/frontend/spec/patterns.clj", | |
"./src/main/clj/onair/frontend/spec/tags.clj", | |
"./src/main/clj/onair/frontend/spec/transition.clj", | |
"./src/main/clj/onair/frontend/spec/core.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/text_search.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/blob.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/workspace.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/fsd.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/tx.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/core.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/document.clj", | |
"./src/main/clj/onair/frontend/spec/protocol/snapshot.clj", | |
"./src/main/clj/onair/frontend/spec/document.clj", | |
"./src/main/clj/onair/frontend/spec/keymap.clj", | |
"./src/main/clj/onair/frontend/spec/triggers.clj", | |
"./src/main/clj/onair/frontend/spec/plugin.clj", | |
"./src/main/clj/onair/frontend/navigation/navigation-actions.edn", | |
"./src/main/clj/onair/frontend/navigation/global_text_search.clj", | |
"./src/main/clj/onair/frontend/navigation/core.clj", | |
"./src/main/clj/onair/frontend/navigation/README", | |
"./src/main/clj/onair/frontend/navigation/palette.clj", | |
"./src/main/clj/onair/frontend/navigation/goto_file.clj", | |
"./src/main/clj/onair/frontend/core.clj", | |
"./src/main/clj/onair/frontend/ot.clj", | |
"./src/main/clj/onair/frontend/kernel.clj", | |
"./src/main/clj/onair/frontend/extensions.clj", | |
"./src/main/clj/onair/frontend/reload.clj", | |
"./src/main/clj/onair/frontend/README", | |
"./src/main/clj/onair/frontend/lang.clj", | |
"./src/main/clj/onair/frontend/document.clj", | |
"./src/main/clj/onair/frontend/actions.clj", | |
"./src/main/clj/onair/frontend/themes.clj", | |
"./src/main/clj/onair/frontend/main.clj", | |
"./src/main/clj/onair/frontend/rentity.clj", | |
"./src/main/clj/onair/frontend/keymap.clj", | |
"./src/main/clj/onair/frontend/triggers.clj", | |
"./src/main/clj/onair/frontend/snapshot.clj", | |
"./src/main/clj/onair/frontend/user.clj", | |
"./src/main/clj/onair/frontend/plugins.clj", | |
"./src/main/clj/onair/frontend/editor/text_search.clj", | |
"./src/main/clj/onair/frontend/editor/view.clj", | |
"./src/main/clj/onair/frontend/editor/highlighting.clj", | |
"./src/main/clj/onair/frontend/editor/render.clj", | |
"./src/main/clj/onair/frontend/editor/core.clj", | |
"./src/main/clj/onair/frontend/editor/controller.clj", | |
"./src/main/clj/onair/frontend/editor/instructions.clj", | |
"./src/main/clj/onair/frontend/editor/editor-actions.edn", | |
"./src/main/clj/onair/frontend/editor/composite.clj") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment