1. #11
    Sencha User scipio's Avatar
    Join Date
    Nov 2007
    Posts
    38
    Vote Rating
    0
    scipio is on a distinguished road

      0  

    Default


    Quote Originally Posted by xiexueze View Post
    Code:
    handleMouseDown function: 
    
    if (this.clickValidator(e)) {
    	this.setStartPosition(); // Set the initial element position
    	this.b4MouseDown(e);
    	this.onMouseDown(e);
    	this.DDM.handleMouseDown(e, this);
    				
    	this.tabpanel.onStripMouseDown(e);//active the click tab
    	
    	this.DDM.stopEvent(e); // Must remove this event swallower for the tabpanel to work
    }
    
    endDrag function:
    
    Ext.dd.DDM.useCache = true;
    Ext.dd.DDM.mode = 0;//set the mode
    hope this is userful
    Thanks for the tip. I should have mentioned that for apps that have overlapping drag/drop implementations and/or mousedown listeners, users should expect to tweak the event handling. The event listeners timings can get a bit hairy due to the fact that the extension already has multiple mousedown listeners, so if you add any additional mousedown listeners on top of the 2 pre-existing ones, expect a little tweaking to get everything to play nice.

  2. #12
    Sencha - Ext JS Dev Team evant's Avatar
    Join Date
    Apr 2007
    Location
    Sydney, Australia
    Posts
    17,000
    Vote Rating
    650
    evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute evant has a reputation beyond repute

      0  

    Default


    Very cool, nicely done.
    Evan Trimboli
    Sencha Developer
    Twitter - @evantrimboli
    Don't be afraid of the source code!

  3. #13
    Sencha User
    Join Date
    May 2008
    Location
    Christchurch, New Zealand
    Posts
    6
    Vote Rating
    0
    meesham is on a distinguished road

      0  

    Default


    I really like this, thanks for you work. I've noticed one problem where if you only have 1 tab and you drag it it throws an error. It's on line 156, this.targetProxy is null in this case. I fix it I just put line 156 and 157 inside an if statement checking that this.targetProxy is an object.

  4. #14
    Sencha User
    Join Date
    Jan 2010
    Posts
    13
    Vote Rating
    0
    ozum is on a distinguished road

      0  

    Default Very Nice

    Very Nice


    Very nice, thank you for sharing.

  5. #15
    Sencha User scipio's Avatar
    Join Date
    Nov 2007
    Posts
    38
    Vote Rating
    0
    scipio is on a distinguished road

      0  

    Default


    Quote Originally Posted by meesham View Post
    I really like this, thanks for you work. I've noticed one problem where if you only have 1 tab and you drag it it throws an error. It's on line 156, this.targetProxy is null in this case. I fix it I just put line 156 and 157 inside an if statement checking that this.targetProxy is an object.
    Thanks for the heads up. I added the fix.

  6. #16
    Sencha User
    Join Date
    Sep 2009
    Posts
    13
    Vote Rating
    0
    NateWorcester is on a distinguished road

      0  

    Default


    Hi Scipio!

    I wanted to say that i LOVE your sliding tabs component and I was curious if you had any plans to release it under a different license like BSD. I'd love to use it in an application i'm building but i can't use anything with GPL.

    Thanks!
    -Nate

  7. #17
    Sencha User scipio's Avatar
    Join Date
    Nov 2007
    Posts
    38
    Vote Rating
    0
    scipio is on a distinguished road

      0  

    Default Permissive License Issue

    Permissive License Issue


    Quote Originally Posted by NateWorcester View Post
    I was curious if you had any plans to release it under a different license like BSD. I'd love to use it in an application i'm building but i can't use anything with GPL.
    Hi Nate, I would love to release the extension under a license other than the GPL, but I don't think I can and I'll explain why.

    A. FLOSS Exception, or Open Source License Exception for Development License: Can I release the extension under an MIT, BSD, or other permissive license using ExtJS's FLOSS exception to the GPL?

    No, because the FLOSS Exception states in section 2 (a): You are free to distribute an Extension licensed under one or more of the licenses listed below in section 5, as long as:, Your Extension does not contain any Code or modified Code from the Library.

    The slidingTabs extension does invoke and override several methods of the Ext.TabPanel, and for at least 1 method, I directly copied some code in the Ext JS 'library' into my overrided method. Therefore, it contains modified code from the library.

    Perhaps my understanding of 'modified code' is overly broad because it implies that virtually no one can use the FLOSS exception, but since the Ext JS team provides no examples or guidance on the matter, I must assume that I fall outside the exception.

    B. Commercial License: If I had a commercial license for extJS, could I release the extension under a commercia license?

    No, because the commercial license agreement states in section (4): You are explicitly not allowed to redistribute the Software or Modifications as part of any product that can be described as a development toolkit or library or is intended for use by software developers and not end-users.

    My reading of this indicates to me that since my extension is a modification of the ExtJS library and is directed to developers instead of end-users, it is a prohibited use for a commercial license.

    I would love to hear from the community and/or the ExtJS dev team as to why I am wrong, because I would like to release some extensions under a more permissive license and for some extensions I would like to sell a commercial license.

    Please do not tell me to email licensing@extjs.com, I have tried that several times, and they have not answered my questions.

    All feedback, however, is strongly encouraged.

  8. #18
    Sencha User
    Join Date
    Sep 2009
    Posts
    13
    Vote Rating
    0
    NateWorcester is on a distinguished road

      0  

    Default


    Quote Originally Posted by scipio View Post
    You are free to distribute an Extension licensed under one or more of the licenses listed below in section 5, as long as:, Your Extension does not contain any Code or modified Code from the Library.
    For the definition of modified code, see also this, taken from the Ext License FAQ:

    The simple rule to follow is if you modify any functionality or file in an Ext product for a purpose other than configuration, you have created a modification. All modifications naturally are covered by the GPL v3 license. Additional information is available in the official GPL FAQ.
    The following are examples of modifications:

    * Modify Ext JavaScript, Java or CSS source file
    * Extend Ext class or override any Ext functions or methods
    * Modifying an Ext API
    So if i understand this correctly:

    You may release any extension under a permissive license so long as you are changing anything from Ext. Does that sound correct?

    I'd like for the Ext team to give us an example of an extension that CAN be released under a permissive license. If you were to take the phrase "modify any functionality" literally then only extensions which don't do anything would be allowed.

    However, It would seem that you could make the following changes to your code and it would be free of 'modified code':

    1) Change it to a plugin instead of a tabpanel sub class
    2) In the plugin, instead of overriding the original tab panel method, setup your init tab method as a sequence of the original method.

    You would still be "modifying functionality"

    Thoughts?

  9. #19
    Sencha - Community Support Team mschwartz's Avatar
    Join Date
    Nov 2008
    Location
    San Diego, Peoples' Republic of California
    Posts
    2,053
    Vote Rating
    17
    mschwartz will become famous soon enough mschwartz will become famous soon enough

      0  

    Default


    I cannot believe that the Ext license is so restrictive that you cannot even pay for a license and extend a class without making your whole product GPL.

  10. #20
    Sencha User
    Join Date
    Sep 2009
    Posts
    13
    Vote Rating
    0
    NateWorcester is on a distinguished road

      0  

    Default


    Quote Originally Posted by mschwartz View Post
    I cannot believe that the Ext license is so restrictive that you cannot even pay for a license and extend a class without making your whole product GPL.
    The restriction on modifications does not apply to your project if you have a license. However, you if you release your modifications, they must be released under GPL.

    This doesn't make any sense to me. In order for me to use Ext itself in a commercial project, I have to pay for a license. So in order to use any extensions to Ext in my project, no matter what the license is, I will have already paid for my Ext license.

    So the way I see it, Ext extensions should allow for any license except for one that requires the user to pay (you would need an Ext OEM license to sell extensions).

    Say this plugin was released under a permissive license like MIT. There are two cases:
    1) I use it an open source project. Ext doesn't get paid because I don't need to pay for an Ext license.
    2) I use it in a commercial project. Ext gets paid since I would need an Ext commercial license to use the plugin in a commercial project.

    It seems to me that the existing licensing model is too restrictive, even stifling to the community. If i build an extension and release it here, it can only be used in GPL software, even if i don't care who uses it!

    Ext extensions could even be released under the Ext license (unless i have an OEM license): If you paid for Ext, you can use the extension in your commercial project. Otherwise, you can't! It could be that simple.