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 (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.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
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> 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
>>>>>
>>>>>
>>>> ------------------------------------------------------------------------------
>>>> _______________________________________________ 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