Well done, looks nice :)

From:  Phyo Arkar <phyo.arkarl...@gmail.com>
Reply-To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
Date:  Wednesday, 19 August 2015 11:06
To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
Subject:  Re: [qooxdoo-devel] Set margin between listitems

results :


​

On Wed, Aug 19, 2015 at 4:33 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
wrote:
> Got it working , i wrote a decoration mixin, i will make a proper repo later.
> This need to be inset tho , not sure why non-inset box-shadows dosen’t work in
> ::before pseudo elements.
> /* ************************************************************************
> 
>    qooxdoo - the new era of web development
>    License:
>      LGPL: http://www.gnu.org/licenses/lgpl.html
>      EPL: http://www.eclipse.org/org/documents/epl-v10.php
>      See the LICENSE file in the project's top-level directory for details.
> 
>    Authors:
>      * Phyo Arkar Lwin (phyo.arkarlwin[at]gmail[o]com)
> ************************************************************************ *//**
>  * Border implementation with two CSS borders. Both borders can be styled
>  * independent of each other.
>  * This mixin is usually used by {@link qx.ui.decoration.Decorator}.
>  */
> qx.Mixin.define("phwabe.mixins.MShadowBorderCss", {
> 
>   /*
>   
> *****************************************************************************
>      PROPERTIES
>   
> *****************************************************************************
>   */
> 
>   properties: {
>     /*
>     
> ---------------------------------------------------------------------------
>       PROPERTY: innerShadowCss : just apply CSS Shadow string directly , need
> inset
>     
> ---------------------------------------------------------------------------
>     */
>     /** top width of border */
>     innerShadowCss: {
>       check: "string",
>       nullable: true,
> 
>       apply: "_applyShadowBorderCss"
>     }
>   },
> 
>   members: {
> 
>     /**
>      * Takes a styles map and adds the CSS Box-Shadow inner pseudo element
> ::before
>      *
>      * @param styles {Map} A map to add the styles.
>      */
>     _styleShadowBorderCss: function(styles) {
>       var propName = qx.core.Environment.get("css.boxshadow");
>       var shadowStyle = []
> 
>       // Add inner shadow
>       styles[":before"] = {
>         "width": "100%",
>         "height": "100%",
>         "position": "absolute",
>         "content": '""',
>         "left": 0,
>         "top": 0,
>         "box-shadow": this.getInnerShadowCss()
>       };
>       var boxSizingKey =
> qx.bom.Style.getCssName(qx.core.Environment.get("css.boxsizing"));
>       styles[":before"][boxSizingKey] = "border-box";
> 
>     },
>     _applyShadowBorderCss: function() {
>       if (qx.core.Environment.get("qx.debug")) {
>         if (this._isInitialized()) {
>           throw new Error("This decorator is already in-use. Modification is
> not possible anymore!");
>         }
>       }
>     }
>   }
> });
> usage : in decoration.js
> qx.Class.patch(qx.ui.decoration.Decorator, phwabe.mixins.MShadowBorderCss);
> 
> ...
>     "chatitem": {
>       // include: 'window',
>       style: {
>         widthTop: 10,
>         widthLeft: 10,
>         widthRight: 10,
>         color: "transparent",
>         innerShadowCss: "inset 0px 0 1px 1px rgba(0, 0, 0, 0.12),inset 0 -1px
> 4px rgba(0, 0, 0, 0.24);",
>         backgroundColor: "transparent"
>       }
>     },
> 
> ...
> ​
> 
> On Wed, Aug 19, 2015 at 12:00 PM, Phyo Arkar <phyo.arkarl...@gmail.com> wrote:
>> I almost get it working doing this , but it is fake shadows:
>> 
>>     "chatitem": {
>>       // include: 'window',
>>       style: {
>>         widthTop: 10,
>>         widthLeft: 10,
>>         widthRight: 10,
>>         color: "transparent",
>>         innerWidthTop:1,
>>         innerWidthLeft:1,
>>         innerWidthRight:2,
>>         innerWidthBottom : 3,
>>         radiusBottomLeft:3,
>>         radiusBottomRight:3,
>>         innerColorBottom: "rgba(0, 0, 0, 0.32)",
>>         innerColorRight: "rgba(0, 0, 0, 0.22)",
>>         innerColorLeft: "rgba(0, 0, 0, 0.22)",
>>         innerColorTop: "rgba(0, 0, 0, 0.12)",
>> 
>>         // radius: 1,
>>         // innerColor: "shadow",
>>         // innerShadow: "0 2px 2px 0 rgba(0, 0, 255, 0.14),0 3px 1px -2px "+
>>         // "rgba(0, 0, 255, 0.2),0 1px 5px 0 rgba(0, 0, 255, 0.12)",
>>         backgroundColor: "transparent"
>>       }
>>     },
>> 
>> On Tue, Aug 18, 2015 at 10:04 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>> wrote:
>>> I understand how list items works now:
>>> 
>>> try this :
>>> 
>>>     "listitem": {
>>>       // include: 'window',
>>>       style: {
>>>         width: 20,
>>>         color: "#EFEFEF",
>>>         innerWidth: 10,
>>>         innerColor: "rgb(217, 0, 217)",
>>>         backgroundColor: "transparent"
>>>       }
>>>     },
>>> 
>>> It have can give similar effect.
>>> 
>>> Now , i just need to put inner shadow into it. It makes a :before pseudo
>>> element.
>>> 
>>> On Tue, Aug 18, 2015 at 8:41 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>> wrote:
>>>> Wow , thanks alot John for this valuable suggestion and helping me out ,
>>>> thats awesome! I will try to implement that and if it works i will share
>>>> the results.
>>>> I have also create an issue , to see response from Core devs, when they
>>>> back from vacation.
>>>> 
>>>> Awesome man , thanks a lot. So i will leave this for now and do other
>>>> things for phwa.be <http://phwa.be>  (We need Channel list and user list
>>>> there urgent! :)
>>>> 
>>>> I also created a channel for qooxdoo there http://phwa.be/c/qooxdoo
>>>> 
>>>> On Tue, Aug 18, 2015 at 8:20 PM, John Spackman <john-li...@zenesis.com>
>>>> wrote:
>>>>> So the virtual stuff handles its own layouting and you’re right does not
>>>>> appear to support margin.  Actually it doesn’t support padding via
>>>>> appearances either because the code has to specify the row height (try
>>>>> setting the padding really high, e.g. 100 top and bottom to see how that
>>>>> breaks the appearance).
>>>>> 
>>>>> It seems like the only way to fix this is to implement your own class that
>>>>> derives from qx.ui.form.ListItem and then implement your own layout within
>>>>> the ListItem.  You make it creates instances of your ListItem derived
>>>>> class by providing your own WidgetProvider, but I’m not sure how you would
>>>>> hook that up to your qx.ui.list.List (although it definitely uses one).  A
>>>>> Canvas layout would probably be fine in your ListItem, just set the
>>>>> default height for cells to match the layouting that you do.
>>>>> 
>>>>> John
>>>>> 
>>>>> From:  Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>> Reply-To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>> Date:  Tuesday, 18 August 2015 14:36
>>>>> 
>>>>> To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>> Subject:  Re: [qooxdoo-devel] Set margin between listitems
>>>>> 
>>>>> I have updated another post , i posted a wrong file.
>>>>> 
>>>>> For the test , yes i overridden on purpose to override all listitems to
>>>>> make sure.
>>>>> 
>>>>> I have attached full test tar.gz
>>>>> 
>>>>> 
>>>>> 
>>>>> On Tue, Aug 18, 2015 at 7:50 PM, John Spackman <john-li...@zenesis.com>
>>>>> wrote:
>>>>>> I don’t see where you’re setting the appearance; what happens if you
>>>>>> modify vlistest.listItem’s properties to:
>>>>>> 
>>>>>> properties: { content: { apply: "_applyPost", nullable: true },
>>>>>>     appearance: {
>>>>>>       init: "listitem",
>>>>>>       refine: true
>>>>>>     }  }, 
>>>>>> 
>>>>>> Or alternatively, what happens if you add this to your Appearance.js:
>>>>>> 
>>>>>> "control" : { alias : "atom",  style : function(states) {
>>>>>>         return { padding: [20,10] };
>>>>>>       }
>>>>>>     }
>>>>>> 
>>>>>> As an aside, “listitem" is also the name of a standard appearance and you
>>>>>> might want to choose a different name unless you want all listitems to
>>>>>> have your new style
>>>>>> 
>>>>>> John
>>>>>> 
>>>>>> From:  Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>> Reply-To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>> Date:  Tuesday, 18 August 2015 14:11
>>>>>> 
>>>>>> To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>> Subject:  Re: [qooxdoo-devel] Set margin between listitems
>>>>>> 
>>>>>> I’ve tested to make sure if my code is the problem , unfortunately it
>>>>>> isn’t. Setting Margin of ListItem Dosen’t work in default virtual-list
>>>>>> with default listItem either.
>>>>>> 
>>>>>> here is the code:
>>>>>> 
>>>>>> qx.Class.define("vlistest.listItem", {
>>>>>>   extend: qx.ui.core.Widget,
>>>>>>   include: [qx.ui.form.MModelProperty],
>>>>>>   construct: function() {
>>>>>>     this.base(arguments);
>>>>>>     var chat_grid = new qx.ui.layout.Grid();
>>>>>>     chat_grid.setColumnFlex(1, 1);
>>>>>>     this._createChildControl("content");
>>>>>> 
>>>>>>   },
>>>>>> 
>>>>>>   properties: {
>>>>>>     content: {
>>>>>>       apply: "_applyPost",
>>>>>>       nullable: true
>>>>>>     }
>>>>>> 
>>>>>>   },
>>>>>> 
>>>>>>   members: {
>>>>>>     _createChildControlImpl: function(id) {
>>>>>>       var that = this;
>>>>>>       var control;
>>>>>> 
>>>>>>       switch (id) {
>>>>>>         case "content":
>>>>>>           control = new qx.ui.basic.Label();
>>>>>>           control.addListener("mouseover", function() {
>>>>>>             control.setSelectable(this.hasState("selected"))
>>>>>>             control.setNativeContextMenu(this.hasState("selected"))
>>>>>>           }, this)
>>>>>>           control.addListener("mouseout", function() {
>>>>>>             control.setSelectable(false)
>>>>>>             control.setNativeContextMenu(false)
>>>>>>           }, this)
>>>>>>           control.setWrap(true)
>>>>>>           control.setAllowGrowX(true);
>>>>>>           control.setRich(true);
>>>>>>           control.set({
>>>>>>             appearance: "content"
>>>>>>           });
>>>>>>           this.add(control, {
>>>>>>             row: 0,
>>>>>>             column: 0,
>>>>>>             colSpan: 4
>>>>>>           });
>>>>>>           break;
>>>>>>           return control || this.base(arguments, id);
>>>>>>       },
>>>>>> 
>>>>>>       _applyPost: function(value, old) {
>>>>>>         var content = this.getChildControl("content");
>>>>>>         content.setValue(value);
>>>>>>         // console.log(value)
>>>>>>       }
>>>>>>     }
>>>>>>   }
>>>>>> });
>>>>>> here is the appearance , i over written listitem  and margin of 100:
>>>>>> 
>>>>>> qx.Theme.define("vlistest.theme.Appearance",
>>>>>> {
>>>>>>   extend : qx.theme.indigo.Appearance,
>>>>>> 
>>>>>>   appearances :
>>>>>>   {
>>>>>>     "list" :
>>>>>>     {
>>>>>>       alias : "scrollarea",
>>>>>>       include : "textfield"
>>>>>>     },
>>>>>> 
>>>>>>     "listitem" :
>>>>>>     {
>>>>>>       alias : "atom",
>>>>>> 
>>>>>>       style : function(states)
>>>>>>       {
>>>>>>         var padding = [3, 5, 3, 5];
>>>>>>         if (states.lead) {
>>>>>>           padding = [ 2, 4 , 2, 4];
>>>>>>         }
>>>>>>         if (states.dragover) {
>>>>>>           padding[2] -= 2;
>>>>>>         }
>>>>>> 
>>>>>>         var backgroundColor;
>>>>>>         if (states.selected) {
>>>>>>           backgroundColor = "background-selected"
>>>>>>           if (states.disabled) {
>>>>>>             backgroundColor += "-disabled";
>>>>>>           }
>>>>>>         }
>>>>>>         return {
>>>>>>           gap : 4,
>>>>>>           marginBottom : 100,
>>>>>>           padding : padding,
>>>>>>           backgroundColor : backgroundColor,
>>>>>>           textColor : states.selected ? "text-selected" : undefined,
>>>>>>           decorator : states.lead ? "lead-item" : states.dragover ?
>>>>>> "dragover" : "chatitem",
>>>>>>           opacity : states.drag ? 0.5 : undefined
>>>>>>         };
>>>>>>       }
>>>>>>     }
>>>>>>   }
>>>>>> });
>>>>>> Here is the decoration, i added a shadow border
>>>>>> 
>>>>>> qx.Theme.define("vlistest.theme.Decoration",
>>>>>> {
>>>>>>   extend : qx.theme.indigo.Decoration,
>>>>>> 
>>>>>>   decorations :
>>>>>>   {
>>>>>>     "chatitem": {
>>>>>>       style: {
>>>>>>         width: 0,
>>>>>>         shadowColor: "shadow",
>>>>>>         shadowBlurRadius: 1,
>>>>>>         widthBottom: 2,
>>>>>>         color: "rgb(217, 217, 217)",
>>>>>>         backgroundColor: "transparent"
>>>>>>       }
>>>>>>     }
>>>>>>   }
>>>>>> });
>>>>>> On Tue, Aug 18, 2015 at 6:18 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> Thanks John , i am creating a new qooxdoo app to test it out.
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 5:51 PM, John Spackman <john-li...@zenesis.com>
>>>>>>> wrote:
>>>>>>> Not having used virtual before I’m shooting in the dark a bit here, but
>>>>>>> I can see from the demo browser (at
>>>>>>> http://demo.qooxdoo.org/devel/demobrowser/#virtual~List.html) that a
>>>>>>> List contains qx.ui.virtual.layer.WidgetCell and inside it is a
>>>>>>> qx.ui.form.ListItem.
>>>>>>> 
>>>>>>> That means that you can change the gap layout using an appearance, in
>>>>>>> exactly the way as we both did earlier.  The error you had before looks
>>>>>>> like whatever you were setting the appearance property of, it wasn’t a
>>>>>>> ListItem (were you setting WidgetCell.appearance instead?)
>>>>>>> 
>>>>>>> John
>>>>>>> 
>>>>>>> From:  Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> Reply-To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>>> Date:  Tuesday, 18 August 2015 12:08
>>>>>>> 
>>>>>>> To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>>> Subject:  Re: [qooxdoo-devel] Set margin between listitems
>>>>>>> 
>>>>>>> So what i just need now : Able to set margin for listItems to increase
>>>>>>> Independant Gap between List Items, so that we can set on
>>>>>>> Decorators/Boxshadows on listitems without overlapping each other.
>>>>>>> 
>>>>>>> That would be quite easy if a QOoxdoo Core Dev can Enlighten us.
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 2:37 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> wrote:
>>>>>>> Thanks , the paddings works , but the margin dosen't
>>>>>>> 
>>>>>>> on http://phwa.be , we hacked it by adding a component around the list
>>>>>>> item , but that implemention is slow and when virtual listitems resizes
>>>>>>> (images , video , etc) it dosen't resize sometimes.
>>>>>>> 
>>>>>>> Thats why i am trying to  see if Margin can be set between list items
>>>>>>> (You can set Margin , but It never got effected , when look into
>>>>>>> inspector , there is NO margin property set for list items , but any
>>>>>>> other widget is fine , which is very weird).
>>>>>>> 
>>>>>>> Paddings will just make list items wider , not like margin.
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 2:19 PM, John Spackman <john-li...@zenesis.com>
>>>>>>> wrote:
>>>>>>> Ah, I missed the bit about virtual lists, sorry.
>>>>>>> 
>>>>>>> Yes, in Atom its the gap between the icon and the label; if you’re using
>>>>>>> a completely custom widget then the layouting inside the object is up to
>>>>>>> the widget, so you would have to tell that layout to move the text over.
>>>>>>> The margins and paddings on the widget would still work though (although
>>>>>>> I’ve not used the virtual widget I imagine that’s the case)
>>>>>>> 
>>>>>>> John
>>>>>>> 
>>>>>>> From:  Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> Reply-To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>>> Date:  Tuesday, 18 August 2015 08:43
>>>>>>> To:  qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
>>>>>>> Subject:  Re: [qooxdoo-devel] Set margin between listitems
>>>>>>> 
>>>>>>> I think it is due to , not using atom. I am using custom widget. and Gap
>>>>>>> is only horizontal space between objects right?
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 2:12 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> wrote:
>>>>>>> i am using virtual lis t(list.List) , is it because of that?
>>>>>>> 
>>>>>>> going to test your code , thanks lots!
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 2:11 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> wrote:
>>>>>>> this.classname
>>>>>>> "qx.ui.core.queue.Manager"
>>>>>>> 
>>>>>>> this.hf is undefined
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 2:02 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
>>>>>>> wrote:
>>>>>>> 
>>>>>>> On Tue, Aug 18, 2015 at 1:57 PM, John Spackman <john-li...@zenesis.com>
>>>>>>> wrote:
>>>>>>> typeof hf
>>>>>>> 
>>>>>>> Thanks , i am working on it.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> ------------------------------------------------------------------------
>>>>>>> ------ _______________________________________________ qooxdoo-devel
>>>>>>> mailing list
>>>>>>> qooxdoo-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/l
>>>>>>> istinfo/qooxdoo-devel
>>>>>>> 
>>>>>>> ------------------------------------------------------------------------
>>>>>>> ------
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> qooxdoo-devel mailing list
>>>>>>> qooxdoo-devel@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> ------------------------------------------------------------------------
>>>>>>> ------ _______________________________________________ qooxdoo-devel
>>>>>>> mailing list
>>>>>>> qooxdoo-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/l
>>>>>>> istinfo/qooxdoo-devel
>>>>>>> 
>>>>>>> ------------------------------------------------------------------------
>>>>>>> ------
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> qooxdoo-devel mailing list
>>>>>>> qooxdoo-devel@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> ​
>>>>>> -------------------------------------------------------------------------
>>>>>> ----- _______________________________________________ qooxdoo-devel
>>>>>> mailing list
>>>>>> qooxdoo-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/li
>>>>>> stinfo/qooxdoo-devel
>>>>>> 
>>>>>> -------------------------------------------------------------------------
>>>>>> -----
>>>>>> 
>>>>>> _______________________________________________
>>>>>> qooxdoo-devel mailing list
>>>>>> qooxdoo-devel@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>>> 
>>>>> 
>>>>> --------------------------------------------------------------------------
>>>>> ---- _______________________________________________ qooxdoo-devel mailing
>>>>> list 
>>>>> qooxdoo-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/lis
>>>>> tinfo/qooxdoo-devel
>>>>> 
>>>>> --------------------------------------------------------------------------
>>>>> ----
>>>>> 
>>>>> _______________________________________________
>>>>> qooxdoo-devel mailing list
>>>>> qooxdoo-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>> 
>>>> 
>>> 
>> 
> 

----------------------------------------------------------------------------
-- _______________________________________________ qooxdoo-devel mailing
list qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to