Commit Graph

30 Commits

Author SHA1 Message Date
Sarah Gerweck
fb2dac9b3f Code to make an Observable from a Future 2016-04-18 20:18:45 -07:00
Sarah Gerweck
b26e2cecc0 Add ReadOnlyObjectProperty instances for 0.7.0 2016-04-18 01:12:39 -07:00
Sarah Gerweck
6956bd05da Add operations to flatten arrays, lists and sets
This makes it really convenient to take a data structure like a
`ObservableBuffer`, which normally has special operations to watch for
different CRUD operations on its individual members, and treat the whole
thing as a solid value. This lets you turn it into an `ObservableValue`
where you get a notice of changes and then you can use the normal
operations like `map` and `flatMap` to react to changes.

Because this requires reprocessing the entirety of the contained values,
this may not perform as well as if you subscribe to more granular update
messages.

It is possible to round-trip these collections back to the ScalaFX
native collections using the other utilities available. This will be
required if you want to use the output to back something like a table.
2016-04-16 20:42:37 -07:00
Sarah Gerweck
d9ffc45d69 Slight performance & correctness improvement 2016-04-16 17:21:04 -07:00
Sarah Gerweck
05d4a4f8aa Remove deprecated view-bound syntax 2015-10-05 11:39:54 -07:00
Sarah Gerweck
b366a810f7 ScalaFX App wrapper 2015-09-15 01:33:05 -07:00
Sarah Gerweck
907c83da52 Remove erroneous copyright notice 2015-08-15 16:30:56 -07:00
Sarah Gerweck
6d37cc4373 More support for observing collections 2015-08-15 03:48:14 -07:00
Sarah Gerweck
4bc515b73f Finalize classes 2015-08-15 02:18:37 -07:00
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