Commit Graph

21 Commits

Author SHA1 Message Date
Sarah Gerweck
777f6bda28 Add conversion to ObservableBuffer 2015-08-15 02:09:45 -07:00
Sarah Gerweck
f1044d2b5a Clean up unneeded imports 2015-08-12 18:29:32 -07:00
Sarah Gerweck
13e841d613 Synchronize the change handlers
I'm pretty confident that this isn't actually required by the JavaFX
threading model, but it makes the code more obviously correct and
uncontended synchronization has a negligible cost when we're talking
about UI-level changes.
2015-08-11 11:10:23 -07:00
Sarah Gerweck
3f30eb32c2 Fix Observable.map to suppress nil changes
If the new output is equal to the old output, we'll suppress the change
message altogether, so as not to do unnecessary recalculations.

E.g., imagine you have a property `isOdd`. If you go from 27 to 319,
there's no need to trigger all the downstream objects to recalculate.
(Most of the other functional primitives I've created already have this
behavior.)
2015-08-10 19:05:54 -07:00
Sarah Gerweck
8166b9be3f Improved return type 2015-08-10 04:49:42 -07:00
Sarah Gerweck
f769fffeb2 Make Observable an instance of Monad
This is not yet tested, and it requires a lot of testing. A previous
helper that attempted to support `bind` never quite worked correctly,
but I believe that the new approach of implementing `join` and `map`
instead of `bind` makes the code more resilient.

Even though `map` and `ap` can be derived from `point` and `bind`, I'm
keeping both of them, as `bind` requires quite a bit of subscription
manipulation. Those methods have much simpler implementations.
2015-08-09 22:51:11 -07:00
Sarah Gerweck
914e168771 Fix a bug in the ap function
This could prevent it from updating values if you returned to
the original value. E.g., if your values went 1, 2, 1, 2, you'd
get notifications for 1, 2, 2. This would also cause some extra
notifications to go when the logical value didn't actually change.
2015-08-09 22:41:01 -07:00
Sarah Gerweck
8e7a5a35a6 Simple withKey to bind a keyboard shortcut 2015-08-08 21:21:15 -07:00
Sarah Gerweck
6c2b73f4d6 Remove not-so-useful observe2 method. 2015-05-04 11:48:28 -07:00
Sarah Gerweck
fa7419d101 Base version of observe method on tuples.
This commit also includes an `observe2`, which operates directly on a
tuple without explicitly converting to an HList. I'm committing it for
posterity, but the next commit will remove it because it doesn't give a
narrow enough output type.
2015-05-04 11:44:46 -07:00
Sarah Gerweck
852fd5138e Remove old methods. 2015-05-01 19:51:39 -07:00
Sarah Gerweck
23212dfde8 WIP of tupler update. 2015-05-01 19:30:09 -07:00
Sarah Gerweck
dc8949d54c Much progress on observables.
Still some work to do on making the syntax work how we want.
2015-04-16 23:51:58 -07:00
Sarah Gerweck
c689dd3d3e WIP of tupling. 2015-04-16 13:24:21 -07:00
Sarah Gerweck
da718d713c Observable is a functor. 2015-04-16 00:38:58 -07:00
Sarah Gerweck
30ae4d8157 Better return type. 2015-04-15 23:56:43 -07:00
Sarah Gerweck
a6a1b220d8 This project is not property of AtScale. 2015-04-15 23:52:32 -07:00
Sarah Gerweck
2e002336b4 Introduce new SimpleProperty alias. 2015-04-15 21:05:38 -07:00
Sarah Gerweck
a9f4085786 Minor cleanup. 2015-04-15 21:05:22 -07:00
Sarah Gerweck
c74c748a44 Add some new magic object builders. 2015-04-15 00:03:35 -07:00
Sarah Gerweck
319652b052 Basic Scalaz applicative for ScalaFX Observables. 2015-04-14 23:30:39 -07:00