This is an automated email from the ASF dual-hosted git repository.
carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 76dab60 Jewel ApplicationMainContent to navigate different organized
content
76dab60 is described below
commit 76dab60a04cd6f99cdb91653f0301418dab3cfd1
Author: Carlos Rovira <[email protected]>
AuthorDate: Mon Jul 2 18:03:45 2018 +0200
Jewel ApplicationMainContent to navigate different organized content
---
.../projects/Jewel/src/main/resources/defaults.css | 10 +++-
.../Jewel/src/main/resources/jewel-manifest.xml | 1 +
.../projects/Jewel/src/main/royale/JewelClasses.as | 4 ++
.../{Navigation.as => ApplicationMainContent.as} | 43 +++++++++++---
.../royale/org/apache/royale/jewel/Container.as | 2 +-
.../royale/org/apache/royale/jewel/Navigation.as | 20 ++++++-
.../itemRenderers/NavigationLinkItemRenderer.as | 11 +++-
.../royale/jewel/supportClasses/IActivable.as} | 50 ++++++++--------
.../jewel/supportClasses/INavigationRenderer.as | 57 ++++++++++++++++++
.../royale/jewel/supportClasses/ITextField.as | 68 ----------------------
.../projects/Jewel/src/main/sass/_global.sass | 2 +-
...mRenderer.sass => _applicationmaincontent.sass} | 36 +++++-------
.../src/main/sass/components/_itemRenderer.sass | 3 +
.../projects/Jewel/src/main/sass/defaults.sass | 1 +
14 files changed, 179 insertions(+), 129 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index fc489b5..8ff4fd8 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -56,7 +56,6 @@ j|VGroup {
j|Container {
IBeadView:
ClassReference("org.apache.royale.core.beads.views.ContainerView");
- IBeadLayout:
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout");
IViewport: ClassReference("org.apache.royale.core.supportClasses.Viewport");
IViewportModel:
ClassReference("org.apache.royale.core.beads.models.ViewportModel");
}
@@ -104,6 +103,12 @@ j|Alert {
IBeadView: ClassReference("org.apache.royale.jewel.beads.views.AlertView");
}
+j|ApplicationMainContent {
+ IBeadView:
ClassReference("org.apache.royale.core.beads.views.ContainerView");
+ IViewport: ClassReference("org.apache.royale.core.supportClasses.Viewport");
+ IViewportModel:
ClassReference("org.apache.royale.core.beads.models.ViewportModel");
+}
+
.jewel.button {
margin: 0;
padding: 0.72em 1.12em;
@@ -323,6 +328,9 @@ j|ControlBar {
line-height: normal !important;
overflow: hidden;
}
+.jewel.item > *, .jewel.navigationlink > * {
+ pointer-events: none;
+}
.jewel.navigationlink {
min-height: 48px;
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 2995103..3e80aef 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -51,6 +51,7 @@
<component id="TopAppBarRow" class="org.apache.royale.jewel.TopAppBarRow"/>
<component id="TopAppBarSection"
class="org.apache.royale.jewel.TopAppBarSection"/>
<component id="TopAppBarTitle"
class="org.apache.royale.jewel.TopAppBarTitle"/>
+ <component id="ApplicationMainContent"
class="org.apache.royale.jewel.ApplicationMainContent"/>
<component id="Drawer" class="org.apache.royale.jewel.Drawer"/>
<component id="DrawerHeader" class="org.apache.royale.jewel.DrawerHeader"/>
<component id="DrawerContent"
class="org.apache.royale.jewel.DrawerContent"/>
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index 0d990d1..bad4e50 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -71,6 +71,10 @@ package
import org.apache.royale.jewel.beads.layouts.HorizontalLayout;
HorizontalLayout;
import org.apache.royale.jewel.beads.layouts.VerticalLayout;
VerticalLayout;
import
org.apache.royale.jewel.beads.layouts.HorizontalLayoutSpaceBetween;
HorizontalLayoutSpaceBetween;
+
+ import org.apache.royale.jewel.supportClasses.INavigationRenderer;
INavigationRenderer;
+ import org.apache.royale.jewel.supportClasses.IActivable; IActivable;
+ import org.apache.royale.jewel.supportClasses.ITextInput; ITextInput;
//import org.apache.royale.jewel.beads.views.JewelLabelViewBead;
JewelLabelViewBead;
import
org.apache.royale.jewel.beads.controllers.ItemRendererMouseController;
ItemRendererMouseController;
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ApplicationMainContent.as
similarity index 63%
copy from
frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
copy to
frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ApplicationMainContent.as
index 581a84e..98d6d13 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ApplicationMainContent.as
@@ -18,6 +18,8 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel
{
+ import org.apache.royale.jewel.supportClasses.IActivable;
+
COMPILE::JS
{
import org.apache.royale.core.WrappedHTMLElement;
@@ -25,16 +27,16 @@ package org.apache.royale.jewel
}
/**
- * The Navigation class is a <nav> tag in HTML. It parents a list of
links
- * In Royale Navigation is implemented as a List component and by
default
- * it uses NavigationLinkItemRenderer class to define each item.
+ * The ApplicationMainContent class is a Container component capable
of parenting
+ * the other organized content that implements IActivable interface
+ * (i.e, a Section container)
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9.3
*/
- public class Navigation extends List
+ public class ApplicationMainContent extends Container
{
/**
* constructor.
@@ -44,12 +46,39 @@ package org.apache.royale.jewel
* @playerversion AIR 2.6
* @productversion Royale 0.9.3
*/
- public function Navigation()
+ public function ApplicationMainContent()
{
super();
- typeNames = "jewel navigation";
+ typeNames = "jewel main";
}
+
+ /**
+ * shows a concrete content and hides the rest
+ *
+ * @param id, the id of the container to show
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ public function showContent(id:String):void
+ {
+ for (var i:int = 0; i < numElements; i++)
+ {
+ var content:IActivable = getElementAt(i) as
IActivable;
+
+ if(content.id == id)
+ {
+ content.isActive = true;
+ }
+ else
+ {
+ content.isActive = false;
+ }
+ }
+ }
/**
* @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
@@ -57,7 +86,7 @@ package org.apache.royale.jewel
COMPILE::JS
override protected function createElement():WrappedHTMLElement
{
- return addElementToWrapper(this,'nav');
+ return addElementToWrapper(this,'main');
}
}
}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Container.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Container.as
index c2b3831..ae5b28d 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Container.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Container.as
@@ -81,7 +81,7 @@ package org.apache.royale.jewel
{
COMPILE::JS
{
- typeNames = '';
+ typeNames = 'jewel container';
}
super();
}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
index 581a84e..acda5f3 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Navigation.as
@@ -18,6 +18,8 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel
{
+ import org.apache.royale.events.MouseEvent;
+
COMPILE::JS
{
import org.apache.royale.core.WrappedHTMLElement;
@@ -25,9 +27,10 @@ package org.apache.royale.jewel
}
/**
- * The Navigation class is a <nav> tag in HTML. It parents a list of
links
- * In Royale Navigation is implemented as a List component and by
default
- * it uses NavigationLinkItemRenderer class to define each item.
+ * The Navigation class is a List used for navigate other organized
content
+ * in a Royale Application. In HTML is represented by a <nav> tag in
HTML and
+ * It parents a list of links.
+ * By default it uses NavigationLinkItemRenderer class to define each
item.
*
* @langversion 3.0
* @playerversion Flash 10.2
@@ -49,6 +52,17 @@ package org.apache.royale.jewel
super();
typeNames = "jewel navigation";
+
+ addEventListener(MouseEvent.CLICK,
internalMouseHandler);
+ }
+
+ private function internalMouseHandler(event:MouseEvent):void
+ {
+ COMPILE::JS
+ {
+ // avoid a link tries to open a new page
+ event.preventDefault();
+ }
}
/**
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
index 29edc55..21e6f40 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
@@ -19,6 +19,7 @@
package org.apache.royale.jewel.itemRenderers
{
import org.apache.royale.core.StyledMXMLItemRenderer;
+ import org.apache.royale.jewel.supportClasses.INavigationRenderer;
COMPILE::JS
{
@@ -29,14 +30,15 @@ package org.apache.royale.jewel.itemRenderers
/**
* The NavigationLinkItemRenderer defines the basic Item Renderer for
a Jewel
- * Navigation List Component.
- *
+ * Navigation List Component. It handles Objects with "label" and "href"
data.
+ * Extend this (you can do it in MXML) to support more data like for
example: icon data.
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9.3
*/
- public class NavigationLinkItemRenderer extends StyledMXMLItemRenderer
+ public class NavigationLinkItemRenderer extends StyledMXMLItemRenderer
implements INavigationRenderer
{
/**
* constructor.
@@ -159,6 +161,9 @@ package org.apache.royale.jewel.itemRenderers
/**
* @private
+ *
+ * Styles are handled in CSS and usualy This renderer does not
uses "selected" state
+ * at least if the drawer is closed after selection.
*/
override public function updateRenderer():void
{
diff --git
a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/IActivable.as
similarity index 57%
copy from frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
copy to
frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/IActivable.as
index 637db5a..0703cf1 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/IActivable.as
@@ -16,28 +16,30 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.supportClasses
+{
+ import org.apache.royale.core.IId;
-// Jewel ListItemRenderer
-
-// ListItemRenderer variables
-$item-min-height: 34px
-
-.jewel.item, .jewel.navigationlink
- display: flex
- cursor: pointer
- min-height: $item-min-height
- text-decoration: none
- align-items: center
- letter-spacing: 0
- line-height: normal !important
- overflow: hidden
-
-
-.jewel.navigationlink
- min-height: 48px
-
-j|ListItemRenderer
- IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
-
-j|NavigationLinkItemRenderer
- IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
\ No newline at end of file
+ /**
+ * IActivable is the interface a container implements to mark
+ * as the current active container
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ public interface IActivable extends IId
+ {
+ /**
+ * An id property for MXML documents.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ function get isActive():Boolean;
+ function set isActive(value:Boolean):void;
+ }
+}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
new file mode 100644
index 0000000..6d6a6eb
--- /dev/null
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
@@ -0,0 +1,57 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.jewel.supportClasses
+{
+ /**
+ * INavigationRenderer is the interface that all item renderers used with
+ * Navigation List component must implement.
+ * Jewel supports a basic implementation with NavigationLinkItemRenderer
+ *
+ * @see org.apache.royale.jewel.itemRenderers.NavigationLinkItemRenderer
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ public interface INavigationRenderer
+ {
+ /**
+ * the navigation link url
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ function get href():String;
+ function set href(value:String):void;
+
+ /**
+ * The text of the navigation link
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ function get text():String;
+ function set text(value:String):void;
+ }
+}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/ITextField.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/ITextField.as
deleted file mode 100644
index 4dbb16c..0000000
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/ITextField.as
+++ /dev/null
@@ -1,68 +0,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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.jewel.supportClasses
-{
- /**
- * ITextInput is the interface that all text jewel classes.
- * It's used mainly in
org.apache.royale.jewel.supportClasses.TextInputBase
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 9.2
- */
- public interface ITextInput
- {
- COMPILE::JS
- {
- /**
- * the textNode
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.3
- */
- 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.3
- */
- 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.3
- */
- function get label():HTMLLabelElement;
- function set label(value:HTMLLabelElement):void;
- }
- }
-}
diff --git a/frameworks/projects/Jewel/src/main/sass/_global.sass
b/frameworks/projects/Jewel/src/main/sass/_global.sass
index aa0bf71..222ab54 100644
--- a/frameworks/projects/Jewel/src/main/sass/_global.sass
+++ b/frameworks/projects/Jewel/src/main/sass/_global.sass
@@ -65,7 +65,7 @@ j|VGroup
j|Container
IBeadView:
ClassReference("org.apache.royale.core.beads.views.ContainerView")
- IBeadLayout:
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout")
+ //IBeadLayout:
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout")
IViewport:
ClassReference("org.apache.royale.core.supportClasses.Viewport")
IViewportModel:
ClassReference("org.apache.royale.core.beads.models.ViewportModel")
//align-items: flex-start
diff --git
a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
b/frameworks/projects/Jewel/src/main/sass/components/_applicationmaincontent.sass
similarity index 59%
copy from frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
copy to
frameworks/projects/Jewel/src/main/sass/components/_applicationmaincontent.sass
index 637db5a..42bdce9 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
+++
b/frameworks/projects/Jewel/src/main/sass/components/_applicationmaincontent.sass
@@ -17,27 +17,21 @@
//
////////////////////////////////////////////////////////////////////////////////
-// Jewel ListItemRenderer
+// Jewel ApplicationMainContent
-// ListItemRenderer variables
-$item-min-height: 34px
+// ApplicationMainContent variables
-.jewel.item, .jewel.navigationlink
- display: flex
- cursor: pointer
- min-height: $item-min-height
- text-decoration: none
- align-items: center
- letter-spacing: 0
- line-height: normal !important
- overflow: hidden
+.jewel.main
+ // background: #55dede
+ // display: inline-block
+ // flex-grow: 1
+ // z-index: 1
+ // position: relative
+ // height: 100%
+ // overflow: hidden !important
-
-.jewel.navigationlink
- min-height: 48px
-
-j|ListItemRenderer
- IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
-
-j|NavigationLinkItemRenderer
- IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
\ No newline at end of file
+j|ApplicationMainContent
+ IBeadView:
ClassReference("org.apache.royale.core.beads.views.ContainerView")
+ //IBeadLayout:
ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout") // Basic
layoutr doesn't work here
+ IViewport: ClassReference("org.apache.royale.core.supportClasses.Viewport")
+ IViewportModel:
ClassReference("org.apache.royale.core.beads.models.ViewportModel")
\ No newline at end of file
diff --git
a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
b/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
index 637db5a..3582069 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_itemRenderer.sass
@@ -32,6 +32,9 @@ $item-min-height: 34px
line-height: normal !important
overflow: hidden
+ > *
+ pointer-events: none
+
.jewel.navigationlink
min-height: 48px
diff --git a/frameworks/projects/Jewel/src/main/sass/defaults.sass
b/frameworks/projects/Jewel/src/main/sass/defaults.sass
index 9e3516b..f7f0b40 100644
--- a/frameworks/projects/Jewel/src/main/sass/defaults.sass
+++ b/frameworks/projects/Jewel/src/main/sass/defaults.sass
@@ -24,6 +24,7 @@
// Components
@import "components/alert"
+@import "components/applicationmaincontent"
@import "components/button"
@import "components/card"
@import "components/checkbox"