Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [nebula-dev] SWT Transition Widget - STW proposal

Hi Jin, Ahmed

Jin :
I was not following the e4 mailing list, but the contribution of trident seems quite strange to me since when I first blogged (April 2008) about nebula animation package (previously SAT), Steve Northover mentioned that e4 was already providing an animation API. [1]

Because of this overlap, the package was introduced in Nebula only to provide animation support for custom widgets on all SWT versions, while it can still be used to animate SWT and RCP applications. It is currently used by Gallery (SmoothScrolling, expand/collapse animation) and DateTime (popup animation).

If e4 is looking for an animation library, we can provide and improve our package according to their needs. It is already included in the photo demo since it uses the gallery widget :-)

Ahmed :
Your transition implementation work as I expected. I was planning do the same on my side but I didn't have enough free time.  
I agree that transition and effects/animation are different. My idea was to add a sub package named org.eclipse.nebula.animation.transition for your code, because transitions can be though as some kind of animation. 
If I understand correctly, the UI is freezed during the transition. Am I right ? 

I'm waiting for your code to be approved so I can borrow the 3d cube implementation in the crossfade effect :-)

All : 
Current animation package in CVS includes : 

org.eclipse.nebula.animation : 
     AnimationRunner :  Object which run an animation (Timeline in trident). One animation runner can play only one effect at the same time.
              Note: each effect can have cancel and stop runnable.  Stop will be called when the effect ends normally. Cancel will be called when the animation is canceled or when the effect is replaced. This makes very easy to change an effect while it is running without any visual problems or incorrect values.
              
     ScrollingSmoother : add iphone-like scrolling on mousewheel events to  any scrollable widget. Scrolling can be exponential (standard) or elastic, bouncing, .... See [2]

org.eclipse.nebula.animation.movement    . See [3] for demo of easing equations
    (Easing : From A to B)
    BounceOut  
    ElasticOut  
    ExpoOut  
    LinearInOut  
    QuartIn  
    QuartInOut   
    QuartOut  

    (Variation : from A to A with intermediate values).
    SinusDecreaseVariation     (used by Grow)
    SinusVariation    (used by Shake)

   ... and an interface to implement you own movements in a few lines. 

org.eclipse.nebula.animation.effects   See [4] for demos  Each effect can use one or more movement to interpolate values.
   Alpha : Change alpha on a shell
   CrossFade : Crossfade two images on any target : widget, on custom object
   Grow : Change size of an object, keeping it centered with elastic effect.
   MoveControl : Change x,y of a Control/Widget
   MoveScrollbar : Change scrollbar position.
   Parallel : Run several effects at the same time
   ResizeEffect : Resize a control, from the bottom left corner.
   SequenceEffect : Run several effects one after another.
   SetBounds : Change all bounds of a widget
   SetColor : Change color of a widget or any custom object  
   ShakeEffect : See 'wrong password effect' on OSX

  ... and an abstract class to implement your own effects in a few lines.


Planned : 
    Support for loop, reverse in AnimationRunner
    PropertyEffect, similar to Trident.




Note : I also use this package to animate OpenGL objects in my RCP application [5]

Well, I got to copy/paste all this into the nebula wiki :-)

[5] http://blog.richeton.com/2008/05/28/sharemedia-032-released/
-- 
Nicolas


Le 8 janv. 2010 à 08:25, Jin Mingjian a écrit :

such as, http://dev.eclipse.org/mhonarc/lists/e4-dev/msg02118.html

I guess there are some overlappings in your, nebula, and their works . But the collaboration seem hard according to their license problem:)  But at least it is useful to plan the future of work:)


2010/1/8 Ahmed Mahran <ahmahran@xxxxxxxxx>
I'm new to the mailing list and I think I missed what e4 said. Would you please explain more?

2010/1/8 Jin Mingjian <jin.phd@xxxxxxxxx>

seem cool. e4 said a potential animation contribution called Trident some days ago. is it possible to merge all the effort?

