61 Commits

Author SHA1 Message Date
Ian Fischer
1799eacef5 Decouple Canvas from DisplayList and map Picture and PictureRecorder more directly to their Skia counterparts.
Also changes the framework dart code to use the
refactored APIs and fixes the various examples and
tests.

R=abarth@chromium.org, ianh@chromium.org

Review URL: https://codereview.chromium.org/1190123003.
2015-06-24 10:21:45 -07:00
Collin Jackson
ad4757b747 Add a confirmation dialog to stock app Settings page and style it by default
R=ianh@google.com, abarth, hixie

Review URL: https://codereview.chromium.org/1201273002.
2015-06-23 14:19:00 -07:00
Collin Jackson
2b73e7288b Teach Sky buttons and dialogs how to use the new Theme system
R=eseidel@chromium.org, eseidel

Review URL: https://codereview.chromium.org/1192773004.
2015-06-23 10:12:58 -07:00
Collin Jackson
5ab01574f4 Add Material light and dark themes to Sky widgets
R=ianh@google.com, hixie

Review URL: https://codereview.chromium.org/1204523002.
2015-06-22 17:14:27 -07:00
Collin Jackson
884b4e36dc Add a new Theme widget to control color and text color of apps
R=abarth@chromium.org, abarth, hixie

Review URL: https://codereview.chromium.org/1194743003.
2015-06-22 12:10:30 -07:00
Adam Barth
8f20fb6e9a Improve stocks2 performance
We're now 25% faster as scrolling the infinite list than stocks1.

This CL makes cleans up some code to avoid calling layout on all the rows in
the stocks list. Instead, we only layout a row when it first enters the list.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1195113002.
2015-06-19 15:44:37 -07:00
Adam Barth
1cf8b949ec Start fleshing out the rendering/README.md
Also, give some more visual structure to the dependency declarations.

TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1189343002.
2015-06-18 23:28:52 -07:00
Adam Barth
241cf09f4b Describe didMount and didUnmount in widgets/README.md
TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1189313002.
2015-06-18 22:20:24 -07:00
Collin Jackson
ff1bbd35c5 Widgets should be stateful in order to call setState
R=abarth@chromium.org, abarth

Review URL: https://codereview.chromium.org/1183143012.
2015-06-18 16:36:08 -07:00
Hixie
eb09095bd4 Zero warnings from the analyzer!
Ok, not really zero. Actually 72 if you include warnings from non-sky packages and if you include bogus warnings that can be filtered out.

If you pipe the analyzer's output through the following perl script, though, you get zero warnings on the stock app with this patch:

while (defined($_ = <STDIN>)) {
    s|out/android_Debug/gen/dart-pkg/sky/|sky/sdk/|gos;
    next if m|/dart-pkg/|os; # other packages
    next if m|^\[warning] Missing concrete implementation of 'RenderObject.toString'|os; # https://github.com/dart-lang/sdk/issues/23606
    print;
}

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1182323009.
2015-06-18 16:11:29 -07:00
Collin Jackson
d44f8f2dbc Make back button control drawer in stocks app
Currently you lose your scroll and drawer state when coming back from the settings pane.
I think we should solve this by having the Navigator maintain a Stack and
keeping the StockHome alive underneath it. But this is good enough for a first iteration.

R=abarth@chromium.org, abarth

Review URL: https://codereview.chromium.org/1191153002.
2015-06-18 15:36:04 -07:00
Hans Muller
2b126efbc8 StyledText is just a convenient way to specify a
tree of InlineStyle and InlineText elements.
StyledText builds an Inline that renders the tree.

For example this StyledText object:

  new StyledText(["FOO", [boldLargerStyle, [greenStyle "BAR"], "BAZ"] BORF]);

Renders the same way the following HTML would,
assuming that TextStyles boldLargerStyle and
greenStyle were defined.

<style>
div {
  display: inline;
}
</style>
<p>
  <div>
    FOO
    <div style="font-weight:bold; font-size:larger">
      <div style="color:green">
        BAR
      </div>
      BAZ
    </div>
    BORF
  </div>
</p>

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1194693002.
2015-06-18 14:35:11 -07:00
Hixie
ee4a7bc925 Rename editing2/ and theme2/ to editing/ and theme/.
Flesh out a README.md file for the SDK.
Make the stocks app test wait for the app to be mounted, to catch some more errors, like typos in the mount callback.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1182053012.
2015-06-18 12:44:10 -07:00
Hixie
8c7e53bce4 Fix the App code to use the new names for AppView.
TBR=abarth

Review URL: https://codereview.chromium.org/1186813009.
2015-06-18 10:48:23 -07:00
Adam Barth
7c4662ce2c Re-wire up the back button
I broke this when I merged my AppContainer patch with Collin's back button
patch. This change restores the functionality I broke.

TBR=jackson@chromium.org

