This is an automated email from the ASF dual-hosted git repository. carlosrovira pushed a commit to branch feature/vivid in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 470011f4d27204c08de08c052c86c38907896a1b Author: Carlos Rovira <carlosrov...@apache.org> AuthorDate: Fri Feb 16 01:15:32 2018 +0100 Vivid new ui set --- frameworks/projects/Vivid/.vscode/launch.json | 21 +++ frameworks/projects/Vivid/.vscode/settings.json | 3 + frameworks/projects/Vivid/.vscode/tasks.json | 8 + frameworks/projects/Vivid/asconfig.json | 34 ++++ frameworks/projects/Vivid/pom.xml | 160 +++++++++++++++++++ .../projects/Vivid/src/main/resources/defaults.css | 86 +++++++++++ .../Vivid/src/main/resources/vivid-as-manifest.xml | 25 +++ .../Vivid/src/main/resources/vivid-manifest.xml | 29 ++++ .../projects/Vivid/src/main/royale/VividClasses.as | 40 +++++ .../royale/org/apache/royale/vivid/Application.as | 70 +++++++++ .../main/royale/org/apache/royale/vivid/Slider.as | 72 +++++++++ .../royale/org/apache/royale/vivid/TextButton.as | 63 ++++++++ .../royale/org/apache/royale/vivid/TextField.as | 115 ++++++++++++++ .../apache/royale/vivid/beads/SliderThumbView.as | 121 +++++++++++++++ .../apache/royale/vivid/beads/SliderTrackView.as | 121 +++++++++++++++ .../org/apache/royale/vivid/beads/SliderView.as | 172 +++++++++++++++++++++ .../royale/vivid/supportClasses/ITextField.as | 68 ++++++++ .../royale/vivid/supportClasses/TextFieldBase.as | 154 ++++++++++++++++++ 18 files changed, 1362 insertions(+) diff --git a/frameworks/projects/Vivid/.vscode/launch.json b/frameworks/projects/Vivid/.vscode/launch.json new file mode 100644 index 0000000..5dfb672 --- /dev/null +++ b/frameworks/projects/Vivid/.vscode/launch.json @@ -0,0 +1,21 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Chrome against debug.html, with sourcemaps", + "type": "chrome", + "request": "launch", + "file": "${workspaceRoot}/target/javascript/bin/js-debug/index.html", + "sourceMaps": true, + "preLaunchTask": "mvn" + }, + { + "name": "Launch Firefox against debug.html, with sourcemaps", + "type": "firefox", + "request": "launch", + "file": "${workspaceRoot}/target/javascript/bin/js-debug/index.html", + "sourceMaps": true, + "preLaunchTask": "mvn" + } + ] +} diff --git a/frameworks/projects/Vivid/.vscode/settings.json b/frameworks/projects/Vivid/.vscode/settings.json new file mode 100644 index 0000000..1069e6c --- /dev/null +++ b/frameworks/projects/Vivid/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "nextgenas.sdk.framework": "/Users/carlosrovira/Dev/Royale/Sdks/apache-royale-0.9.1" +} \ No newline at end of file diff --git a/frameworks/projects/Vivid/.vscode/tasks.json b/frameworks/projects/Vivid/.vscode/tasks.json new file mode 100644 index 0000000..5d6198d --- /dev/null +++ b/frameworks/projects/Vivid/.vscode/tasks.json @@ -0,0 +1,8 @@ +{ + // for the documentation about the tasks.json format + "version": "0.1.0", + "command": "mvn", + "args": ["clean", "install", "-DskipTests"], + "isShellCommand": true, + "showOutput": "always" +} \ No newline at end of file diff --git a/frameworks/projects/Vivid/asconfig.json b/frameworks/projects/Vivid/asconfig.json new file mode 100644 index 0000000..36edd42 --- /dev/null +++ b/frameworks/projects/Vivid/asconfig.json @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { + "config": "royale", + "type": "lib", + "compilerOptions": { + "debug": true, + "targets": [ + "JSRoyale", + "SWF" + ], + "include-classes": [ + "VividClasses" + ], + "include-sources": [ + "src/main/royale" + ], + "output": "target/Vivid.swc" + } +} diff --git a/frameworks/projects/Vivid/pom.xml b/frameworks/projects/Vivid/pom.xml new file mode 100644 index 0000000..3ec2f3a --- /dev/null +++ b/frameworks/projects/Vivid/pom.xml @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.royale.framework</groupId> + <artifactId>projects</artifactId> + <version>0.9.2-SNAPSHOT</version> + </parent> + + <artifactId>Vivid</artifactId> + <version>0.9.2-SNAPSHOT</version> + <packaging>swc</packaging> + + <name>Apache Royale: Framework: Libs: Vivid</name> + + <build> + <sourceDirectory>src/main/royale</sourceDirectory> + <plugins> + <plugin> + <groupId>org.apache.royale.compiler</groupId> + <artifactId>royale-maven-plugin</artifactId> + <version>${royale.compiler.version}</version> + <extensions>true</extensions> + <configuration> + <namespaces> + <namespace> + <uri>library://ns.apache.org/royale/vivid</uri> + <manifest>${project.basedir}/src/main/resources/vivid-manifest.xml</manifest> + </namespace> + <namespace> + <type>as</type> + <uri>library://ns.apache.org/royale/vivid</uri> + <manifest>${project.basedir}/src/main/resources/vivid-as-manifest.xml</manifest> + </namespace> + </namespaces> + <includeClasses> + <includeClass>VividClasses</includeClass> + </includeClasses> + <includeFiles> + <include-file> + <name>defaults.css</name> + <path>../src/main/resources/defaults.css</path> + </include-file> + </includeFiles> + <includeLookupOnly>true</includeLookupOnly> + <!--<allowSubclassOverrides>true</allowSubclassOverrides>--> + <skipExtern>true</skipExtern> + <!--<additionalCompilerOptions>-compiler.fxg-base-class=flash.display.Sprite</additionalCompilerOptions>--> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Core</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Core</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Binding</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Binding</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Graphics</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Graphics</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Collections</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Collections</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Basic</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>Basic</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>HTML</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>swf</classifier> + </dependency> + <dependency> + <groupId>org.apache.royale.framework</groupId> + <artifactId>HTML</artifactId> + <version>0.9.2-SNAPSHOT</version> + <type>swc</type> + <classifier>js</classifier> + </dependency> + </dependencies> + +</project> diff --git a/frameworks/projects/Vivid/src/main/resources/defaults.css b/frameworks/projects/Vivid/src/main/resources/defaults.css new file mode 100644 index 0000000..5630039 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/resources/defaults.css @@ -0,0 +1,86 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +@namespace "library://ns.apache.org/royale/vivid"; + +/* +* Vivid TextField +*/ +.vTextfield { + IBeadModel: ClassReference("org.apache.royale.html.beads.models.TextModel"); +} +.vTextfield--input {} +.vTextfield--label {} + +/* +* Vivid TextButton +*/ + +TextButton { + /* Background: */ + background-color: #D8D8D8; + border: 1px solid #979797; + border-radius: 3px; + + /* TextField: */ + font-family: 'Lato', sans-serif; + font-size: 13px; + color: #646D7A; +} + +TextButton:hover { + background-color: #CFCFCF; + vertical-align: middle; + border: none; + border-radius: 6px; +} + +TextButton:active { + background-color: #77CEFF; + color: #FFFFFF; +} + + + +/* +* Vivid Slider +*/ +Slider { + IBeadModel: ClassReference("org.apache.royale.html.beads.models.RangeModel"); + IBeadView: ClassReference("org.apache.royale.vivid.beads.SliderView"); + IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.HorizontalSliderLayout"); + IBeadController: ClassReference("org.apache.royale.html.beads.controllers.HSliderMouseController"); + position: relative; +} +.SliderTrack { + position: absolute; +} +.SliderThumb { + position: absolute; + border-radius: 15px; +} + +@media -royale-swf +{ + Slider + { + iThumbView: ClassReference("org.apache.royale.vivid.beads.SliderThumbView"); + iTrackView: ClassReference("org.apache.royale.vivid.beads.SliderTrackView"); + } +} diff --git a/frameworks/projects/Vivid/src/main/resources/vivid-as-manifest.xml b/frameworks/projects/Vivid/src/main/resources/vivid-as-manifest.xml new file mode 100644 index 0000000..e38496a --- /dev/null +++ b/frameworks/projects/Vivid/src/main/resources/vivid-as-manifest.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> + + +<componentPackage> + + +</componentPackage> diff --git a/frameworks/projects/Vivid/src/main/resources/vivid-manifest.xml b/frameworks/projects/Vivid/src/main/resources/vivid-manifest.xml new file mode 100644 index 0000000..4c24222 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/resources/vivid-manifest.xml @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> + + +<componentPackage> + + <component id="Application" class="org.apache.royale.vivid.Application"/> + <component id="TextButton" class="org.apache.royale.vivid.TextButton"/> + <component id="TextField" class="org.apache.royale.vivid.TextField"/> + <component id="Slider" class="org.apache.royale.vivid.Slider"/> + +</componentPackage> diff --git a/frameworks/projects/Vivid/src/main/royale/VividClasses.as b/frameworks/projects/Vivid/src/main/royale/VividClasses.as new file mode 100644 index 0000000..a069ba8 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/VividClasses.as @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package +{ + + /** + * @private + * This class is used to link additional classes into vivid.swc + * beyond those that are found by dependecy analysis starting + * from the classes specified in manifest.xml. + */ + internal class VividClasses + { + import org.apache.royale.vivid.beads.SliderView; SliderView; + + COMPILE::SWF + { + import org.apache.royale.vivid.beads.SliderThumbView; SliderThumbView; + import org.apache.royale.vivid.beads.SliderTrackView; SliderTrackView; + } + + } + +} \ No newline at end of file diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Application.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Application.as new file mode 100644 index 0000000..6246c99 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Application.as @@ -0,0 +1,70 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid +{ + import org.apache.royale.core.Application; + import org.apache.royale.core.SimpleCSSValuesImpl; + + /** + * Vivid Application holds specific Vivid need in a Royale Application. + * + * This class extends the standard Application and sets up the + * SimpleCSSValuesImpl (implementation) for convenience. + * + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public class Application extends org.apache.royale.core.Application + { + /** + * constructor. + * + * <inject_html> + * <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> + * </inject_html> + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function Application() + { + super(); + + this.valuesImpl = new SimpleCSSValuesImpl(); + + // this a is temp solution until we get a better way to get a reference to Application + //topLevelApplication = this; + } + + /** + * static reference to this application used mainly for dialog (Dialog class) + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + //public static var topLevelApplication:Object; + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Slider.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Slider.as new file mode 100644 index 0000000..3b47dfa --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/Slider.as @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid +{ + import org.apache.royale.html.Slider; + + COMPILE::JS + { + import org.apache.royale.core.WrappedHTMLElement; + } + + [Event(name="valueChange", type="org.apache.royale.events.Event")] + + /** + * The Slider class is a component that displays a range of values using a + * track and a thumb control. The Slider uses the following bead types: + * + * org.apache.royale.core.IBeadModel: the data model, typically an IRangeModel, that holds the Slider values. + * org.apache.royale.core.IBeadView: the bead that constructs the visual parts of the Slider. + * org.apache.royale.core.IBeadController: the bead that handles input. + * org.apache.royale.core.IThumbValue: the bead responsible for the display of the thumb control. + * org.apache.royale.core.ITrackView: the bead responsible for the display of the track. + * + * @toplevel + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public class Slider extends org.apache.royale.html.Slider + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function Slider() + { + super(); + } + + + + /** + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + */ + COMPILE::JS + override protected function createElement():WrappedHTMLElement + { + return super.createElement(); + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextButton.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextButton.as new file mode 100644 index 0000000..723dbdf --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextButton.as @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid +{ + import org.apache.royale.html.TextButton; + + COMPILE::JS + { + import org.apache.royale.core.WrappedHTMLElement; + import org.apache.royale.html.util.addElementToWrapper; + } + + /** + * The Button class provides a Vivid Design Library UI-like appearance for + * a Button. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public class TextButton extends org.apache.royale.html.TextButton + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function TextButton() + { + super(); + } + + /** + * @private + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + */ + COMPILE::JS + override protected function createElement():WrappedHTMLElement + { + return super.createElement(); + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextField.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextField.as new file mode 100644 index 0000000..fc28e66 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/TextField.as @@ -0,0 +1,115 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid +{ + import org.apache.royale.vivid.supportClasses.TextFieldBase; + + COMPILE::JS + { + import goog.events; + import org.apache.royale.core.WrappedHTMLElement; + import org.apache.royale.html.util.addElementToWrapper; + } + + /** + * The TextField class implements the basic control for + * single-line text input. + * + * @toplevel + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public class TextField extends TextFieldBase + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function TextField() + { + super(); + } + + COMPILE::JS + private var _positioner:WrappedHTMLElement; + + COMPILE::JS + /** + * The HTMLElement used to position the component. + */ + override public function get positioner():WrappedHTMLElement + { + return _positioner; + } + + COMPILE::JS + /** + * @private + */ + override public function set positioner(value:WrappedHTMLElement):void + { + _positioner = value; + } + + /** + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + * @royaleignorecoercion HTMLDivElement + * @royaleignorecoercion HTMLInputElement + * @royaleignorecoercion HTMLLabelElement + * @royaleignorecoercion Text + */ + COMPILE::JS + override protected function createElement():WrappedHTMLElement + { + typeNames = "vTextfield"; + + var div:HTMLDivElement = document.createElement('div') as HTMLDivElement; + div.className = typeNames; + + input = addElementToWrapper(this,'input') as HTMLInputElement; + input.setAttribute('type', 'text'); + input.className = "vTextfield--input"; + + //attach input handler to dispatch royale change event when user write in textinput + //goog.events.listen(element, 'change', killChangeHandler); + goog.events.listen(input, 'input', textChangeHandler); + + label = document.createElement('label') as HTMLLabelElement; + label.className = "vTextfield--label"; + + textNode = document.createTextNode('') as Text; + label.appendChild(textNode); + + div.appendChild(input); + div.appendChild(label); + + positioner = div as WrappedHTMLElement; + (label as WrappedHTMLElement).royale_wrapper = this; + _positioner.royale_wrapper = this; + + return element; + } + + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderThumbView.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderThumbView.as new file mode 100644 index 0000000..cb2768b --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderThumbView.as @@ -0,0 +1,121 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid.beads +{ + import flash.display.Graphics; + import flash.display.Shape; + import flash.display.SimpleButton; + + import org.apache.royale.core.BeadViewBase; + import org.apache.royale.core.IBeadView; + import org.apache.royale.core.IStrand; + import org.apache.royale.html.Button; + import org.apache.royale.events.Event; + import org.apache.royale.events.IEventDispatcher; + import org.apache.royale.core.IChild; + + /** + * The SliderThumbView class creates the draggable input element for the + * org.apache.royale.html.Slider component. + * + * @viewbead + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public class SliderThumbView extends BeadViewBase implements IBeadView + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public function SliderThumbView() + { + hitArea = new Shape(); + upView = new Shape(); + downView = new Shape(); + overView = new Shape(); + } + + /** + * @private + */ + private function drawView(g:Graphics, bgColor:uint):void + { + var host:Button = Button(_strand); + var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton; + g.clear(); + g.lineStyle(1,0x000000); + g.beginFill(bgColor,1.0); + g.drawCircle(host.width/2, host.height/2, 10); + g.endFill(); + } + + private var hitArea:Shape; + + /** + * @copy org.apache.royale.core.IBead#strand + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + * @royaleignoreimport org.apache.royale.core.WrappedHTMLElement + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + */ + override public function set strand(value:IStrand):void + { + super.strand = value; + + drawView(hitArea.graphics, 0xDD0000); + drawView(upView.graphics, 0xFFFFFF); + drawView(downView.graphics, 0x999999); + drawView(overView.graphics, 0xDDDDDD); + + var button:SimpleButton = IChild(value).$displayObject as SimpleButton; + button.upState = upView; + button.downState = downView; + button.overState = overView; + button.hitTestState = hitArea; + + IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler); + IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler); + } + + private var upView:Shape; + private var downView:Shape; + private var overView:Shape; + + /** + * @private + */ + private function sizeChangeHandler( event:Event ) : void + { + drawView(hitArea.graphics, 0xDD0000); + drawView(upView.graphics, 0xFFFFFF); + drawView(downView.graphics, 0x999999); + drawView(overView.graphics, 0xDDDDDD); + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderTrackView.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderTrackView.as new file mode 100644 index 0000000..4b40230 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderTrackView.as @@ -0,0 +1,121 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid.beads +{ + import flash.display.Graphics; + import flash.display.Shape; + import flash.display.SimpleButton; + + import org.apache.royale.core.BeadViewBase; + import org.apache.royale.core.IBeadView; + import org.apache.royale.core.IStrand; + import org.apache.royale.core.UIBase; + import org.apache.royale.html.Button; + import org.apache.royale.events.Event; + import org.apache.royale.events.IEventDispatcher; + import org.apache.royale.core.IChild; + + /** + * The SliderTrackView class creates the track area for the org.apache.royale.html.Slider + * component. + * + * @viewbead + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public class SliderTrackView extends BeadViewBase implements IBeadView + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public function SliderTrackView() + { + hitArea = new Shape(); + upView = new Shape(); + downView = new Shape(); + overView = new Shape(); + } + + /** + * @private + */ + private function drawView(g:Graphics, bgColor:uint):void + { + var host:Button = Button(_strand); + var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton; + g.clear(); + g.lineStyle(1,0x000000); + g.beginFill(bgColor); + g.drawRect(0, 0, host.width, host.height); + g.endFill(); + } + + private var hitArea:Shape; + + /** + * @copy org.apache.royale.core.IBead#strand + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + */ + override public function set strand(value:IStrand):void + { + super.strand = value; + + drawView(hitArea.graphics, 0xDD0000); + drawView(upView.graphics, 0xCCCCCC); + drawView(downView.graphics, 0x808080); + drawView(overView.graphics, 0xEEEEEE); + + var button:SimpleButton = IChild(value).$displayObject as SimpleButton; + button.upState = upView; + button.downState = downView; + button.overState = overView; + button.hitTestState = hitArea; + + IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler); + IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler); + } + + private var upView:Shape; + private var downView:Shape; + private var overView:Shape; + + /** + * @private + */ + private function sizeChangeHandler( event:Event ) : void + { + drawView(hitArea.graphics, 0xDD0000); + drawView(upView.graphics, 0xCCCCCC); + drawView(downView.graphics, 0x808080); + drawView(overView.graphics, 0xEEEEEE); + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderView.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderView.as new file mode 100644 index 0000000..cc18c9d --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/beads/SliderView.as @@ -0,0 +1,172 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid.beads +{ + COMPILE::SWF { + import flash.display.DisplayObject; + import flash.display.Sprite; + } + + import org.apache.royale.html.beads.ISliderView; + import org.apache.royale.core.BeadViewBase; + import org.apache.royale.core.IBead; + import org.apache.royale.core.IBeadLayout; + import org.apache.royale.core.IBeadModel; + import org.apache.royale.core.IBeadView; + import org.apache.royale.core.IRangeModel; + import org.apache.royale.core.IStrand; + import org.apache.royale.core.IUIBase; + import org.apache.royale.core.UIBase; + import org.apache.royale.core.ValuesManager; + import org.apache.royale.events.Event; + import org.apache.royale.events.IEventDispatcher; + import org.apache.royale.html.Button; + import org.apache.royale.html.TextButton; + + /** + * The SliderView class creates the visual elements of the org.apache.royale.html.Slider + * component. The Slider has a track and a thumb control which are also created with view beads. + * + * @viewbead + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public class SliderView extends BeadViewBase implements ISliderView, IBeadView + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public function SliderView() + { + } + + private var rangeModel:IRangeModel; + + /** + * @copy org.apache.royale.core.IBead#strand + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + override public function set strand(value:IStrand):void + { + super.strand = value; + + var layout:IBeadLayout = _strand.getBeadByType(IBeadLayout) as IBeadLayout; + if (layout == null) { + var klass:Class = ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout"); + _strand.addBead(new klass() as IBead); + } + + COMPILE::SWF { + var s:UIBase = UIBase(_strand); + + _track = new Button(); + _track.addBead(new (ValuesManager.valuesImpl.getValue(_strand, "iTrackView")) as IBead); + _track.className = "SliderTrack"; + s.addElement(_track); + + _thumb = new TextButton(); + _thumb.text = '\u29BF'; + _thumb.addBead(new (ValuesManager.valuesImpl.getValue(_strand, "iThumbView")) as IBead); + _thumb.className = "SliderThumb"; + s.addElement(_thumb); + + } + COMPILE::JS { + _track = new Button(); + _track.className = "SliderTrack"; + host.addElement(_track); + + _thumb = new TextButton(); + _thumb.className = "SliderThumb"; + _thumb.text = '\u29BF'; + host.addElement(_thumb); + } + + rangeModel = _strand.getBeadByType(IBeadModel) as IRangeModel; + + var rm:IEventDispatcher = rangeModel as IEventDispatcher; + + // listen for changes to the model and adjust the UI accordingly. + rm.addEventListener("valueChange",modelChangeHandler); + rm.addEventListener("minimumChange",modelChangeHandler); + rm.addEventListener("maximumChange",modelChangeHandler); + rm.addEventListener("stepSizeChange",modelChangeHandler); + rm.addEventListener("snapIntervalChange",modelChangeHandler); + + (_strand as IEventDispatcher).dispatchEvent(new Event("layoutNeeded")); + } + + private var _track:Button; + private var _thumb:TextButton; + + + /** + * The track component. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public function get track():IUIBase + { + return _track; + } + + /** + * The thumb component. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public function get thumb():IUIBase + { + return _thumb; + } + + /** + * @royaleignorecoercion org.apache.royale.core.UIBase + */ + private function get host():UIBase + { + return _strand as UIBase; + } + + /** + * @private + */ + private function modelChangeHandler( event:Event ) : void + { + (_strand as IEventDispatcher).dispatchEvent(new Event("layoutNeeded")); + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/ITextField.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/ITextField.as new file mode 100644 index 0000000..100b523 --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/ITextField.as @@ -0,0 +1,68 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid.supportClasses +{ + /** + * ITextField is the interface that all text vivid classes. + * It's used mainly in org.apache.royale.vivid.supportClasses.TextFieldBase + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 9.2 + */ + public interface ITextField + { + COMPILE::JS + { + /** + * the textNode + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + function get textNode():Text; + function set textNode(value:Text):void; + + /** + * the input + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + function get input():HTMLInputElement; + function set input(value:HTMLInputElement):void; + + /** + * the label + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + function get label():HTMLLabelElement; + function set label(value:HTMLLabelElement):void; + } + } +} diff --git a/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/TextFieldBase.as b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/TextFieldBase.as new file mode 100644 index 0000000..868b6be --- /dev/null +++ b/frameworks/projects/Vivid/src/main/royale/org/apache/royale/vivid/supportClasses/TextFieldBase.as @@ -0,0 +1,154 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.vivid.supportClasses +{ + import org.apache.royale.events.Event; + import org.apache.royale.html.TextInput; + + import org.apache.royale.vivid.supportClasses.ITextField; + + COMPILE::JS + { + import goog.events; + import org.apache.royale.core.WrappedHTMLElement; + } + + /** + * The TextFieldBase class is the base class for TextField and TextArea Vivid controls + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public class TextFieldBase extends TextInput implements ITextField + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function TextFieldBase() + { + super(); + } + + COMPILE::JS + { + private var _textNode:Text; + /** + * @copy org.apache.royale.vivid.supportClasses.ITextField#textNode + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function get textNode():Text + { + return _textNode; + } + + public function set textNode(value:Text):void + { + _textNode = value; + } + + private var _input:HTMLInputElement; + /** + * @copy org.apache.royale.vivid.supportClasses.ITextField#input + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function get input():HTMLInputElement + { + return _input; + } + + public function set input(value:HTMLInputElement):void + { + _input = value; + } + + private var _label:HTMLLabelElement; + /** + * @copy org.apache.royale.vivid.supportClasses.ITextField#label + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function get label():HTMLLabelElement + { + return _label; + } + + public function set label(value:HTMLLabelElement):void + { + _label = value; + } + } + + COMPILE::JS + /** + * override UIBase to affect positioner instead of element + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + override protected function setClassName(value:String):void + { + positioner.className = value; + } + + private var _isInvalid:Boolean = false; + /** + * A boolean flag to activate "is-invalid" effect selector. + * Defines the textfield as invalid on initial load. + * Optional + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.2 + */ + public function get isInvalid():Boolean + { + return _isInvalid; + } + public function set isInvalid(value:Boolean):void + { + _isInvalid = value; + + COMPILE::JS + { + positioner.classList.toggle("is-invalid", _isInvalid); + typeNames = positioner.className; + } + } + } +} -- To stop receiving notification emails like this one, please contact carlosrov...@apache.org.