2010/1/8 Ahmed Mahran <ahmahran@xxxxxxxxx>

Hi Nicolas,

Thank you for your nice comment.
Your idea sounds great. First, let me clarify some points. In Transition package, widgets themselves are not animated but their images are instead. During the transition, widgets are hidden below a canvas where their images are shown being animated so any event from user input will not be dispatched to the hidden widgets. So, in Transition package, an extra widget is needed to show the transition. Widgets are animated by changing their limited visual properties that one can reach directly like (visibility, position, size, colors). However, animating images gives more variety. So we can end up with two kinds of animation: widget animation and image animation.

So, what I see is that:
- Animation package could be extended with image/pixel animation to animate a single image.
- A transition package is still needed to carry out the logic of imaging widgets and transitioning.

Regards,
ahmahran

2010/1/6 Nicolas Richeton <nicolas.richeton@xxxxxxxxx>

Hi Ahmahran,

I just want to say that your transition effects are great, especially the 3D cubic one.

We have an animation package in nebula, currently in Gallery but will move in CWT (common code for Nebula widgets) eventually. This package implements several movements ( linear, elastic, expo, bounce)  and effects (move, resize, fade, set color, shake, crossfade images) which can be applied on widgets. If I understand your work correctly, it is able to transition between 2 widgets or tabs. This is totally cool and does not exist in our animation package.

Since we already have some animation/transition code and since your code is not a widget, it may be a good idea to add your code to the animation package instead of creating a new project. This way we could add support for different movements in Transition and  provide new effects based on your transitions.

We probably need an official creation for CWT (it is already on CVS) for this and I don't think it has been done already.

In all cases (new project or not), you will have to get your code reviewed and to become a Nebula committer.

What would you think of this ? (This question goes for all Nebula committers too :-) )
--
Nicolas





Le 5 janv. 2010 à 21:21, Tom Schindl a écrit :

> Hi ahmahran,
>
> The start of bringing in a widget to Nebula is to create a bugzilla
> using this URL [1] and attach the source code to a bug.
>
> In nebula every widget is an independent OSGi-Bundle and normally the
> only dependencies are SWT and JFace-Libaries and so the correct bundle
> is going to be "org.eclipse.nebula.widgets.stw" or
> "org.eclipse.nebula.widgets.jstw" but for a review this is not necessary.
>
> Please CC me on the bug a post the bug-id to this list
>
> Thanks
>
> Tom
>
> [1]https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Nebula
>
> Am 05.01.10 21:01, schrieb Ahmed Mahran:
>> Hello,
>>
>> I would like to have the honor and to bring my recently published
>> project "SWT Transition Widget (STW)" to Nebula. STW is a java project
>> to add fancy effects to SWT GUI. Users would enjoy wandering around
>> views with smooth transition effect. Currently implemented transitions
>> are : (3D cubic rotations, translation, fade). You can watch demos
>> at http://www.youtube.com/view_play_list?p=2569B36FF288D795
>> <http://www.youtube.com/view_play_list?p=2569B36FF288D795>
>>
>> The project is currently hosted at SourceForge
>> <http://sourceforge.net/projects/jstw/> (http://sourceforge.net/projects/jstw/
>> <http://sourceforge.net/projects/jstw/>)
>>
>> Regards,
>> ahmahran
>>
>>
>>
>> _______________________________________________
>> nebula-dev mailing list
>> nebula-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/nebula-dev
>
> _______________________________________________
> nebula-dev mailing list
> nebula-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/nebula-dev

_______________________________________________
nebula-dev mailing list
nebula-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/nebula-dev


_______________________________________________
nebula-dev mailing list
nebula-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/nebula-dev



_______________________________________________
nebula-dev mailing list
nebula-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/nebula-dev



_______________________________________________
nebula-dev mailing list
nebula-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/nebula-dev


_______________________________________________
nebula-dev mailing list
nebula-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/nebula-dev


Back to the top