Review URL: https://codereview.chromium.org/1182463007.
2015-06-18 09:25:24 -07:00
Adam Barth
2945a27687 Update README.md
Fix syntax errors and add more |const|.
2015-06-18 00:14:13 -07:00
Adam Barth
299186d7f8 Update README.md
Add the new runApp function.
2015-06-18 00:08:46 -07:00
Adam Barth
18ee9f5b65 Add sections on State and Keys to the widget's README.md
TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1185933003.
2015-06-17 23:38:15 -07:00
Hixie
3110059915 Cleanup of SkyBinding, and resultant yak shaving.
Some files are moved by this:
  Copy framework/node.dart into types/ - preparing for framework/'s decomissioning.
  Move app/scheduler.dart into sky/scheduler.dart - "app" doesn't really make sense.

As part of the SkyBinding cleanup, I made the hit-testing less
RenderBox-specific, by having the HitTestEntry.target member be a
HitTestTarget, which is an interface with the handleEvent() function,
which is then implemented by RenderBox. In theory, someone could now
extend hit testing from the RenderBox world into their own tree of
nodes, and take part in all the same dispatch logic automatically.

This involved moving all the hit testing type definitions into a new
sky/hittest.dart file.

Renamed SkyBinding._app to SkyBinding._instance for clarity.

Moved code around in SkyBinding so that related things are together.

Made WidgetSkyBinding use the existing SkyBinding.instance singleton
logic rather than having its own copy.

