rst / positronic_net Goto Github PK
View Code? Open in Web Editor NEWAndroid programming in Scala, with less boilerplate. Better brains for your droids!
License: BSD 3-Clause "New" or "Revised" License
Android programming in Scala, with less boilerplate. Better brains for your droids!
License: BSD 3-Clause "New" or "Revised" License
Hi,
I am not really sure if this is from my set up or something else. I tried to upgrade to scala 2.9.1 by using ant. When I run it, I get this error:
[scalac] java.lang.Error: T in class PropertyLens cannot be instantiated from org.positronicnet.util.PropertyLens[TData,TProp]
[scalac] at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:34)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.throwError$1(Types.scala:3489)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.instParam$1(Types.scala:3492)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.toInstance$1(Types.scala:3504)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3520)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3389)
[scalac] at scala.tools.nsc.symtab.Types$TypeMap$$anonfun$mapOverArgs$1.apply(Types.scala:3211)
[scalac] at scala.tools.nsc.symtab.Types$TypeMap$$anonfun$mapOverArgs$1.apply(Types.scala:3207)
[scalac] at scala.tools.nsc.symtab.Types$class.map2Conserve(Types.scala:4980)
[scalac] at scala.tools.nsc.symtab.SymbolTable.map2Conserve(SymbolTable.scala:13)
[scalac] at scala.tools.nsc.symtab.Types$TypeMap.mapOverArgs(Types.scala:3207)
[scalac] at scala.tools.nsc.symtab.Types$TypeMap.mapOver(Types.scala:3114)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3522)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3389)
[scalac] at scala.tools.nsc.symtab.Types$TypeMap.mapOver(Types.scala:3130)
[scalac] at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3522)
[scalac] at scala.tools.nsc.symtab.Types$Type.asSeenFrom(Types.scala:546)
[scalac] at scala.tools.nsc.symtab.Types$Type.computeMemberType(Types.scala:575)
[scalac] at scala.tools.nsc.symtab.Symbols$MethodSymbol.typeAsMemberOf(Symbols.scala:1853)
[scalac] at scala.tools.nsc.symtab.Types$Type.memberType(Types.scala:566)
[scalac] at scala.tools.nsc.symtab.Types$SingleType.underlying(Types.scala:1163)
[scalac] at scala.tools.nsc.symtab.Types$SingletonType.widen(Types.scala:1045)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:489)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:837)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:521)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
[scalac] at scala.collection.immutable.List.loop$1(List.scala:117)
[scalac] at scala.collection.immutable.List.mapConserve(List.scala:133)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transformTrees(Trees.scala:873)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:837)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:521)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:799)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:521)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:783)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:781)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:780)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:480)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:891)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:889)
[scalac] at scala.collection.immutable.List.loop$1(List.scala:117)
[scalac] at scala.collection.immutable.List.mapConserve(List.scala:133)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:889)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:797)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:49)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:49)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:49)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:49)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:460)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:875)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:767)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:766)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:765)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:521)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:891)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:889)
[scalac] at scala.collection.immutable.List.loop$1(List.scala:117)
[scalac] at scala.collection.immutable.List.mapConserve(List.scala:133)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:889)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:761)
[scalac] at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:761)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:760)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:49)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:51)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:51)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
[scalac] at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:257)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:521)
[scalac] at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:892)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.scala$tools$nsc$transform$ExplicitOuter$ExplicitOuterTransformer$$super$transformUnit(ExplicitOuter.scala:529)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:529)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:529)
[scalac] at scala.tools.nsc.symtab.SymbolTable.atPhase(SymbolTable.scala:95)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transformUnit(ExplicitOuter.scala:529)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transformUnit(ExplicitOuter.scala:318)
[scalac] at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
[scalac] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:329)
[scalac] at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:297)
[scalac] at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:297)
[scalac] at scala.collection.Iterator$class.foreach(Iterator.scala:660)
[scalac] at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:316)
[scalac] at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:297)
[scalac] at scala.tools.nsc.transform.ExplicitOuter$Phase.run(ExplicitOuter.scala:539)
[scalac] at scala.tools.nsc.Global$Run.compileSources(Global.scala:953)
[scalac] at scala.tools.nsc.Global$Run.compile(Global.scala:1038)
[scalac] at scala.tools.ant.Scalac.executeInternal(Scalac.scala:629)
[scalac] at scala.tools.ant.Scalac.execute(Scalac.scala:577)
[scalac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[scalac] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[scalac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[scalac] at java.lang.reflect.Method.invoke(Method.java:597)
[scalac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scalac] at org.apache.tools.ant.Task.perform(Task.java:348)
[scalac] at org.apache.tools.ant.Target.execute(Target.java:390)
[scalac] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[scalac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[scalac] at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[scalac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[scalac] at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[scalac] at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[scalac] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424)
[scalac] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)
I am not sure if it is my setup because now I tried to generate your project jar file for 2.9.1 it gives me and error on sbt publish-local saying
target/src_managed/main/scala/org/positronicnet/libresources/TR.scala:3: object android is not a member of package
[error] import root.android.view.View
So it is a double whammy for me. Thank you for your help or suggestion.
The following code:
class MyActivity extends PositronicActivity with TypedActivity {
onCreate {
findView(TR.button_id).onClick {}
}
}
causes Eclipse to complain, since an android.widget.Button
is returned by findView()
, rather than a PositronicButton
. Some implicit conversions would probably help, or I may be doing something wrong.
Thanks for a great project!
Hi,
I was not able to compile the sample as is with the project code. So I just moved the code into my project which has the setup. However, I get this weird and (I hope it is appropriate to say) hairy issue with byte code and delvik dec again.
01-07 11:58:32.413: D/dalvikvm(652): GC_CONCURRENT freed 249K, 4% free 10172K/10503K, paused 5ms+9ms
01-07 11:58:32.453: W/dalvikvm(652): VFY: unable to resolve static field 8417 (MODULE$) in Lscala/collection/mutable/HashMap$;
01-07 11:58:32.483: D/dalvikvm(652): VFY: replacing opcode 0x62 at 0x0000
01-07 11:58:32.483: W/dalvikvm(652): Unable to resolve superclass of Lorg/positronicnet/orm/Scope$$anonfun$count$1; (4190)
01-07 11:58:32.493: W/dalvikvm(652): Link of class 'Lorg/positronicnet/orm/Scope$$anonfun$count$1;' failed
01-07 11:58:32.493: E/dalvikvm(652): Could not find class 'org.positronicnet.orm.Scope$$anonfun$count$1', referenced from method org.positronicnet.orm.Scope$class.count
01-07 11:58:32.493: W/dalvikvm(652): VFY: unable to resolve new-instance 2324 (Lorg/positronicnet/orm/Scope$$anonfun$count$1;) in Lorg/positronicnet/orm/Scope$class;
01-07 11:58:32.503: D/dalvikvm(652): VFY: replacing opcode 0x22 at 0x0000
01-07 11:58:32.553: W/dalvikvm(652): Unable to resolve superclass of Lorg/positronicnet/orm/Scope$$anonfun$count$1; (4190)
01-07 11:58:32.553: W/dalvikvm(652): Link of class 'Lorg/positronicnet/orm/Scope$$anonfun$count$1;' failed
01-07 11:58:32.553: D/dalvikvm(652): DexOpt: unable to opt direct call 0x4290 at 0x02 in Lorg/positronicnet/orm/Scope$class;.count
01-07 11:58:32.553: W/dalvikvm(652): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/shopme/activity/TodoItem$;
01-07 11:58:32.563: D/AndroidRuntime(652): Shutting down VM
01-07 11:58:32.563: W/dalvikvm(652): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
01-07 11:58:32.643: E/AndroidRuntime(652): FATAL EXCEPTION: main
01-07 11:58:32.643: E/AndroidRuntime(652): java.lang.ExceptionInInitializerError
01-07 11:58:32.643: E/AndroidRuntime(652): at com.myapp.activity.TodoItemsActivity$$anonfun$1.apply$mcV$sp(TodoItemsActivity.scala:55)
01-07 11:58:32.643: E/AndroidRuntime(652): at org.positronicnet.ui.PositronicActivityHelpers$Handlers$$anonfun$runAll$1.apply(PositronicActivityHelpers.scala:89)
01-07 11:58:32.643: E/AndroidRuntime(652): at org.positronicnet.ui.PositronicActivityHelpers$Handlers$$anonfun$runAll$1.apply(PositronicActivityHelpers.scala:89)
01-07 11:58:32.643: E/AndroidRuntime(652): at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
01-07 11:58:32.643: E/AndroidRuntime(652): at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
01-07 11:58:32.643: E/AndroidRuntime(652): at org.positronicnet.ui.PositronicActivityHelpers$Handlers.runAll(PositronicActivityHelpers.scala:89)
01-07 11:58:32.643: E/AndroidRuntime(652): at org.positronicnet.ui.PositronicActivityHelpers$class.onCreate(PositronicActivityHelpers.scala:109)
01-07 11:58:32.643: E/AndroidRuntime(652): at com.myapp.activity.TodoItemsActivity.onCreate(TodoItemsActivity.scala:47)
01-07 11:58:32.643: E/AndroidRuntime(652): at org.positronicnet.ui.PositronicActivityHelpers$class.onCreate(PositronicActivityHelpers.scala:101)
01-07 11:58:32.643: E/AndroidRuntime(652): at com.myapp.activity.TodoItemsActivity.onCreate(TodoItemsActivity.scala:47)
01-07 11:58:32.643: E/AndroidRuntime(652): at android.app.Activity.performCreate(Activity.java:4465)
I am not sure if there is any way to get around this? Thank you for your help.
Watt P.
Hi,
Thank you for putting the code out. I am trying out your lib by compiling it against 2.8.2. And this is the error I get.
[error] /Volumes/space/Projects/Java/positronic_net/src/main/scala/ui/ResourceId.scala:27: value reduce is not a member of Array[String]
[error] /Volumes/space/Projects/Java/positronic_net/src/main/scala/ui/ResourceId.scala:27: value reduce is not a member of Array[String]
[error] components.slice(0, numComponents).reduce(_ + "." + )
[error] components.slice(0, numComponents).reduce( + "." + _)
I looked at the source and tried to change that to map but still didn't get it to work. It is just one place that is failing. So I hope you would make the change to support the 2.8.2 code. Thanks for your help.
Watt P.
Hi, thanks for your work. I experimented with you code a while back and I quite like it. And it looks like the code has not been updated for a while. Would you plan to by any chance? Or if this is already abandoned. Thanks again for your help and work.
The current QueueRunnerThread implementation returns a handler to the future upon creation.
However, this handler is not being passed an instance of the HandlerThread's looper!
The looper is only available once HandlerThread.onLooperPrepared has been called.
class QueueRunnerThread
extends HandlerThread( this.toString )
{
override def onLooperPrepared() = {
threadHandlerFut.succeed( new Handler(getLooper()) )
}
}
Add a section to the README with a line I can copy and paste into my sbt project.scala, maybe just below the mention of the installation instructions link.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.