I also added some stub README.md files that describe dependencies.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1187393002.
2015-06-17 19:54:11 -07:00
Hixie
c6f0b8447d Fork some more files from the old framework, so that the transition will be easier to perform.
Summary:
  framework/animation/* -> animation/*
  framework/debug/utils.dart -> debug/utils.dart
  framework/shell.dart -> mojo/shell.dart
  framework/embedder.dart -> mojo/embedder.dart
  framework/net/* -> mojo/net/*

This should have no code changes except fixing and reordering imports.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1189943004.
2015-06-17 19:09:28 -07:00
Hixie
ff705fa119 Fix tests by fixing a typo in Text due to one of my recent checkins.
TBR=abarth

Review URL: https://codereview.chromium.org/1191793004.
2015-06-17 17:59:56 -07:00
Hixie
93218fdb14 Introduce a LeafRenderObjectWrapper abstract class so that RenderObjectWrappers that are leaves don't have to all redundantly assert that they're not misused.
Also, make images use their URL as their src.

Other misc code cleanup.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1191443009.
2015-06-17 17:08:05 -07:00
Hixie
0038e78ed6 Rename AppView to SkyBinding.
Move app/view.dart to rendering/sky_binding.dart since it's part of the RenderObject API, really (it knows about RenderView intimately).
The tests pass. I didn't check every last example.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1183913006.
2015-06-17 17:07:31 -07:00
Adam Barth
0e493b017f Implement ColorFilter in widgets/basic.dart
Also, trim the redundant |Mode| suffix from the TransferMode names.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1188003006.
2015-06-17 17:06:27 -07:00
Adam Barth
774d114c7e Use semantic names for callbacks instead of onGestureTap
Buttons and menu items use onPressed. Also, don't pass along the sky.Event
because that's a lower-level concept.

I've also reordered parameter lists to put the |child| argument last in a
number of places.

Also, fixed a bug where FloatingActionButton was missing syncFields.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1188993003.
2015-06-17 16:04:13 -07:00
Hixie
1ab539735f Rename insert() to insertChildRoot() so it's consistent with detachChildRoot().
TBR=abarth

Review URL: https://codereview.chromium.org/1187023005.
2015-06-17 16:00:14 -07:00
Hixie
fa88ab16f3 Rename 'content' to 'child' in widget.dart internals, for consistency with everything else.
Doesn't affect any APIs.

TBR=abarth

Review URL: https://codereview.chromium.org/1184823007.
2015-06-17 15:53:59 -07:00
Hans Muller
33d72366a2 Add TextStyle fontFamily:, extend support for fontWeight:
Defined constants for all 9 CSS font-weight values
with conventional names from the "Common weight
name mapping" section of
https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.

The FontWeight enum now just enumerates the actual
CSS weight values.

I've moved the TextStyle class into its own file.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1173323004.
2015-06-17 15:48:21 -07:00
Hixie
a4196226d2 Fix the sector demo.
Turns out it's ok to not detach all the RenderObjects from the widget
tree from each other, since they're not reused... but the
WidgetToRenderBoxAdapter's renderBox _is_ reused, so we better detach
that one.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1191053002.
2015-06-17 15:37:39 -07:00
Hixie
471a7f241c Make the popup menu work again.
This removes the requirement that things with the same type things have unique keys.
Now, anything without a key is assumed to be interchangeable.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1178723010.
2015-06-17 15:10:42 -07:00
Hixie
0d778940d7 Remove spurious print that was causing test failures.
TBR=abarth

Review URL: https://codereview.chromium.org/1191973003.
2015-06-17 15:02:15 -07:00
Hixie
8bd7781755 Clean up how we remove nodes from the render tree, and make sure we reinsert them in the right place.
Fixes weird behaviours when the old and new children of TagNodes can't be synced.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1182463006.
2015-06-17 13:56:06 -07:00
Adam Barth
a2b8ddd5c5 Settings menu item in stock2 doesn't work
The underlying problem is that we lacked a RenderObjectWrapper for the
RenderView, which meant we couldn't handle changing the RenderObject that was
the root of the RenderView. This CL introduces a RenderViewWrapper and uses it
in a new AppContainer widget root. This change allows us to make App a
non-magical Component that is inserted into the AppContainer in the newly
introduced runApp function.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1184823006.
2015-06-17 12:36:56 -07:00
Collin Jackson
bc8ab63efd Refactor Navigator to put state in separate class, initial back button plumbing
R=abarth@chromium.org, abarth

Review URL: https://codereview.chromium.org/1195493002.
2015-06-17 12:21:08 -07:00
Adam Barth
d6ddfcaf99 Improve widgets/README.md based on Hixie's feeback
R=ianh@google.com

Review URL: https://codereview.chromium.org/1188163004.
2015-06-17 10:39:47 -07:00
Hans Muller
87e47ef04a Cleaned up a few analyzer warnings
R=ianh@google.com

Review URL: https://codereview.chromium.org/1194583002.
2015-06-17 10:35:47 -07:00
Hans Muller
34c746270d Fix a typo in Dialog
If action: was specified, content: was added twice.

R=jackson@google.com

Review URL: https://codereview.chromium.org/1188303002.
2015-06-17 10:06:44 -07:00
Adam Barth
db1fb68008 Fix event propagation
I missed one rename in my Listener CL.

TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1180243003.
2015-06-17 07:49:06 -07:00
Adam Barth
f49bcdd70f Update README.md
Fixed ` vs ' typo.
2015-06-17 07:43:58 -07:00
Adam Barth
ac12505f60 Add the beginnings of a Sky Widgets README.md
There's lots more ground to cover, but this CL is a start.

TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1187173003.
2015-06-17 07:42:07 -07:00
Adam Barth
bc829ea123 Rename EventListenerNode to Listener
The basic widgets are going to be used many, many times, so we want them to
have short, snappy names.

Also, give the Widget argument to Listener the name |child| for consistency.

TBR=ianh@google.com

Review URL: https://codereview.chromium.org/1193513007.
2015-06-17 07:39:24 -07:00
Adam Barth
252291dc3a Add a basic Dialog
The dialog will need many more features to be complete, but this class is a
basic skeleton of what we'll need.

R=jackson@google.com, jackson@chromium.org

Review URL: https://codereview.chromium.org/1189893002.
2015-06-16 17:11:23 -07:00
Hixie
73d9f88384 Break some lines to make debugging easier.
TBR=abarth,jackson

Review URL: https://codereview.chromium.org/1178323004.
2015-06-16 17:08:37 -07:00
Hans Muller
61b71a6f32 Styling for text fragments
This is a completion of Eric's WIP patch:
https://codereview.chromium.org/1179663005/

Low level support for creating a paragraph that contains
runs of styled text. The styles may be nested.

The Paragraph and RenderParagraph classes have been
replaced by Inline and RenderInline. Styled text is defined
with a tree of InlineText and InlineStyle objects.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1177833012.
2015-06-16 16:48:08 -07:00
Collin Jackson
a7aa951329 Add back/forward history to navigation
R=abarth@chromium.org, abarth, hixie

Review URL: https://codereview.chromium.org/1181773006.
2015-06-16 16:14:55 -07:00
Adam Barth
5faecb46fe Add FlatButton
I've factored the common code for FlatButton and RaisedButton into
MaterialButton. Also, tweak some of the constants in MaterialButton to better
match the spec.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1187773008.
2015-06-16 12:19:33 -07:00
Hixie
b5d44546c9 Key refactor, part 1: remove the dependence on the runtimeType in keys, otherwise they'll get overly long very quickly.
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1185413002.
2015-06-16 11:31:52 -07:00
Hixie
350f16c93e Rename UINode to Widget.
Also, move a widget example from examples/raw/ to examples/widgets/

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1190793002.
2015-06-16 11:09:16 -07:00
Collin Jackson
fd396d024d Simple support for routing in Sky
R=abarth@chromium.org, abarth, hixie

Review URL: https://codereview.chromium.org/1186273002.
2015-06-16 09:47:57 -07:00
Hixie
fc5d7261ec Make PopupMenuItem take a single child instead of an implicitly-flex list of children.
TBR=abarth

Review URL: https://codereview.chromium.org/1187463013.
2015-06-16 09:41:05 -07:00