ANIMATOR : Changed Animator Timeline UI/UX 48/21748/3
authorjinwooim.bae <jinwooim.bae@samsung.com>
Tue, 27 May 2014 08:32:41 +0000 (17:32 +0900)
committerjinwooim.bae <jinwooim.bae@samsung.com>
Tue, 27 May 2014 10:10:40 +0000 (19:10 +0900)
New UI is applied Animator's Timeline.

Change-Id: I9768b56e80dfca10b0e515aed986adaa2e2ebcb7
Signed-off-by: jinwooim.bae <jinwooim.bae@samsung.com>
66 files changed:
org.tizen.webuibuilder/plugin.xml
org.tizen.webuibuilder/res/icons/animator_keyframes_extention_handle.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_out_push.png with 91% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_backward_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_backward_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_backward_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_predefined_keyframe.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_ease.png
org.tizen.webuibuilder/res/icons/animator_toolbar_ease_in.png
org.tizen.webuibuilder/res/icons/animator_toolbar_ease_inout.png
org.tizen.webuibuilder/res/icons/animator_toolbar_ease_linear.png
org.tizen.webuibuilder/res/icons/animator_toolbar_ease_out.png
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_hover.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_normal.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_push.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_hover.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_normal.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_out_hover.png with 89% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_push.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_forward_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_forward_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_forward_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_play_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_play_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_play_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_hover.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_in_push.png with 86% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_normal.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_handle_normal.png with 86% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_push.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_handle_push.png with 86% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_hover.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_in_hover.png with 85% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_normal.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_push.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_stop_hover.png
org.tizen.webuibuilder/res/icons/animator_toolbar_stop_normal.png
org.tizen.webuibuilder/res/icons/animator_toolbar_stop_push.png
org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_panel.png with 92% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_hover.png [moved from org.tizen.webuibuilder/res/icons/animator_toolbar_time_text.png with 91% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_input_text.png [moved from org.tizen.webuibuilder/res/icons/animator_zoom_out_normal.png with 90% similarity]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_hover.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_normal.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_push.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_hover.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_normal.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_push.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_view_timeline.png [new file with mode: 0644]
org.tizen.webuibuilder/res/icons/animator_zoom_in_normal.png [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/TimelineContentContainer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/TimelineContextMenu.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/TimelineMainContainer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/TimelinePage.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/TimelineViewer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/common/TimelineConstants.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/common/TimelineMessages.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/common/TimelineMessages.properties
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/PlayHeader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/TimeBar.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/TimeBarRenderer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/TimelineContentHeaderContainer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/TimelineOutlineHeader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/tool/TimelineContentToolsContainer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/tool/TimelineToolbar.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/tree/TimelineOutlineElement.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/widget/KeyFrameUnit.java

index 238e0e7..45f47a9 100644 (file)
       <view
             category="org.tizen.nativeapp.viewCategory"
             class="org.tizen.webuibuilder.animator.ui.views.timeline.TimelineView"
+            icon="res/icons/animator_view_timeline.png"
             id="org.tizen.webuibuilder.animator.ui.views.timeline.TimelineView"
             name="%timeline"
             restorable="true">
similarity index 91%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_out_push.png
rename to org.tizen.webuibuilder/res/icons/animator_keyframes_extention_handle.png
index cba895e..b925b1c 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_out_push.png and b/org.tizen.webuibuilder/res/icons/animator_keyframes_extention_handle.png differ
index 7233d70..6855cb7 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_hover.png differ
index af27ee5..41cc06b 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_normal.png differ
index 830bdd3..1504f60 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_backward_push.png differ
index 8c42edd..a440206 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_hover.png differ
index 5854834..384661e 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_predefined_keyframe.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_predefined_keyframe.png
new file mode 100644 (file)
index 0000000..48e3397
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_predefined_keyframe.png differ
index a703cf2..898f595 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_dropdown_push.png differ
index f4a2587..4319396 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_ease.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_ease.png differ
index 484fcde..f8a4117 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_in.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_in.png differ
index f4a2587..4319396 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_inout.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_inout.png differ
index 85c9071..371a810 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_linear.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_linear.png differ
index 41fbdc8..34090f9 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_out.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_ease_out.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_hover.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_hover.png
new file mode 100644 (file)
index 0000000..cbb9e87
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_hover.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_normal.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_normal.png
new file mode 100644 (file)
index 0000000..fb8555b
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_push.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_push.png
new file mode 100644 (file)
index 0000000..281fb56
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_push.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_hover.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_hover.png
new file mode 100644 (file)
index 0000000..cbc91a1
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_hover.png differ
similarity index 89%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_out_hover.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_normal.png
index 4ee58fd..ab301f2 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_out_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_push.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_push.png
new file mode 100644 (file)
index 0000000..8c135fa
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_filter_selected_push.png differ
index 9dc8bdd..7b7c6b9 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_hover.png differ
index 8996399..259d650 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_normal.png differ
index 36019db..0977b6c 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_forward_push.png differ
index 9bc77a9..630c4a7 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_play_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_play_hover.png differ
index 8efac0c..06c2dd9 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_play_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_play_normal.png differ
index 2cf20d6..ff63018 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_play_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_play_push.png differ
index 391d7e4..3863b94 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_hover.png differ
index 61d6bb1..e377fe8 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_normal.png differ
index 644f5a8..f73d789 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_repeat_push.png differ
similarity index 86%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_in_push.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_snap_hover.png
index 2b79fcc..e0cffd0 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_in_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_hover.png differ
similarity index 86%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_handle_normal.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_snap_normal.png
index b7ccaec..782c462 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_handle_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_normal.png differ
similarity index 86%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_handle_push.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_snap_push.png
index 5bc3e03..2990e60 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_handle_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_push.png differ
similarity index 85%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_in_hover.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_hover.png
index ee303fe..6e3b0a0 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_in_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_hover.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_normal.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_normal.png
new file mode 100644 (file)
index 0000000..8d91c25
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_push.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_push.png
new file mode 100644 (file)
index 0000000..53488ad
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_snap_selected_push.png differ
index bf31ecb..db4f986 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_hover.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_hover.png differ
index 9d8480c..f358201 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_normal.png differ
index ae22032..367ea0a 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_push.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_stop_push.png differ
similarity index 92%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_panel.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window.png
index 2ff300d..45ac510 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_panel.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window.png differ
similarity index 91%
rename from org.tizen.webuibuilder/res/icons/animator_toolbar_time_text.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_hover.png
index e0a2519..4b30346 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_toolbar_time_text.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_hover.png differ
similarity index 90%
rename from org.tizen.webuibuilder/res/icons/animator_zoom_out_normal.png
rename to org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_input_text.png
index fc28e3c..c398192 100644 (file)
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_out_normal.png and b/org.tizen.webuibuilder/res/icons/animator_toolbar_time_input_window_input_text.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_hover.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_hover.png
new file mode 100644 (file)
index 0000000..199ab70
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_hover.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_normal.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_normal.png
new file mode 100644 (file)
index 0000000..9f8f624
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_push.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_push.png
new file mode 100644 (file)
index 0000000..9618e17
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_minus_push.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_hover.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_hover.png
new file mode 100644 (file)
index 0000000..11b4056
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_hover.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_normal.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_normal.png
new file mode 100644 (file)
index 0000000..446f601
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_normal.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_push.png b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_push.png
new file mode 100644 (file)
index 0000000..a6a8db5
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_toolbar_timeline_zoom_plus_push.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_view_timeline.png b/org.tizen.webuibuilder/res/icons/animator_view_timeline.png
new file mode 100644 (file)
index 0000000..d4f09b8
Binary files /dev/null and b/org.tizen.webuibuilder/res/icons/animator_view_timeline.png differ
diff --git a/org.tizen.webuibuilder/res/icons/animator_zoom_in_normal.png b/org.tizen.webuibuilder/res/icons/animator_zoom_in_normal.png
deleted file mode 100644 (file)
index 40be1e5..0000000
Binary files a/org.tizen.webuibuilder/res/icons/animator_zoom_in_normal.png and /dev/null differ
index 23e8360..7d6a3cd 100644 (file)
@@ -39,7 +39,6 @@ import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.ScrollBar;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.swt.widgets.TreeItem;
@@ -105,7 +104,8 @@ public class TimelineContentContainer extends Composite {
         contentHeaderContainer = new TimelineContentHeaderContainer(this, SWT.NONE);
         FormData contentHeaderContainerFormData = new FormData();
         contentHeaderContainerFormData.top = new FormAttachment(0);
-        contentHeaderContainerFormData.bottom = new FormAttachment(0, TimelineConstants.DEFAULT_TIMEBAR_HEIGHT);
+        contentHeaderContainerFormData.bottom =
+                new FormAttachment(0, TimelineConstants.DEFAULT_TIMEBAR_HEIGHT);
         contentHeaderContainerFormData.left = new FormAttachment(0);
         contentHeaderContainerFormData.right = new FormAttachment(100);
         contentHeaderContainer.setLayoutData(contentHeaderContainerFormData);
@@ -117,7 +117,7 @@ public class TimelineContentContainer extends Composite {
 
         FormData contentTreeContainerFormData = new FormData();
         contentTreeContainerFormData.top = new FormAttachment(contentHeaderContainer, 0);
-        contentTreeContainerFormData.bottom = new FormAttachment(100, -25);
+        contentTreeContainerFormData.bottom = new FormAttachment(100, -20);
         contentTreeContainerFormData.left = new FormAttachment(0, 0);
         contentTreeContainerFormData.right = new FormAttachment(100, 0);
         contentTreeContainer.setLayoutData(contentTreeContainerFormData);
@@ -134,7 +134,7 @@ public class TimelineContentContainer extends Composite {
         // Content Tools Container
         contentToolsContainer = new TimelineContentToolsContainer(this, SWT.NONE);
         FormData contentToolsContainerFormData = new FormData();
-        contentToolsContainerFormData.top = new FormAttachment(contentTreeContainer, 3);
+        contentToolsContainerFormData.top = new FormAttachment(contentTreeContainer);
         contentToolsContainerFormData.bottom = new FormAttachment(100);
         contentToolsContainerFormData.left = new FormAttachment(0);
         contentToolsContainerFormData.right = new FormAttachment(100);
@@ -217,44 +217,6 @@ public class TimelineContentContainer extends Composite {
             }
         });
 
-        // Scale changing
-        contentToolsContainer.getScale().addListener(SWT.Selection, new Listener() {
-            @Override
-            public void handleEvent(Event event) {
-                Scale scaler = (Scale) event.widget;
-
-                TimeBar timeBar = contentHeaderContainer.getKeyframeHeader().getTimeBar();
-
-                int currentValue = scaler.getSelection();
-                double timeScale = 0.0d;
-                switch (currentValue) {
-                    case 1:
-                        timeScale = TimeBar.SCALE_50;
-                        scaler.setToolTipText("50%");
-                        break;
-                    case 2:
-                        timeScale = TimeBar.SCALE_100;
-                        scaler.setToolTipText("100%");
-                        break;
-                    case 3:
-                        timeScale = TimeBar.SCALE_200;
-                        scaler.setToolTipText("200%");
-                        break;
-                    case 4:
-                        timeScale = TimeBar.SCALE_400;
-                        scaler.setToolTipText("400%");
-                        break;
-                }
-                timeBar.setScale(timeScale);
-                timeBar.redraw();
-
-                PlayHeader marker = timeBar.getPlayHeader();
-                marker.draw(true);
-
-                refeshTimeline();
-            }
-        });
-
         // H Scroll change
         contentToolsContainer.gethScroll().addSelectionListener(new SelectionListener() {
             @Override
@@ -282,22 +244,6 @@ public class TimelineContentContainer extends Composite {
             }
         });
 
-        // filter
-        contentToolsContainer.getFilter().addSelectionListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                boolean isFilter = contentToolsContainer.isFilter();
-                contentToolsContainer.setFilter(!isFilter);
-                viewer.refreshClickedFilter();
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                // TODO Auto-generated method stub
-
-            }
-        });
     }
 
     /**********************************************************************************************
@@ -353,7 +299,7 @@ public class TimelineContentContainer extends Composite {
     /**
      * Refresh tree items in timeline
      */
-    private void refeshTimeline() {
+    public void refeshTimeline() {
         TreeItem[] items = contentTree.getItems();
         for (TreeItem item : items) {
             TreeItem[] childItems = item.getItems();
@@ -403,13 +349,14 @@ public class TimelineContentContainer extends Composite {
         } else {
             hScroll.setMaximum(lastTimeSel + TimelineConstants.DEFAULT_HSCROLL_EXPANSION);
         }
-        
+
         if (scrollMove == 1 || scrollMove == 2) {
-            hScroll.setSelection(lastTimeSel - TimelineConstants.DEFAULT_HSCROLL_EXPANSION);
+            hScroll.setSelection(lastTimeSel);
         }
-        
+
         // start Time
-        if ((path == 0 && (startTime <= MINT_TIMEPOINT)) || ((pointTime <= MINT_TIMEPOINT) && scrollMove == 2)) {
+        if ((path == 0 && (startTime <= MINT_TIMEPOINT))
+                || ((pointTime <= MINT_TIMEPOINT) && scrollMove == 2)) {
             startTime = 0;
             hScroll.setSelection(0);
         } else if (scrollMove == 2) {
@@ -417,7 +364,8 @@ public class TimelineContentContainer extends Composite {
             startTime = (pointTime - MINT_TIMEPOINT);
         } else {
             // last Time
-            startTime = (int) (startTime + ((incrementSize / timeBar.getScale()) * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL));
+            startTime =
+                    (int) (startTime + ((incrementSize / timeBar.getScale()) * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL));
         }
 
         if (scrollMove == 1 || scrollMove == 2) {
index 255b105..323691f 100644 (file)
@@ -69,7 +69,9 @@ public class TimelineContextMenu extends ContextMenu {
     private MenuManager buildContextPredefineMenu() {\r
 \r
         IAction action = null;\r
-        MenuManager addPKeyframes = new MenuManager(TimelineMessages.ADD_PREDEFINED_KEYFRAME);\r
+        MenuManager addPKeyframes =\r
+                new MenuManager(TimelineMessages.ADD_PREDEFINED_KEYFRAME,\r
+                                TimelineMessages.ADD_PREDEFINED_KEYFRAME);\r
 \r
         AppManager appManager = AnimatorUtils.getAppManager();\r
         AnimatorDescriptorManager manager = AnimatorDescriptorManager.getInstance(appManager);\r
@@ -97,7 +99,7 @@ public class TimelineContextMenu extends ContextMenu {
                         }\r
                     }\r
                     if (isFind == false) {\r
-                        preDefineKeyFrames = new MenuManager(category);\r
+                        preDefineKeyFrames = new MenuManager(category, category);\r
                         addPKeyframes.add(preDefineKeyFrames);\r
                     }\r
                 }\r
index 6fe7ed9..7124877 100644 (file)
@@ -88,7 +88,7 @@ public class TimelineMainContainer extends Composite {
 
         FormData contentContainerFormData = new FormData();
         contentContainerFormData.top = new FormAttachment(toolbar, 1);
-        contentContainerFormData.bottom = new FormAttachment(100, -3);
+        contentContainerFormData.bottom = new FormAttachment(100, 0);
         contentContainerFormData.left = new FormAttachment(0, 7);
         contentContainerFormData.right = new FormAttachment(100, -7);
 
index 2b5dfa4..a888563 100644 (file)
@@ -121,6 +121,7 @@ public class TimelinePage extends ContentOutlinePage {
 
     /*
      * (non-Javadoc)
+     * 
      * @see org.eclipse.ui.part.Page#setActionBars(org.eclipse.ui.IActionBars)
      */
     @Override
@@ -327,7 +328,7 @@ public class TimelinePage extends ContentOutlinePage {
             actionBars.updateActionBars();
         }
     }
-    
+
     /**
      * Change mode Animator Editor or Designer Editor
      * 
@@ -403,8 +404,7 @@ public class TimelinePage extends ContentOutlinePage {
                 // refresh h-scroll
                 getMainContainer().getContentContainer().refreshHScroll(0, 0, 0, 0);
                 // refresh filter
-                getMainContainer().getContentContainer().getContentToolsContainer()
-                        .setFilter(false);
+                getMainContainer().getTimelineToolbar().setFilter(false);
                 if (animatorBrowserViwer != null && viewer != null) {
                     viewer.refreshTimelineViewer();
                     viewer.setContents(model);
index a1cbf3b..bf78735 100644 (file)
@@ -569,9 +569,7 @@ public class TimelineViewer extends TreeViewer implements ISelectionChangedListe
         Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
-                boolean isFilter =
-                        getMainContainer().getContentContainer().getContentToolsContainer()
-                                .isFilter();
+                boolean isFilter = getMainContainer().getTimelineToolbar().isFilter();
                 if (isFilter == true) {
                     applyfilter();
                 } else {
@@ -593,9 +591,7 @@ public class TimelineViewer extends TreeViewer implements ISelectionChangedListe
         Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
-                boolean isFilter =
-                        getMainContainer().getContentContainer().getContentToolsContainer()
-                                .isFilter();
+                boolean isFilter = getMainContainer().getTimelineToolbar().isFilter();
                 if (isFilter == true) {
                     if (isAdd == true) {
                         boolean isExist = findModelInTree(model);
@@ -884,12 +880,12 @@ public class TimelineViewer extends TreeViewer implements ISelectionChangedListe
 
         @Override
         public void animationAdd(AnimatorModelEvent e) {
-            getMainContainer().getContentContainer().getContentToolsContainer().setFilter(false);
+            getMainContainer().getTimelineToolbar().setFilter(true);
         }
 
         @Override
         public void animationRemove(AnimatorModelEvent e) {
-            getMainContainer().getContentContainer().getContentToolsContainer().setFilter(false);
+            getMainContainer().getTimelineToolbar().setFilter(false);
         }
 
         @Override
index 257c7cf..78c1bb1 100644 (file)
@@ -38,13 +38,14 @@ public class TimelineConstants {
     public static final int DEFAULT_LIFE_WIDGET_MIN_WIDTH = 10;
 
     public static final int DEFAULT_KEYFRAME_CONTROL_HEIGHT = 5;
+    public static final int DEFAULT_KEYFRAME_CONTROL_WIDTH = 11;
 
     public static final int DEFAULT_FRAME_WIDGET_WIDTH = 13;
     public static final int DEFAULT_FRAME_WIDGET_HEIGHT = 13;
     public static final int DEFAULT_FRAME_WIDGET_HALF_WIDTH = 6;
     public static final int DEFAULT_FRAME_WIDGET_CENTER_POINT = 7;
-    public static final int DEFAULT_FRAME_WIDGET_MARGIN = DEFAULT_KEYFRAME_MARGIN + 1 ;
-    public static final int DEFAULT_FRAME_WIDGET_MARGIN_LINUX = DEFAULT_KEYFRAME_MARGIN_LINUX + 1 ;
+    public static final int DEFAULT_FRAME_WIDGET_MARGIN = DEFAULT_KEYFRAME_MARGIN + 1;
+    public static final int DEFAULT_FRAME_WIDGET_MARGIN_LINUX = DEFAULT_KEYFRAME_MARGIN_LINUX + 1;
 
     public static final int DEFAULT_TIMELINE_LEFT_MARGIN = 3;
     public static final int DEFAULT_TIMEBAR_HEIGHT = 26;
@@ -74,9 +75,9 @@ public class TimelineConstants {
     public static final int DEFAULT_TREE_SEPERATORCOLUMN_WIDTH = 0;
     public static final int DEFAULT_TREE_KEYFRAMECOLUMN_WIDTH = 100;
     public static final int DEFAULT_TREE_KEYFRAMECOLUMN_MIN_WIDTH = 50;
-    
+
     public static final int DEFAULT_SASH_SEPERATOR_MARGIN_WIDTH = 11;
-    
+
     public static final int DEFAULT_TIMELINE_TREE_HEIGHT = 23;
     public static final int DEFAULT_TIMELINE_TREE_HEIGHT_LINUX = 22;
     public static final int DEFAULT_TIMELINE_TREEITEM_HEIGHT = 21;
index 0382b3e..5e06aad 100644 (file)
@@ -38,7 +38,7 @@ public class TimelineMessages {
     public static String PASTE_KEYFRAME;
 
     public static String Z_ORDER;
-    
+
     public static String NEW_ANIMATION_GROUP;
     public static String DELETE_ANIMATION_GROUP;
     public static String EDIT_ANIMATION_GROUP;
@@ -81,6 +81,11 @@ public class TimelineMessages {
     public static String START_TIME;
     public static String END_TIME;
 
+    public static String FILTER;
+
+    public static String ZOOM_IN;
+    public static String ZOOM_OUT;
+
     static {
         NLS.initializeMessages(BUNDLE_NAME, TimelineMessages.class);
     }
index 9c5de08..63e06f9 100644 (file)
@@ -31,8 +31,8 @@ WARNING = Warning
 NOTICE = Notice
 NONE = NONE
 
-FORWARD = Move 0s
-BACKWARD = Move last KeyFrame
+FORWARD = Move last KeyFrame
+BACKWARD = Move 0s
 PLAY = Play
 STOP = Stop
 REPEAT = Repeat
@@ -50,3 +50,8 @@ ANIMATIONS = Animations -
 PLAY_TIME = Play Time - 
 START_TIME = Start Time - 
 END_TIME = End Time - 
+
+FILTER = Filter
+
+ZOOM_IN = Zoom In
+ZOOM_OUT = Zoom Out
index 7585dfb..56bc1f8 100644 (file)
@@ -142,8 +142,8 @@ public class PlayHeader extends Composite {
                         setPositionMarker(TimelineConstants.DEFAULT_TIMELINE_TIMEBAR_0);
                         setCurrentPointTime(0);
                     } else {
-                        setPositionMarker((rMarker.x - mouseDownPoint + e.x) * TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL);
-                        setLocation(getPositionMarker() / TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL,
+                        setPositionMarker((rMarker.x - mouseDownPoint + e.x));
+                        setLocation(getPositionMarker(),
                                     TimelineConstants.DEFAULT_TIMELINE_MARKER_Y);
                     }
 
@@ -205,7 +205,7 @@ public class PlayHeader extends Composite {
             this.setLocation(TimelineConstants.DEFAULT_TIMELINE_TIMEBAR_0,
                              TimelineConstants.DEFAULT_TIMELINE_MARKER_Y);
         } else {
-            int timelineMarkerX = (int) ((getCurrentPointTime() * scale) - (startTime * scale)) / TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL ;
+            int timelineMarkerX = (int) ((getCurrentPointTime() * scale) - (startTime * scale)) / TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL;
             this.setLocation(timelineMarkerX, TimelineConstants.DEFAULT_TIMELINE_MARKER_Y);
         }
         
@@ -260,10 +260,9 @@ public class PlayHeader extends Composite {
      */
     public int getPlayHeaderTime() {
         double scale = ((TimeBar) getParent()).getScale();
-        double startTime = ((TimeBar) getParent()).getStartTime();
+        int startTime = ((TimeBar) getParent()).getStartTime();
 
-        return (int) (((positionMarker / scale) + (startTime)));
-                /// TimelineConstants.DEFAULT_TIME_MILLISECOND;
+        return (int) (((positionMarker/scale)*TimelineConstants.DEFAULT_TIME_INTERVAL + (startTime)));
     }
 
     /**
index 340ab6e..3bf538f 100644 (file)
@@ -174,7 +174,7 @@ public class TimeBar extends Canvas {
         toolBar.stopPlaying();
 
         playHeader.setLocation(positionTime / TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL, playHeader.getBounds().y);
-        playHeader.setPositionMarker(positionTime);
+        playHeader.setPositionMarker(positionTime / TimelineConstants.DEFAULT_CONVERTTIME_POSITION_INTERVAL);
 
         int pointTime = playHeader.getPlayHeaderTime();
         playHeader.setCurrentPointTime(pointTime);
index 12ebc61..9e2178b 100644 (file)
@@ -103,9 +103,9 @@ public class TimeBarRenderer {
                 drawTimeString(gc, startTime, xPixel, -1);
                 gc.drawLine(xPixel, 0, xPixel, rt.height);
             } else if (startTime % 5 == 0) {
-                gc.drawLine(xPixel, rt.height - 8, xPixel, rt.height);
+                gc.drawLine(xPixel, rt.height - 12, xPixel, rt.height);
             } else {
-                gc.drawLine(xPixel, rt.height - 4, xPixel, rt.height);
+                gc.drawLine(xPixel, rt.height - 6, xPixel, rt.height);
             }
         }
 
index 2313543..9a45380 100644 (file)
@@ -52,7 +52,7 @@ public class TimelineContentHeaderContainer extends Composite {
     private TimelineOutlineHeader outlineHeader = null;
     private TimelineKeyframeHeader keyframeHeader = null;
 
-    private static final int OUTLINE_HEADER_MIN_WIDTH = 225;
+    private static final int OUTLINE_HEADER_MIN_WIDTH = 250;
     private static final int OUTLINE_HEADER_MAX_WIDTH = 450;
 
     private boolean isMinWidth = false;
@@ -156,7 +156,7 @@ public class TimelineContentHeaderContainer extends Composite {
         // Keyframe Header
         keyframeHeader = new TimelineKeyframeHeader(contentHeadersashForm, SWT.BORDER);
 
-        contentHeadersashForm.setWeights(new int[] { 225, 666 });
+        contentHeadersashForm.setWeights(new int[] { 263, 900 });
     }
 
     /**
index 0eca333..5b54933 100644 (file)
@@ -168,6 +168,7 @@ public class TimelineOutlineHeader extends Composite {
         menuDropDownButtonFormData.top = new FormAttachment(0, 1);
         menuDropDownButtonFormData.right = new FormAttachment(100);
         menuDropDownButton.setLayoutData(menuDropDownButtonFormData);
+        menuDropDownButton.setToolTipText(TimelineMessages.ADD_PREDEFINED_KEYFRAME);
 
         menuDropDownButton.addPaintListener(new PaintListener() {
             @Override
@@ -233,8 +234,7 @@ public class TimelineOutlineHeader extends Composite {
                             viewer.setContents(animationGroup);
                             viewer.refreshTimelineViewer();
                             //refresh filter
-                            getTimelineMainContainer().getContentContainer().getContentToolsContainer().setFilter(false);
-                            
+                            getTimelineMainContainer().getTimelineToolbar().setFilter(false);
                             setTime2Zero();
                         }
                     });
index 7fedb56..b91da17 100644 (file)
@@ -30,9 +30,7 @@ import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.ScrollBar;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineContentContainer;
 
@@ -43,13 +41,9 @@ import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineContentContaine
  */
 public class TimelineContentToolsContainer extends Composite {
 
-    private Button filter = null;
-    private Composite toolsScalerContainer = null;
-    private Scale scale = null;
     private Composite toolsSliderContainer = null;
     private ScrollBar hScroll = null;
 
-    private boolean isFilter = false;
     /**
      * Construct
      * 
@@ -79,20 +73,6 @@ public class TimelineContentToolsContainer extends Composite {
         this.setLayout(new FormLayout());
         this.setData("CompositeName", "contentToolsContainer");
 
-        //button
-        filter = new Button(this, SWT.NONE);
-        filter.setData("name", "filter");
-        filter.setText("filter");
-        FormData filterFormData = new FormData();
-        filterFormData.top = new FormAttachment(0);
-        filterFormData.bottom = new FormAttachment(100);
-        filterFormData.left = new FormAttachment(0);
-        filterFormData.right = new FormAttachment(10);
-        filter.setLayoutData(filterFormData);
-        //todo true
-        //filter.setEnabled(false);
-        //filter.setVisible(false);
-
         // Scroll bar
         toolsSliderContainer = new Composite(this, SWT.H_SCROLL);
         toolsSliderContainer.setData("CompositeName", "toolsSlider");
@@ -102,7 +82,7 @@ public class TimelineContentToolsContainer extends Composite {
         scrollFormData.top = new FormAttachment(0);
         scrollFormData.bottom = new FormAttachment(100);
         scrollFormData.left = new FormAttachment(20);
-        scrollFormData.right = new FormAttachment(100, -120);
+        scrollFormData.right = new FormAttachment(100);
         toolsSliderContainer.setLayoutData(scrollFormData);
 
         hScroll = toolsSliderContainer.getHorizontalBar();
@@ -114,33 +94,6 @@ public class TimelineContentToolsContainer extends Composite {
         hScroll.setPageIncrement(10);
         hScroll.setThumb(30);
 
-        // Scaler
-        toolsScalerContainer = new Composite(this, SWT.NONE);
-        toolsScalerContainer.setData("CompositeName", "toolsScaler");
-        toolsScalerContainer.setLayout(new FormLayout());
-
-        FormData toolsScalerContainerFormData = new FormData();
-        toolsScalerContainerFormData.top = new FormAttachment(0);
-        toolsScalerContainerFormData.bottom = new FormAttachment(100);
-        toolsScalerContainerFormData.left = new FormAttachment(toolsSliderContainer, 10);
-        toolsScalerContainerFormData.right = new FormAttachment(100);
-        toolsScalerContainer.setLayoutData(toolsScalerContainerFormData);
-
-        scale = new Scale(toolsScalerContainer, SWT.HORIZONTAL);
-        scale.setData("CompositeName", "scale");
-
-        FormData scaleFormData = new FormData();
-        scaleFormData.top = new FormAttachment(0, -9);
-        scaleFormData.bottom = new FormAttachment(100);
-        scaleFormData.left = new FormAttachment(0);
-        scaleFormData.right = new FormAttachment(100);
-        scale.setLayoutData(scaleFormData);
-
-        scale.setMinimum(1);
-        scale.setMaximum(4);
-        scale.setIncrement(1);
-        scale.setSelection(2);
-
     }
 
     /**********************************************************************************************
@@ -157,9 +110,8 @@ public class TimelineContentToolsContainer extends Composite {
 
         FormData scrollFormData = (FormData) toolsSliderContainer.getLayoutData();
         scrollFormData.left = new FormAttachment(0, area.width + 10);
-
-        toolsSliderContainer.setBounds(area.width + 10, bounds.y, parentArea.width - area.width
-                - 120, bounds.height);
+        toolsSliderContainer.setBounds(area.width + 10, bounds.y, parentArea.width
+                - (area.width + 10), bounds.height);
     }
 
     /**********************************************************************************************
@@ -167,44 +119,6 @@ public class TimelineContentToolsContainer extends Composite {
      **********************************************************************************************/
 
     /**
-     * Get Scale container
-     * 
-     * @return {@link Composite} Scale container
-     */
-    public Composite getToolsScalerContainer() {
-        return toolsScalerContainer;
-    }
-
-    /**
-     * Set Scal container
-     * 
-     * @param toolsScalerContainer
-     *            {@link Composite} Scale container
-     */
-    public void setToolsScalerContainer(Composite toolsScalerContainer) {
-        this.toolsScalerContainer = toolsScalerContainer;
-    }
-
-    /**
-     * Get Scale
-     * 
-     * @return {@line Scale}
-     */
-    public Scale getScale() {
-        return scale;
-    }
-
-    /**
-     * Set Scale
-     * 
-     * @param scale
-     *            {@link Scale}
-     */
-    public void setScale(Scale scale) {
-        this.scale = scale;
-    }
-
-    /**
      * Get horizontal scroll container
      * 
      * @return {@link Composite} Horizontal scroll container
@@ -241,36 +155,4 @@ public class TimelineContentToolsContainer extends Composite {
     public void sethScroll(ScrollBar hScroll) {
         this.hScroll = hScroll;
     }
-
-    /**
-     * Get Filter Button
-     * @return
-     */
-    public Button getFilter() {
-        return filter;
-    }
-
-    /**
-     * Set Filter Button
-     * @param filter
-     */
-    public void setFilter(Button filter) {
-        this.filter = filter;
-    }
-
-    /**
-     * Check Filter flag
-     * @return
-     */
-    public boolean isFilter() {
-        return isFilter;
-    }
-
-    /**
-     * Set Filter flag
-     * @param isFilter
-     */
-    public void setFilter(boolean isFilter) {
-        this.isFilter = isFilter;
-    }
 }
index 0f1b987..32fac14 100644 (file)
@@ -40,8 +40,10 @@ import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
@@ -54,9 +56,11 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.ScrollBar;
 import org.eclipse.swt.widgets.Text;
 import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.animator.AnimatorConstants;
 import org.tizen.webuibuilder.animator.gef.command.AnimationPropertyChangeCommand;
 import org.tizen.webuibuilder.animator.gef.viewer.AnimationEvent;
 import org.tizen.webuibuilder.animator.gef.viewer.AnimatorBrowserViewer;
@@ -67,11 +71,14 @@ import org.tizen.webuibuilder.animator.model.AnimatorModel;
 import org.tizen.webuibuilder.animator.model.AnimatorModelEvent;
 import org.tizen.webuibuilder.animator.model.AnimatorModelListenerAdapter;
 import org.tizen.webuibuilder.animator.model.AnimatorSelector;
+import org.tizen.webuibuilder.animator.model.descriptor.AnimatorDescriptorManager;
+import org.tizen.webuibuilder.animator.model.descriptor.CssAnimationDescriptor;
 import org.tizen.webuibuilder.animator.model.part.AnimatorPagePart;
 import org.tizen.webuibuilder.animator.model.part.AnimatorPart;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineContentContainer;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineMainContainer;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineViewer;
+import org.tizen.webuibuilder.animator.ui.views.timeline.action.AddPredefinedKeyFrameAction;
 import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
 import org.tizen.webuibuilder.animator.ui.views.timeline.common.Formatter;
 import org.tizen.webuibuilder.animator.ui.views.timeline.common.TimelineConstants;
@@ -82,6 +89,7 @@ import org.tizen.webuibuilder.animator.ui.views.timeline.widget.KeyFrame;
 import org.tizen.webuibuilder.animator.ui.views.timeline.widget.KeyFrameComponent;
 import org.tizen.webuibuilder.animator.utils.AnimatorUtils;
 import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.app.AppManager;
 import org.tizen.webuibuilder.utility.Platform;
 import org.tizen.webuibuilder.utility.ResourceManager;
 
@@ -104,8 +112,20 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
     private Button easing = null;
     private String easeData = null;
 
+    private Button predefinedPanel = null;
+    private Button predefined = null;
+
+    // private Button snap = null;
+    private Button filter = null;
+
+    private Composite scaleContainer = null;
+    private Scale scale = null;
+    private Button zoomIn = null;
+    private Button zoomOut = null;
+
     private boolean isRepeat = true;
     private boolean isPlaying = false;
+    private boolean isFilter = false;
 
     private String selectedAnimationGroupId = null;
 
@@ -120,6 +140,11 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
                                     // , 4:select down, 5:select hover
     private int repeatButtonState = 0; // 0:nomal , 1:down, 2:hover
     private int easingButtonState = 0; // 0:nomal , 1:down, 2:hover
+    private int predefinedButtonState = 0; // 0:nomal , 1:down, 2:hover
+    private int filterButtonState = 0; // 0:nomal , 1:down, 2: hover 3:select nomal
+                                       // , 4:select down, 5:select hover
+    private int zoomInButtonState = 0; // 0:nomal , 1:down, 2:hover
+    private int zoomOutButtonState = 0; // 0:nomal , 1:down, 2:hover
 
     /**
      * Construct
@@ -145,7 +170,7 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
             @Override
             public void widgetDisposed(DisposeEvent e) {
                 AnimatorBrowserViewer.removeAnimationListener(TimelineToolbar.this);
-                
+
                 TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
                 Part rootPart = mainContainer.getPage().getRootPart();
                 ((AnimatorPart) rootPart).removeAnimatorModelListener(animatorModelEventAdapter);
@@ -162,182 +187,6 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
     public void createControls(Composite parent) {
         setLayout(new FormLayout());
 
-        // TimeText
-        // -------------------------------------------------------------------------------
-        timeText = new Text(this, SWT.SINGLE | SWT.CENTER);
-
-        FormData timeTextFormData = new FormData();
-        timeTextFormData.top = new FormAttachment(0, 4);
-        timeTextFormData.left = new FormAttachment(0, 269);
-        timeTextFormData.width = 113;
-        timeTextFormData.height = 21;
-        timeText.setLayoutData(timeTextFormData);
-        timeText.setBackgroundImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                             "animator_toolbar_time_text.png"));
-        setCurrentTime("00 : 00 . 000");
-
-        timeText.addFocusListener(new FocusListener() {
-
-            @Override
-            public void focusLost(FocusEvent e) {
-                timeText.clearSelection();
-            }
-
-            @Override
-            public void focusGained(FocusEvent e) {
-                // TODO Auto-generated method stub
-
-            }
-        });
-
-        timeText.addKeyListener(new KeyListener() {
-
-            @Override
-            public void keyReleased(KeyEvent e) {
-                // TODO Auto-generated method stub
-                char myChar = e.character;
-                int caret = timeText.getCaretPosition();
-
-                String fullTime = timeText.getText();
-                String[] first = null;
-                String[] second = null;
-                first = fullTime.split(":");
-                second = fullTime.split(Pattern.quote("."));
-
-                int firstSplit = first[0].length() - 1;
-                int secSplit = second[0].length() - 1;
-
-                boolean isNumber = Character.isDigit(myChar);
-                if (isNumber) {
-                    if (caret <= firstSplit) {
-
-                        setCurrentTime(fullTime);
-                        setTimeTextPoint();
-                        timeText.setSelection(caret);
-                    } else if (caret > firstSplit + 3 && caret <= firstSplit + 5) {
-                        int count = secSplit - firstSplit;
-                        if (count > 5) {
-                            if (firstSplit + 4 == caret) {
-                                char lastSec = second[0].charAt(second[0].length() - 2);
-                                fullTime = first[0] + ": " + myChar + lastSec + " ." + second[1];
-                            } else {
-                                char firstSec = second[0].charAt(second[0].length() - 4);
-                                fullTime = first[0] + ": " + firstSec + myChar + " ." + second[1];
-                            }
-                        } else if (count <= 4) {
-                            fullTime = first[0] + ": " + myChar + "0" + " ." + second[1];
-                        } else {
-                        }
-                        setCurrentTime(fullTime);
-                        setTimeTextPoint();
-                        timeText.setSelection(caret);
-                    } else if (caret > firstSplit + 8 && caret <= firstSplit + 11) {
-                        int count = second[1].length();
-                        if (count > 4) {
-                            fullTime = second[0] + "." + second[1].substring(0, 4);
-                        } else if (count == 0 || count == 1) {
-                            fullTime = second[0] + "." + " 000";
-                        } else if (count == 2) {
-                            fullTime = second[0] + "." + second[1].substring(0, 2) + "00";
-                        } else if (count == 3) {
-                            fullTime = second[0] + "." + second[1].substring(0, 3) + "0";
-                        }
-                        setCurrentTime(fullTime);
-                        setTimeTextPoint();
-                        timeText.setSelection(caret);
-                    } else {
-                        e.doit = false;
-                    }
-                }
-
-                if (caret > firstSplit && caret <= firstSplit + 2) {
-                    timeText.setSelection(firstSplit + 3);
-                } else if (caret > secSplit && caret < secSplit + 3) {
-                    timeText.setSelection(secSplit + 3);
-                }
-            }
-
-            @Override
-            public void keyPressed(KeyEvent e) {
-                String fullTime = timeText.getText();
-                char myChar = e.character;
-                int caret = timeText.getCaretPosition();
-
-                int selectionCount = timeText.getSelectionCount();
-
-                String[] first = null;
-                first = fullTime.split(":");
-                int firstSplit = first[0].length() - 1;
-
-                boolean isNumber = Character.isDigit(myChar);
-                if (isNumber) {
-                    if (caret <= firstSplit) {
-                    } else if ((selectionCount >= 1 && caret > firstSplit + 1 && caret <= firstSplit + 5)
-                            || (selectionCount == 0 && caret >= firstSplit + 3 && caret < firstSplit + 5)) {
-                    } else if ((selectionCount >= 1 && caret > firstSplit + 7 && caret <= firstSplit + 11)
-                            || (selectionCount == 0 && caret >= firstSplit + 8 && caret < firstSplit + 11)) {
-                    } else {
-                        e.doit = false;
-                    }
-                } else if (e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT) {
-
-                } else {
-                    e.doit = false;
-                }
-            }
-        });
-
-        timeText.addMouseListener(new MouseListener() {
-
-            @Override
-            public void mouseUp(MouseEvent e) {
-                int caret = timeText.getCaretPosition();
-                String fullTime = timeText.getText();
-
-                String[] first = null;
-                String[] second = null;
-                first = fullTime.split(":");
-                second = fullTime.split(Pattern.quote("."));
-
-                int firstSplit = first[0].length() - 1;
-                int secSplit = second[0].length() - 1;
-
-                if (caret < firstSplit) {
-                    timeText.setSelection(0, firstSplit);
-                } else if (caret > firstSplit && caret <= secSplit) {
-                    timeText.setSelection(firstSplit + 3, secSplit);
-                } else if (caret > secSplit) {
-                    timeText.setSelection(secSplit + 3, secSplit + 6);
-                }
-            }
-
-            @Override
-            public void mouseDown(MouseEvent e) {
-            }
-
-            @Override
-            public void mouseDoubleClick(MouseEvent e) {
-
-            }
-        });
-
-        timeText.addListener(SWT.Paint, new Listener() {
-
-            @Override
-            public void handleEvent(Event event) {
-                GC gc = event.gc;
-                String time = timeText.getText();
-
-                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                      "animator_toolbar_time_text.png"), 0, 0);
-
-                if (time != null) {
-                    timeText.setForeground(ColorResource.WHITE);
-                    gc.drawText(time, 22, 3, true);
-                }
-            }
-        });
-
         // Animation play control
         // ------------------------------------------------------------------------------
         // Backward
@@ -345,12 +194,12 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         backward = new Button(this, SWT.NONE);
 
         FormData backwardFormData = new FormData();
-        backwardFormData.top = new FormAttachment(0, 4);
-        backwardFormData.left = new FormAttachment(0, 390);
+        backwardFormData.top = new FormAttachment(0, 3);
+        backwardFormData.left = new FormAttachment(0, 0);
         backwardFormData.width = 31;
         backwardFormData.height = 21;
         backward.setLayoutData(backwardFormData);
-        backward.setToolTipText(TimelineMessages.FORWARD);
+        backward.setToolTipText(TimelineMessages.BACKWARD);
         backward.addListener(SWT.Paint, paintListener);
 
         backward.addMouseListener(new MouseAdapter() {
@@ -411,8 +260,8 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         playNpause = new Button(this, SWT.TOGGLE);
 
         FormData playNpauseFormData = new FormData();
-        playNpauseFormData.top = new FormAttachment(0, 4);
-        playNpauseFormData.left = new FormAttachment(0, 421);
+        playNpauseFormData.top = new FormAttachment(0, 3);
+        playNpauseFormData.left = new FormAttachment(backward);
         playNpauseFormData.width = 31;
         playNpauseFormData.height = 21;
         playNpause.setLayoutData(playNpauseFormData);
@@ -485,12 +334,12 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         forward = new Button(this, SWT.NONE);
 
         FormData forwardFormData = new FormData();
-        forwardFormData.top = new FormAttachment(0, 4);
-        forwardFormData.left = new FormAttachment(0, 452);
+        forwardFormData.top = new FormAttachment(0, 3);
+        forwardFormData.left = new FormAttachment(playNpause);
         forwardFormData.width = 32;
         forwardFormData.height = 21;
         forward.setLayoutData(forwardFormData);
-        forward.setToolTipText(TimelineMessages.BACKWARD);
+        forward.setToolTipText(TimelineMessages.FORWARD);
         forward.addListener(SWT.Paint, paintListener);
 
         forward.addMouseListener(new MouseAdapter() {
@@ -505,22 +354,10 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
                 forButtonState = 1;
 
                 setLastAnimationPoint();
-
-                TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
-                TimelineContentToolsContainer contentToolsContainer =
-                        mainContainer.getContentContainer().getContentToolsContainer();
-                ScrollBar horizontalScrollBar = contentToolsContainer.gethScroll();
-                horizontalScrollBar.setSelection(0);
-
-                Event event = new Event();
-                event.display = getDisplay();
-                event.widget = horizontalScrollBar;
-                event.x = 0;
-                horizontalScrollBar.notifyListeners(SWT.Selection, event);
+                moveLastTimeScroll();
 
                 // play button
                 isPlaying = false;
-
             }
 
             @Override
@@ -535,10 +372,11 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
                                 .getKeyframeHeader().getTimeBar();
 
                 PlayHeader marker = timeBar.getPlayHeader();
-                
-                int timelinePoint = (int) (lastTime * timeBar.getScale() * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL);
+
+                int timelinePoint =
+                        (int) (lastTime * timeBar.getScale() * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL);
                 int timePoint = Formatter.timeToComputeTime(lastTime);
-                
+
                 marker.setPositionMarker(timelinePoint);
                 marker.setCurrentPointTime(timePoint);
                 marker.draw(true);
@@ -577,8 +415,8 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         repeat = new Button(this, SWT.TOGGLE);
 
         FormData repeatFormData = new FormData();
-        repeatFormData.top = new FormAttachment(0, 4);
-        repeatFormData.left = new FormAttachment(0, 490);
+        repeatFormData.top = new FormAttachment(0, 3);
+        repeatFormData.left = new FormAttachment(0, 100);
         repeatFormData.width = 27;
         repeatFormData.height = 21;
         repeat.setLayoutData(repeatFormData);
@@ -630,86 +468,505 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
             }
         });
 
-        // Ease
-        // -----------------------------------------------------------------------------------
-        // Panel
-        // -----------------------------------------------------------------------------
-        easeData = TimelineMessages.EASE;
-        
-        easingPanel = new Button(this, SWT.FLAT);
-        easingPanel.setData("EASE", TimelineMessages.EASE);
+        // TimeText
+        // -------------------------------------------------------------------------------
+        timeText = new Text(this, SWT.SINGLE | SWT.CENTER);
 
-        FormData easingPanelFormData = new FormData();
-        easingPanelFormData.top = new FormAttachment(0, 4);
-        easingPanelFormData.right = new FormAttachment(100, -15);
-        easingPanelFormData.width = 20;
-        easingPanelFormData.height = 21;
-        easingPanel.setLayoutData(easingPanelFormData);
-        easingPanel.addListener(SWT.Paint, paintListener);
-        // Dropdown
-        // ---------------------------------------------------------------------------
-        easing = new Button(this, SWT.NONE);
+        FormData timeTextFormData = new FormData();
+        timeTextFormData.top = new FormAttachment(0, 3);
+        timeTextFormData.left = new FormAttachment(0, 146);
+        timeTextFormData.width = 114;
+        timeTextFormData.height = 21;
+        timeText.setLayoutData(timeTextFormData);
+        timeText.setBackgroundImage(ResourceManager
+                .getImage(BuilderConstants.ICON_DIR, "animator_toolbar_time_input_window.png"));
+        setCurrentTime("00 : 00 . 000");
 
-        FormData easingFormData = new FormData();
-        easingFormData.top = new FormAttachment(0, 4);
-        easingFormData.right = new FormAttachment(100);
-        easingFormData.width = 15;
-        easingFormData.height = 21;
-        easing.setLayoutData(easingFormData);
-        easing.setToolTipText(TimelineMessages.EASE);
-        easing.addListener(SWT.Paint, paintListener);
+        timeText.addFocusListener(new FocusListener() {
 
-        easing.addMouseListener(new MouseAdapter() {
             @Override
-            public void mouseUp(MouseEvent e) {
-                easingButtonState = 0;
+            public void focusLost(FocusEvent e) {
+                timeText.clearSelection();
             }
 
             @Override
-            public void mouseDown(MouseEvent e) {
-                easingButtonState = 1;
-
-                TimelineViewer viewer = ((TimelineMainContainer) getParent()).getViewer();
-                // Control selectedWidget = (Control) viewer.getLastSelectedKeyframeWidget();
-                KeyFrameComponent selectedKeyFrame = viewer.getLastSelectedKeyframeComponent();
-                createEasingMenu(selectedKeyFrame);
+            public void focusGained(FocusEvent e) {
+                // TODO Auto-generated method stub
 
             }
         });
-        easing.addListener(SWT.MouseEnter, new Listener() {
-            @Override
-            public void handleEvent(Event event) {
-                easingButtonState = 2;
-            }
-        });
-        easing.addListener(SWT.MouseExit, new Listener() {
-            @Override
-            public void handleEvent(Event event) {
-                easingButtonState = 0;
-            }
-        });
-    }
-
-    @Override
-    public void animationPlay(AnimationEvent e) {
-        if (isPlaying) {
-            int millSecond = e.getWparam();
 
-            TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
+        timeText.addKeyListener(new KeyListener() {
 
-            TimeBar timeBar =
-                    mainContainer.getContentContainer().getContentHeaderContainer()
-                            .getKeyframeHeader().getTimeBar();
+            @Override
+            public void keyReleased(KeyEvent e) {
+                // TODO Auto-generated method stub
+                char myChar = e.character;
+                int caret = timeText.getCaretPosition();
+
+                String fullTime = timeText.getText();
+                String[] first = null;
+                String[] second = null;
+                first = fullTime.split(":");
+                second = fullTime.split(Pattern.quote("."));
+
+                int firstSplit = first[0].length() - 1;
+                int secSplit = second[0].length() - 1;
+
+                boolean isNumber = Character.isDigit(myChar);
+                if (isNumber) {
+                    if (caret <= firstSplit) {
+
+                        setCurrentTime(fullTime);
+                        setTimeTextPoint();
+                        timeText.setSelection(caret);
+                    } else if (caret > firstSplit + 3 && caret <= firstSplit + 5) {
+                        int count = secSplit - firstSplit;
+                        if (count > 5) {
+                            if (firstSplit + 4 == caret) {
+                                char lastSec = second[0].charAt(second[0].length() - 2);
+                                fullTime = first[0] + ": " + myChar + lastSec + " ." + second[1];
+                            } else {
+                                char firstSec = second[0].charAt(second[0].length() - 4);
+                                fullTime = first[0] + ": " + firstSec + myChar + " ." + second[1];
+                            }
+                        } else if (count <= 4) {
+                            fullTime = first[0] + ": " + myChar + "0" + " ." + second[1];
+                        } else {
+                        }
+                        setCurrentTime(fullTime);
+                        setTimeTextPoint();
+                        timeText.setSelection(caret);
+                    } else if (caret > firstSplit + 8 && caret <= firstSplit + 11) {
+                        int count = second[1].length();
+                        if (count > 4) {
+                            fullTime = second[0] + "." + second[1].substring(0, 4);
+                        } else if (count == 0 || count == 1) {
+                            fullTime = second[0] + "." + " 000";
+                        } else if (count == 2) {
+                            fullTime = second[0] + "." + second[1].substring(0, 2) + "00";
+                        } else if (count == 3) {
+                            fullTime = second[0] + "." + second[1].substring(0, 3) + "0";
+                        }
+                        setCurrentTime(fullTime);
+                        setTimeTextPoint();
+                        timeText.setSelection(caret);
+                    } else {
+                        e.doit = false;
+                    }
+                }
+
+                if (caret > firstSplit && caret <= firstSplit + 2) {
+                    timeText.setSelection(firstSplit + 3);
+                } else if (caret > secSplit && caret < secSplit + 3) {
+                    timeText.setSelection(secSplit + 3);
+                }
+            }
+
+            @Override
+            public void keyPressed(KeyEvent e) {
+                String fullTime = timeText.getText();
+                char myChar = e.character;
+                int caret = timeText.getCaretPosition();
+
+                int selectionCount = timeText.getSelectionCount();
+
+                String[] first = null;
+                first = fullTime.split(":");
+                int firstSplit = first[0].length() - 1;
+
+                boolean isNumber = Character.isDigit(myChar);
+                if (isNumber) {
+                    if (caret <= firstSplit) {
+                    } else if ((selectionCount >= 1 && caret > firstSplit + 1 && caret <= firstSplit + 5)
+                            || (selectionCount == 0 && caret >= firstSplit + 3 && caret < firstSplit + 5)) {
+                    } else if ((selectionCount >= 1 && caret > firstSplit + 7 && caret <= firstSplit + 11)
+                            || (selectionCount == 0 && caret >= firstSplit + 8 && caret < firstSplit + 11)) {
+                    } else {
+                        e.doit = false;
+                    }
+                } else if (e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT) {
+
+                } else {
+                    e.doit = false;
+                }
+            }
+        });
+
+        timeText.addMouseListener(new MouseListener() {
+
+            @Override
+            public void mouseUp(MouseEvent e) {
+                int caret = timeText.getCaretPosition();
+                String fullTime = timeText.getText();
+
+                String[] first = null;
+                String[] second = null;
+                first = fullTime.split(":");
+                second = fullTime.split(Pattern.quote("."));
+
+                int firstSplit = first[0].length() - 1;
+                int secSplit = second[0].length() - 1;
+
+                if (caret < firstSplit) {
+                    timeText.setSelection(0, firstSplit);
+                } else if (caret > firstSplit && caret <= secSplit) {
+                    timeText.setSelection(firstSplit + 3, secSplit);
+                } else if (caret > secSplit) {
+                    timeText.setSelection(secSplit + 3, secSplit + 6);
+                }
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+            }
+
+            @Override
+            public void mouseDoubleClick(MouseEvent e) {
+
+            }
+        });
+
+        timeText.addListener(SWT.Paint, new Listener() {
+
+            @Override
+            public void handleEvent(Event event) {
+                GC gc = event.gc;
+                String time = timeText.getText();
+
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_time_input_window.png"), 0,
+                             0);
+
+                if (time != null) {
+                    timeText.setForeground(ColorResource.BLACK);
+                    gc.drawText(time, 22, 3, true);
+                }
+            }
+        });
+
+        // Ease
+        // -----------------------------------------------------------------------------------
+        // Panel
+        // -----------------------------------------------------------------------------
+        easeData = TimelineMessages.EASE;
+
+        easingPanel = new Button(this, SWT.FLAT);
+        easingPanel.setData(TimelineMessages.EASE, TimelineMessages.EASE);
+
+        FormData easingPanelFormData = new FormData();
+        easingPanelFormData.top = new FormAttachment(0, 3);
+        easingPanelFormData.left = new FormAttachment(0, 270);
+        // easingPanelFormData.right = new FormAttachment(100, -15);
+        easingPanelFormData.width = 20;
+        easingPanelFormData.height = 21;
+        easingPanel.setLayoutData(easingPanelFormData);
+        easingPanel.setToolTipText(easeData);
+        easingPanel.addListener(SWT.Paint, paintListener);
+        // Dropdown
+        // ---------------------------------------------------------------------------
+        easing = new Button(this, SWT.NONE);
+
+        FormData easingFormData = new FormData();
+        easingFormData.top = new FormAttachment(0, 3);
+        easingFormData.left = new FormAttachment(easingPanel);
+        // easingFormData.right = new FormAttachment(100);
+        easingFormData.width = 15;
+        easingFormData.height = 21;
+        easing.setLayoutData(easingFormData);
+        easing.setToolTipText(easeData);
+        easing.addListener(SWT.Paint, paintListener);
+
+        easing.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseUp(MouseEvent e) {
+                easingButtonState = 0;
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                easingButtonState = 1;
+
+                TimelineViewer viewer = ((TimelineMainContainer) getParent()).getViewer();
+                KeyFrameComponent selectedKeyFrame = viewer.getLastSelectedKeyframeComponent();
+                createEasingMenu(selectedKeyFrame);
+            }
+        });
+        easing.addListener(SWT.MouseEnter, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                easingButtonState = 2;
+            }
+        });
+        easing.addListener(SWT.MouseExit, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                easingButtonState = 0;
+            }
+        });
+
+        // Predefined KeyFrame
+        // -----------------------------------------------------------------------------------
+        // Panel
+        // -----------------------------------------------------------------------------
+        predefinedPanel = new Button(this, SWT.FLAT);
+        predefinedPanel.setData(TimelineMessages.ADD_PREDEFINED_KEYFRAME,
+                                TimelineMessages.ADD_PREDEFINED_KEYFRAME);
+
+        FormData predefinedPanelFormData = new FormData();
+        predefinedPanelFormData.top = new FormAttachment(0, 3);
+        predefinedPanelFormData.left = new FormAttachment(0, 308);
+        predefinedPanelFormData.width = 20;
+        predefinedPanelFormData.height = 21;
+        predefinedPanel.setLayoutData(predefinedPanelFormData);
+        predefinedPanel.setToolTipText(TimelineMessages.ADD_PREDEFINED_KEYFRAME);
+        predefinedPanel.addListener(SWT.Paint, paintListener);
+        // Dropdown
+        // ---------------------------------------------------------------------------
+        predefined = new Button(this, SWT.NONE);
+
+        FormData predefinedFormData = new FormData();
+        predefinedFormData.top = new FormAttachment(0, 3);
+        predefinedFormData.left = new FormAttachment(predefinedPanel);
+        predefinedFormData.width = 15;
+        predefinedFormData.height = 21;
+        predefined.setLayoutData(predefinedFormData);
+        predefined.setToolTipText(TimelineMessages.ADD_PREDEFINED_KEYFRAME);
+        predefined.addListener(SWT.Paint, paintListener);
+
+        predefined.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseUp(MouseEvent e) {
+                predefinedButtonState = 0;
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                predefinedButtonState = 1;
+
+                Menu menu = drawDetailMenu(predefined);
+                insertPreDefinedAnimations(menu);
+            }
+        });
+        predefined.addListener(SWT.MouseEnter, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                predefinedButtonState = 2;
+            }
+        });
+        predefined.addListener(SWT.MouseExit, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                predefinedButtonState = 0;
+            }
+        });
+
+        // Filter
+        filter = new Button(this, SWT.NONE);
+        filter.setData(TimelineMessages.FILTER, TimelineMessages.FILTER);
+        filter.setToolTipText(TimelineMessages.FILTER);
+        FormData filterFormData = new FormData();
+        filterFormData.top = new FormAttachment(0, 3);
+        filterFormData.left = new FormAttachment(0, 346);
+        filterFormData.width = 21;
+        filterFormData.height = 21;
+        filter.setLayoutData(filterFormData);
+        filter.addListener(SWT.Paint, paintListener);
+
+        filter.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseUp(MouseEvent e) {
+                if (isFilter()) {
+                    setFilter(false);
+                    filterButtonState = 0;
+                } else {
+                    setFilter(true);
+                    filterButtonState = 3;
+                }
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                if (isFilter()) {
+                    filterButtonState = 4;
+                } else {
+                    filterButtonState = 1;
+                }
+            }
+        });
+
+        filter.addListener(SWT.MouseEnter, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                if (isFilter()) {
+                    filterButtonState = 2;
+                } else {
+                    filterButtonState = 5;
+                }
+            }
+        });
+
+        filter.addListener(SWT.MouseExit, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                if (isFilter()) {
+                    filterButtonState = 3;
+                } else {
+                    filterButtonState = 0;
+                }
+            }
+        });
+
+        filter.addSelectionListener(new SelectionListener() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                // boolean isFilter = isFilter();
+                // setFilter(!isFilter);
+                TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
+                mainContainer.getViewer().refreshClickedFilter();
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        // scale
+        scaleContainer = new Composite(this, SWT.NONE);
+        scaleContainer.setData("CompositeName", "toolsScaler");
+        scaleContainer.setLayout(new FormLayout());
+
+        FormData toolsScalerContainerFormData = new FormData();
+        toolsScalerContainerFormData.top = new FormAttachment(0);
+        toolsScalerContainerFormData.right = new FormAttachment(100);
+        scaleContainer.setLayoutData(toolsScalerContainerFormData);
+
+        zoomIn = new Button(scaleContainer, SWT.NONE);
+        FormData zoomInFormData = new FormData();
+        zoomInFormData.top = new FormAttachment(0, 5);
+        zoomInFormData.left = new FormAttachment(0);
+        zoomInFormData.height = 16;
+        zoomInFormData.width = 16;
+        zoomIn.setLayoutData(zoomInFormData);
+        zoomIn.setToolTipText(TimelineMessages.ZOOM_IN);
+        zoomIn.addListener(SWT.Paint, paintListener);
+
+        zoomIn.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseUp(MouseEvent e) {
+                zoomInButtonState = 0;
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                zoomInButtonState = 1;
+                if (scale != null && scale.isDisposed() == false) {
+                    int selection = scale.getSelection();
+                    scale.setSelection(--selection);
+                    updateScale();
+                }
+            }
+        });
+        zoomIn.addListener(SWT.MouseEnter, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                zoomInButtonState = 2;
+            }
+        });
+        zoomIn.addListener(SWT.MouseExit, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                zoomInButtonState = 0;
+            }
+        });
+
+        scale = new Scale(scaleContainer, SWT.HORIZONTAL);
+        scale.setData("CompositeName", "scale");
+
+        FormData scaleFormData = new FormData();
+        scaleFormData.top = new FormAttachment(0, -7);
+        scaleFormData.left = new FormAttachment(zoomIn);
+        scaleFormData.height = 32;
+        scaleFormData.width = 100;
+        scale.setLayoutData(scaleFormData);
+
+        scale.setMinimum(1);
+        scale.setMaximum(4);
+        scale.setIncrement(1);
+        scale.setSelection(2);
+
+        // Scale changing
+        scale.addListener(SWT.Selection, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                updateScale();
+            }
+        });
+
+        zoomOut = new Button(scaleContainer, SWT.NONE);
+        FormData zoomOutFormData = new FormData();
+        zoomOutFormData.top = new FormAttachment(0, 5);
+        zoomOutFormData.left = new FormAttachment(scale);
+        zoomOutFormData.height = 16;
+        zoomOutFormData.width = 16;
+        zoomOut.setLayoutData(zoomOutFormData);
+        zoomOut.setToolTipText(TimelineMessages.ZOOM_OUT);
+        zoomOut.addListener(SWT.Paint, paintListener);
+
+        zoomOut.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseUp(MouseEvent e) {
+                zoomOutButtonState = 0;
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                zoomOutButtonState = 1;
+                if (scale != null && scale.isDisposed() == false) {
+                    int selection = scale.getSelection();
+                    scale.setSelection(++selection);
+                    updateScale();
+                }
+            }
+        });
+        zoomOut.addListener(SWT.MouseEnter, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                zoomOutButtonState = 2;
+            }
+        });
+        zoomOut.addListener(SWT.MouseExit, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                zoomOutButtonState = 0;
+            }
+        });
+
+    }
+
+    @Override
+    public void animationPlay(AnimationEvent e) {
+        if (isPlaying) {
+            int millSecond = e.getWparam();
+
+            TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
+
+            TimeBar timeBar =
+                    mainContainer.getContentContainer().getContentHeaderContainer()
+                            .getKeyframeHeader().getTimeBar();
 
             PlayHeader marker = timeBar.getPlayHeader();
-            
-            int timelinePoint = (int) (timeBar.getScale() * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL);
+
+            int timelinePoint =
+                    (int) (timeBar.getScale() * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL);
             double pointTime = Formatter.computeTimeTotime(millSecond);
-            //int timePoint = Formatter.timeToComputeTime(millSecond);
-            
+            // int timePoint = Formatter.timeToComputeTime(millSecond);
+
             marker.setPositionMarker((int) (pointTime * timelinePoint));
             marker.setCurrentPointTime(millSecond);
-            
+
             if (Platform.getOS().equals(Platform.OS_WIN32)) {
                 marker.draw(false);
             } else if (Platform.getOS().equals(Platform.OS_LINUX)
@@ -717,7 +974,7 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
                 marker.draw(true);
             }
 
-            //double markerTime = marker.getPlayHeaderTime();
+            // double markerTime = marker.getPlayHeaderTime();
             String time = AnimatorUtils.convertTimetoTimeText(pointTime);
 
             setCurrentTime(time);
@@ -749,12 +1006,6 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
 
     @Override
     public void animationSnapShot(AnimationEvent e) {
-        // Logger.error("###################################################################");
-        // Logger.error("####################### " + e.getEventType());
-        // Logger.error("####################### " + e.getLparam());
-        // Logger.error("####################### " + e.getWparam());
-        // Logger.error("###################################################################");
-
         if (e.getLparam() != null) {
             setMap((Map<String, String>) e.getLparam());
         }
@@ -767,7 +1018,6 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
     /**
      * set TimeTextPoint
      */
-
     private void setTimeTextPoint() {
         TimelineContentContainer contentContainer =
                 ((TimelineMainContainer) getParent()).getContentContainer();
@@ -780,10 +1030,10 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         contentContainer.refreshHScroll(newTime, 1, 0, 2);
 
         double startTime = timeBar.getStartTime();
-        
+
         int currentPositionTime = (int) (newTime * (scale));
         int startPositionTime = (int) (startTime * (scale));
+
         int positionTime = (currentPositionTime - startPositionTime);
         timeBar.setPosition(positionTime);
         contentContainer.refreshPlayHeader(true);
@@ -796,30 +1046,30 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
      * Set Last Animation Point
      */
     private void setLastAnimationPoint() {
-        double lastTime = 0.0;
+        int lastTime = 0;
 
         String animationGroupId =
                 AnimatorUtils.getActiveAnimatorBrowserViewer().getCurrentAnimationGroupId();
 
         TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
         lastTime = mainContainer.getContentContainer().getLastTimeInAnimationGroup();
-        
+
         TimeBar timeBar =
                 mainContainer.getContentContainer().getContentHeaderContainer().getKeyframeHeader()
                         .getTimeBar();
 
         PlayHeader marker = timeBar.getPlayHeader();
-        
-        int timelinePoint = (int) (lastTime * timeBar.getScale() * TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL);
-        int timePoint = Formatter.timeToComputeTime(timelinePoint);
-        
+
+        int timelinePoint =
+                (int) (lastTime * timeBar.getScale()) / TimelineConstants.DEFAULT_TIME_INTERVAL;
+
         marker.setPositionMarker(timelinePoint);
-        marker.setCurrentPointTime(timePoint);
+        marker.setCurrentPointTime(lastTime);
 
         marker.draw(true);
 
         double markerTime = marker.getPlayHeaderTime();
-        String time = AnimatorUtils.convertTimetoTimeText(markerTime);
+        String time = AnimatorUtils.convertTimetoTimeIntText(lastTime);
         setCurrentTime(time);
 
         AnimatorUtils.getActiveAnimatorBrowserViewer().showAnimationAtMoment(animationGroupId,
@@ -882,7 +1132,7 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
 
         TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
         AnimatorPagePart pagePart = mainContainer.getPage().getPagePart();
-        
+
         AnimatorAnimation animation = pagePart.getAnimation(selectedAnimationGroupId);
         List<AnimatorModel> widgets = animation.getChildren();
         for (AnimatorModel widget : widgets) {
@@ -897,93 +1147,486 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
 
             if (canPlay) {
                 break;
-            }
+            }
+        }
+
+        return canPlay;
+    }
+
+    /**
+     * Create Easing Menu
+     * 
+     * @param selectedWidget
+     *            {@link Control} widget in timeline
+     * 
+     */
+    private void createEasingMenu(final KeyFrameComponent selectedWidget) {
+        Menu easingMenu = new Menu(easing.getShell(), SWT.POP_UP);
+
+        for (int i = 0; i < 5; i++) {
+            final MenuItem menuItem = new MenuItem(easingMenu, SWT.CHECK);
+            switch (i) {
+                case 0:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease_linear.png"));
+                    menuItem.setText(TimelineMessages.LINEAR);
+                    break;
+                case 1:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease.png"));
+                    menuItem.setText(TimelineMessages.EASE);
+                    break;
+                case 2:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease_in.png"));
+                    menuItem.setText(TimelineMessages.EASE_IN);
+                    break;
+                case 3:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease_out.png"));
+                    menuItem.setText(TimelineMessages.EASE_OUT);
+                    break;
+                case 4:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease_inout.png"));
+                    menuItem.setText(TimelineMessages.EASE_IN_OUT);
+                    break;
+                default:
+                    menuItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                               "animator_toolbar_ease_linear.png"));
+                    menuItem.setText(TimelineMessages.LINEAR);
+                    break;
+            }
+
+            if (selectedWidget instanceof KeyFrame) {
+                menuItem.setEnabled(true);
+                easeData =
+                        ((AnimatorFrame) ((KeyFrame) selectedWidget).getModel())
+                                .getEasingProperty();
+                if (menuItem.getText().equals(easeData)) {
+                    menuItem.setSelection(true);
+                    easingPanel.redraw();
+                }
+            } else {
+                menuItem.setEnabled(false);
+            }
+            menuItem.addSelectionListener(new SelectionAdapter() {
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    easeData = menuItem.getText();
+                    easingPanel.setData(easeData);
+                    easingPanel.setToolTipText(easeData);
+                    easing.setToolTipText(easeData);
+                    // easingPanel.redraw();
+
+                    AnimatorFrame frame = (AnimatorFrame) ((KeyFrame) selectedWidget).getModel();
+
+                    String beforeEaseData = frame.getEasingProperty();
+                    if (!beforeEaseData.equals(easeData)) {
+                        AnimationPropertyChangeCommand propertyCommand =
+                                new AnimationPropertyChangeCommand(
+                                                                   frame,
+                                                                   "-webkit-animation-timing-function",
+                                                                   easeData);
+
+                        TimelineViewer viewer = ((TimelineMainContainer) getParent()).getViewer();
+                        viewer.getEditDomain().getCommandStack().execute(propertyCommand);
+                    }
+                }
+            });
+        }
+
+        Rectangle easingPanelBounds = easingPanel.getBounds();
+        Point menuPoint =
+                easing.toDisplay(new Point(0, easingPanelBounds.y + easingPanelBounds.height));
+
+        easingMenu.setLocation(menuPoint);
+        easingMenu.setVisible(true);
+
+    }
+
+    /**
+     * Refresh Toolbar
+     * 
+     * @param animationGroupId
+     *            AnimationGroup id
+     */
+    public void refreshToolbar(String animationGroupId) {
+
+        // selection animationGroupid
+        setSelectedAnimationGroupId(animationGroupId);
+
+        // redraw text button
+        setCurrentTime("00 : 00 . 000");
+        timeText.redraw();
+
+        // redraw play button
+        playNpause.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                     "animator_toolbar_play_normal.png"));
+
+        isPlaying = false;
+        playNpause.redraw();
+
+        // redraw retpeatButton
+        redrawRepeatButton(animationGroupId);
+
+    }
+
+    /**
+     * Refresh Ease panel
+     * 
+     * @param model
+     */
+    private void refreshEasing(AnimatorModel model) {
+        if (model instanceof AnimatorFrame) {
+            easeData = ((AnimatorFrame) model).getEasingProperty();
+            easingPanel.redraw();
+        }
+    }
+
+    /**
+     * Clicked stop play button
+     */
+    public void stopPlaying() {
+        if (isPlaying) {
+            isPlaying = false;
+            playNpause.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                         "animator_toolbar_play_normal.png"));
+        }
+    }
+
+    /**
+     * Draw Predefined Detail Menu
+     * 
+     * @param parent
+     * @return
+     */
+    private Menu drawDetailMenu(Button parent) {
+        Point menuPoint = null;
+        Menu menu = null;
+        Rectangle rect = parent.getBounds();
+
+        menu = new Menu(predefined.getShell(), SWT.POP_UP);
+        menuPoint = predefined.toDisplay(new Point(0, rect.y + rect.height));
+        menu.setLocation(menuPoint);
+        menu.setVisible(true);
+        return menu;
+    }
+
+    /**
+     * Insert Predefined Animation to menu
+     * 
+     * @param menu
+     */
+    private void insertPreDefinedAnimations(Menu menu) {
+
+        AppManager appManager = AnimatorUtils.getAppManager();
+        AnimatorDescriptorManager manager = AnimatorDescriptorManager.getInstance(appManager);
+
+        List<CssAnimationDescriptor> cssAnimations = manager.getCssAnimations();
+        MenuItem preSubMenuItem = null;
+        for (CssAnimationDescriptor cssAnimation : cssAnimations) {
+
+            String category = cssAnimation.getCategory();
+            if (preSubMenuItem != null && !preSubMenuItem.getText().equals(category)) {
+                MenuItem[] items = menu.getItems();
+
+                boolean isExist = false;
+                for (int i = 0; i < menu.getItemCount(); i++) {
+                    MenuItem item = items[i];
+                    if (item.getText().equals(category)) {
+                        isExist = true;
+                        preSubMenuItem = item;
+                        break;
+                    }
+                }
+
+                if (!isExist)
+                    preSubMenuItem = null;
+            }
+
+            if (preSubMenuItem == null) {
+                preSubMenuItem = new MenuItem(menu, SWT.CASCADE);
+                preSubMenuItem.setText(category);
+                Menu preSubMenu = new Menu(preSubMenuItem);
+                preSubMenuItem.setMenu(preSubMenu);
+            }
+
+            String id = cssAnimation.getId();
+            String displayName = cssAnimation.getDisplayName();
+            String iconPath16 = cssAnimation.getIconPath16();
+
+            MenuItem item = new MenuItem(preSubMenuItem.getMenu(), SWT.PUSH);
+            item.setData(id, cssAnimation);
+            item.setText(displayName);
+
+            Image image = ResourceManager.getImage(AnimatorConstants.ICON_DIR, iconPath16);
+            item.setImage(image);
+            item.addSelectionListener(new SelectionAdapter() {
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    Object source = e.getSource();
+                    if (source instanceof MenuItem) {
+                        MenuItem currentItem = (MenuItem) source;
+                        String parentMenuText =
+                                currentItem.getParent().getParentItem().getText().trim();
+                        String menuText = currentItem.getText().trim();
+                        menuText = menuText.replaceAll(" ", "");
+                        String generateKeyForGetData =
+                                generateKeyForGetData(parentMenuText, menuText);
+
+                        CssAnimationDescriptor cssAnimation =
+                                (CssAnimationDescriptor) (currentItem
+                                        .getData(generateKeyForGetData));
+
+                        TimelineViewer viewer = ((TimelineMainContainer) getParent()).getViewer();
+                        AddPredefinedKeyFrameAction newPredefined =
+                                new AddPredefinedKeyFrameAction(cssAnimation, viewer);
+                        if (newPredefined != null) {
+                            newPredefined.run();
+                        }
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * GenerateKey for GetData
+     * 
+     * @param parentMenuText
+     * @param menuText
+     * @return
+     */
+    private String generateKeyForGetData(String parentMenuText, String menuText) {
+        String key = null;
+
+        key = "tizen.animator." + parentMenuText + "." + menuText;
+
+        return key;
+    }
+
+    /**
+     * update Scale
+     */
+    private void updateScale() {
+        TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
+
+        int currentValue = scale.getSelection();
+        double timeScale = 0.0d;
+        switch (currentValue) {
+            case 1:
+                timeScale = TimeBar.SCALE_50;
+                scale.setToolTipText("50%");
+                break;
+            case 2:
+                timeScale = TimeBar.SCALE_100;
+                scale.setToolTipText("100%");
+                break;
+            case 3:
+                timeScale = TimeBar.SCALE_200;
+                scale.setToolTipText("200%");
+                break;
+            case 4:
+                timeScale = TimeBar.SCALE_400;
+                scale.setToolTipText("400%");
+                break;
+        }
+
+        TimeBar timeBar =
+                mainContainer.getContentContainer().getContentHeaderContainer().getKeyframeHeader()
+                        .getTimeBar();
+
+        timeBar.setScale(timeScale);
+        timeBar.redraw();
+
+        PlayHeader marker = timeBar.getPlayHeader();
+        marker.draw(true);
+
+        mainContainer.getContentContainer().refeshTimeline();
+    }
+
+    /**
+     * Move LastTime Scroll
+     */
+    private void moveLastTimeScroll() {
+        int lastTime = 0;
+        TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
+        TimelineContentToolsContainer contentToolsContainer =
+                mainContainer.getContentContainer().getContentToolsContainer();
+        ScrollBar horizontalScrollBar = contentToolsContainer.gethScroll();
+        lastTime = mainContainer.getContentContainer().getLastTimeInAnimationGroup();
+        Point point = getSize();
+        int location = lastTime / TimelineConstants.DEFAULT_TIME_INTERVAL;
+        if (point.x < location) {
+            horizontalScrollBar.setSelection(lastTime
+                    / TimelineConstants.DEFAULT_TIME_POSITION_INTERVAL - 30);
+        } else {
+            horizontalScrollBar.setSelection(0);
+        }
+        Event event = new Event();
+        event.display = getDisplay();
+        event.widget = horizontalScrollBar;
+        event.x = 0;
+        horizontalScrollBar.notifyListeners(SWT.Selection, event);
+    }
+
+    /**
+     * Draw Image Button
+     * 
+     * @param gc
+     * @param button
+     */
+    public void drawImage(GC gc, Button button) {
+        if (button.equals(backward)) {
+            refreshBackwardButton(gc);
+        } else if (button.equals(forward)) {
+            refreshForwardButton(gc);
+        } else if (button.equals(playNpause)) {
+            refreshPlayButton(gc);
+        } else if (button.equals(repeat)) {
+            refreshRepeatButton(gc);
+        } else if (button.equals(easing)) {
+            refreshEasingButton(gc);
+        } else if (button.equals(easingPanel)) {
+            refreshEasePanel(gc);
+        } else if (button.equals(predefined)) {
+            refreshPredefinedButton(gc);
+        } else if (button.equals(predefinedPanel)) {
+            refreshPredefinedPanel(gc);
+        } else if (button.equals(filter)) {
+            refreshFilterButton(gc);
+        } else if (button.equals(zoomIn)) {
+            refreshZoomInButton(gc);
+        } else if (button.equals(zoomOut)) {
+            refreshZoomOutButton(gc);
+        }
+    }
+
+    /**
+     * Refresh Backward Button
+     * 
+     * @param gc
+     *            {@link GC}
+     */
+    private void refreshBackwardButton(GC gc) {
+        switch (backButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_backward_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_backward_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_backward_hover.png"), 0, 0);
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
+     * Refresh Forward Button
+     * 
+     * @param gc
+     *            {@link GC}
+     */
+    private void refreshForwardButton(GC gc) {
+        switch (forButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_forward_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_forward_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_forward_hover.png"), 0, 0);
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
+     * Refresh Play Button
+     * 
+     * @param gc
+     *            {@link GC}
+     */
+    private void refreshPlayButton(GC gc) {
+        switch (playButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_play_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_play_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_play_hover.png"), 0, 0);
+                break;
+            case 3:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_stop_normal.png"), 0, 0);
+                break;
+            case 4:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_stop_push.png"), 0, 0);
+                break;
+            case 5:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_stop_hover.png"), 0, 0);
+                break;
+            default:
+                break;
         }
-
-        return canPlay;
     }
 
     /**
-     * Create Easing Menu
-     * 
-     * @param selectedWidget
-     *            {@link Control} widget in timeline
+     * Refresh Repeat Button
      * 
+     * @param gc
      */
-    private void createEasingMenu(final KeyFrameComponent selectedWidget) {
-        Menu easingMenu = new Menu(easing.getShell(), SWT.POP_UP);
-
-        for (int i = 0; i < 5; i++) {
-            final MenuItem menuItem = new MenuItem(easingMenu, SWT.CHECK);
-            switch (i) {
-                case 0:
-                    menuItem.setText(TimelineMessages.LINEAR);
-                    break;
-                case 1:
-                    menuItem.setText(TimelineMessages.EASE);
-                    break;
-                case 2:
-                    menuItem.setText(TimelineMessages.EASE_IN);
-                    break;
-                case 3:
-                    menuItem.setText(TimelineMessages.EASE_OUT);
-                    break;
-                case 4:
-                    menuItem.setText(TimelineMessages.EASE_IN_OUT);
-                    break;
-                default:
-                    menuItem.setText(TimelineMessages.LINEAR);
-                    break;
-            }
-
-            if (selectedWidget instanceof KeyFrame) {
-                menuItem.setEnabled(true);
-                easeData =
-                        ((AnimatorFrame) ((KeyFrame) selectedWidget).getModel())
-                                .getEasingProperty();
-                if (menuItem.getText().equals(easeData)) {
-                    menuItem.setSelection(true);
-                    easingPanel.redraw();
-                }
-            } else {
-                menuItem.setEnabled(false);
-            }
-            menuItem.addSelectionListener(new SelectionAdapter() {
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    easeData = menuItem.getText();
-                    easingPanel.setData(easeData);
-                    //easingPanel.redraw();
-
-                    AnimatorFrame frame = (AnimatorFrame) ((KeyFrame) selectedWidget).getModel();
-
-                    String beforeEaseData = frame.getEasingProperty();
-                    if (!beforeEaseData.equals(easeData)) {
-                        AnimationPropertyChangeCommand propertyCommand =
-                                new AnimationPropertyChangeCommand(
-                                                                   frame,
-                                                                   "-webkit-animation-timing-function",
-                                                                   easeData);
-
-                        TimelineViewer viewer = ((TimelineMainContainer) getParent()).getViewer();
-                        viewer.getEditDomain().getCommandStack().execute(propertyCommand);
-                        
-/*                        AnimatorModelManager manager =
-                                AnimatorUtils.getAppManager().getAnimatorModelManager();
-                        manager.fireEvent(AnimatorModelEvent.EventType.PROPERTY_CHANGE,
-                                          AnimatorModelEvent.Origin.TIMELINE, frame);*/
-                    }
-                }
-            });
+    private void refreshRepeatButton(GC gc) {
+        switch (repeatButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_repeat_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_repeat_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_repeat_hover.png"), 0, 0);
+                break;
+            case 3:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_repeat_selected_normal.png"), 0, 0);
+                break;
+            case 4:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_repeat_selected_push.png"),
+                             0, 0);
+                break;
+            case 5:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_repeat_selected_hover.png"),
+                             0, 0);
+                break;
+            default:
+                break;
         }
-
-        Rectangle easingPanelBounds = easingPanel.getBounds();
-        Point menuPoint =
-                easing.toDisplay(new Point(0, easingPanelBounds.y + easingPanelBounds.height));
-
-        easingMenu.setLocation(menuPoint);
-        easingMenu.setVisible(true);
-
     }
 
     /**
@@ -993,212 +1636,180 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
 
         if (easeData == null || easeData.equals(TimelineMessages.LINEAR)) {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-            "animator_toolbar_ease_linear.png"), 0, 0);
+                                                  "animator_toolbar_ease_linear.png"), 0, 0);
         } else if (easeData.equals(TimelineMessages.EASE)) {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                    "animator_toolbar_ease.png"), 0, 0);
+                                                  "animator_toolbar_ease.png"), 0, 0);
         } else if (easeData.equals(TimelineMessages.EASE_IN)) {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                    "animator_toolbar_ease_in.png"), 0, 0);
+                                                  "animator_toolbar_ease_in.png"), 0, 0);
         } else if (easeData.equals(TimelineMessages.EASE_OUT)) {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                    "animator_toolbar_ease_out.png"), 0, 0);
+                                                  "animator_toolbar_ease_out.png"), 0, 0);
         } else if (easeData.equals(TimelineMessages.EASE_IN_OUT)) {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                    "animator_toolbar_ease_inout.png"), 0, 0);
+                                                  "animator_toolbar_ease_inout.png"), 0, 0);
         } else {
             gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                    "animator_toolbar_ease_linear.png"), 0, 0);
+                                                  "animator_toolbar_ease_linear.png"), 0, 0);
         }
     }
 
     /**
-     * Refresh Toolbar
+     * Refresh Ease Button
      * 
-     * @param animationGroupId
-     *            AnimationGroup id
+     * @param gc
      */
-    public void refreshToolbar(String animationGroupId) {
-
-        // selection animationGroupid
-        setSelectedAnimationGroupId(animationGroupId);
-
-        // redraw text button
-        setCurrentTime("00 : 00 . 000");
-        timeText.redraw();
-
-        // redraw play button
-        playNpause.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                     "animator_toolbar_play_normal.png"));
-
-        isPlaying = false;
-        playNpause.redraw();
-
-        // redraw retpeatButton
-        redrawRepeatButton(animationGroupId);
+    private void refreshEasingButton(GC gc) {
+        switch (easingButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_hover.png"), 0, 0);
+                break;
+            default:
+                break;
+        }
+    }
 
+    /**
+     * Refresh Predefined Panel
+     * 
+     * @param gc
+     *            {@link GC}
+     */
+    private void refreshPredefinedPanel(GC gc) {
+        gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                              "animator_toolbar_dropdown_predefined_keyframe.png"),
+                     0, 0);
     }
 
     /**
-     * Refresh Ease panel
+     * Refresh Predefined KeyFrame Button
      * 
-     * @param model
+     * @param gc
+     *            {@link GC}
      */
-    private void refreshEasing(AnimatorModel model) {
-        if(model instanceof AnimatorFrame) {
-          easeData = ((AnimatorFrame) model).getEasingProperty();
-          easingPanel.redraw();
+    private void refreshPredefinedButton(GC gc) {
+        switch (predefinedButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_dropdown_hover.png"), 0, 0);
+                break;
+            default:
+                break;
         }
     }
 
     /**
-     * Clicked stop play button
+     * Refresh Filter Button
+     * 
+     * @param gc
+     *            {@link GC}
      */
-    public void stopPlaying() {
-        if (isPlaying) {
-            isPlaying = false;
-            playNpause.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                         "animator_toolbar_play_normal.png"));
+    private void refreshFilterButton(GC gc) {
+        switch (filterButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_filter_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_filter_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_filter_hover.png"), 0, 0);
+                break;
+            case 3:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_filter_selected_normal.png"), 0, 0);
+                break;
+            case 4:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_filter_selected_push.png"),
+                             0, 0);
+                break;
+            case 5:
+                gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                      "animator_toolbar_filter_selected_hover.png"),
+                             0, 0);
+                break;
+            default:
+                break;
         }
     }
 
     /**
-     * Draw Image Button
+     * Refresh ZoomIn Button
      * 
      * @param gc
-     * @param button
      */
-    public void drawImage(GC gc, Button button) {
-        if (button.equals(backward)) {
-            switch (backButtonState) {
-                case 0:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_backward_normal.png"),
-                                 0, 0);
-                    break;
-                case 1:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_backward_push.png"), 0,
-                                 0);
-                    break;
-                case 2:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_backward_hover.png"),
-                                 0, 0);
-                    break;
-                default:
-                    break;
-
-            }
-        } else if (button.equals(forward)) {
-            switch (forButtonState) {
-                case 0:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_forward_normal.png"),
-                                 0, 0);
-                    break;
-                case 1:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_forward_push.png"), 0,
-                                 0);
-                    break;
-                case 2:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_forward_hover.png"), 0,
-                                 0);
-                    break;
-                default:
-                    break;
-
-            }
-        } else if (button.equals(playNpause)) {
-            switch (playButtonState) {
-                case 0:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_play_normal.png"), 0, 0);
-                    break;
-                case 1:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_play_push.png"), 0, 0);
-                    break;
-                case 2:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_play_hover.png"), 0, 0);
-                    break;
-                case 3:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_stop_normal.png"), 0, 0);
-                    break;
-                case 4:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_stop_push.png"), 0, 0);
-                    break;
-                case 5:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_stop_hover.png"), 0, 0);
-                    break;
-                default:
-                    break;
+    private void refreshZoomInButton(GC gc) {
+        switch (zoomInButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_minus_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_minus_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_minus_hover.png"), 0, 0);
+                break;
+            default:
+                break;
+        }
 
-            }
-        } else if (button.equals(repeat)) {
-            switch (repeatButtonState) {
-                case 0:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_repeat_normal.png"), 0,
-                                 0);
-                    break;
-                case 1:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_repeat_push.png"), 0, 0);
-                    break;
-                case 2:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_repeat_hover.png"), 0,
-                                 0);
-                    break;
-                case 3:
-                    gc.drawImage(ResourceManager
-                            .getImage(BuilderConstants.ICON_DIR,
-                                      "animator_toolbar_repeat_selected_normal.png"), 0, 0);
-                    break;
-                case 4:
-                    gc.drawImage(ResourceManager
-                            .getImage(BuilderConstants.ICON_DIR,
-                                      "animator_toolbar_repeat_selected_push.png"), 0, 0);
-                    break;
-                case 5:
-                    gc.drawImage(ResourceManager
-                            .getImage(BuilderConstants.ICON_DIR,
-                                      "animator_toolbar_repeat_selected_hover.png"), 0, 0);
-                    break;
-                default:
-                    break;
-            }
-        } else if (button.equals(easing)) {
+    }
 
-            switch (easingButtonState) {
-                case 0:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_dropdown_normal.png"),
-                                 0, 0);
-                    break;
-                case 1:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_dropdown_push.png"), 0,
-                                 0);
-                    break;
-                case 2:
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_toolbar_dropdown_hover.png"),
-                                 0, 0);
-                    break;
-                default:
-                    break;
-            }
-        } else if (button.equals(easingPanel)) {
-            refreshEasePanel(gc);
+    /**
+     * Refresh ZoomIn Button
+     * 
+     * @param gc
+     */
+    private void refreshZoomOutButton(GC gc) {
+        switch (zoomOutButtonState) {
+            case 0:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_plus_normal.png"), 0, 0);
+                break;
+            case 1:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_plus_push.png"), 0, 0);
+                break;
+            case 2:
+                gc.drawImage(ResourceManager
+                        .getImage(BuilderConstants.ICON_DIR,
+                                  "animator_toolbar_timeline_zoom_plus_hover.png"), 0, 0);
+                break;
+            default:
+                break;
         }
+
     }
 
     /*****************************************************************************************
@@ -1270,6 +1881,24 @@ public class TimelineToolbar extends Composite implements IAnimationListener {
         timeText.setText(currentTime);
     }
 
+    /**
+     * Check Filter
+     * 
+     * @return
+     */
+    public boolean isFilter() {
+        return isFilter;
+    }
+
+    /**
+     * Set Filter
+     * 
+     * @param isFilter
+     */
+    public void setFilter(boolean isFilter) {
+        this.isFilter = isFilter;
+    }
+
     /*****************************************************************************************
      * Listener , Event
      *****************************************************************************************/
index 9e80176..1611186 100644 (file)
@@ -54,6 +54,7 @@ import org.tizen.webuibuilder.animator.model.part.AnimatorWidgetPart;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineViewer;
 import org.tizen.webuibuilder.animator.ui.views.timeline.command.TimelineFrameCreateCommand;
 import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.animator.ui.views.timeline.common.TimelineMessages;
 import org.tizen.webuibuilder.animator.ui.views.timeline.editpart.TimelineEditPart;
 import org.tizen.webuibuilder.animator.utils.AnimatorUtils;
 import org.tizen.webuibuilder.model.Part;
@@ -129,21 +130,14 @@ public class TimelineOutlineElement extends Canvas {
         }
 
         createControls();
-        
-        if (elementType == 0) {
-            setBackground(ColorResource.PARENT_TREEITEM);
-        } else {
-            this.setBackground(ColorResource.CHILD_TREEITEM);
-        }
 
         addMouseListener(outlineElementMouseListener);
-        if (getElementType() == 1) {
-            addListener(SWT.MouseHover, mouseHEListener);
-            addListener(SWT.MouseExit, mouseHEListener);
-        }
+        addListener(SWT.MouseHover, mouseHEListener);
+        addListener(SWT.MouseExit, mouseHEListener);
+
         addPaintListener(outlineElementPaintListener);
 
-   }
+    }
 
     /**
      * Create Controls
@@ -468,20 +462,44 @@ public class TimelineOutlineElement extends Canvas {
     Listener mouseHEListener = new Listener() {
         @Override
         public void handleEvent(Event event) {
-            boolean isContainAddFrame = addFrameButtonImage.contains(event.x, event.y);
-            if (!getEditPart().isLock() && isContainAddFrame == true) {
-                GC gc = new GC(TimelineOutlineElement.this);
+            boolean isContainAddFrame = false;
+            boolean isLock = false;
+            boolean isVisible = false;
+            if (addFrameButtonImage != null) {
+                isContainAddFrame = addFrameButtonImage.contains(event.x, event.y);
+            }
+            if (lockableButtonImage != null) {
+                isLock = lockableButtonImage.contains(event.x, event.y);
+            }
+            if (visibleButtonImage != null) {
+                isVisible = visibleButtonImage.contains(event.x, event.y);
+            }
+            GC gc = new GC(TimelineOutlineElement.this);
+            if (!getEditPart().isLock()) {
                 if (event.type == SWT.MouseHover) {
-                    gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-                                                          "animator_outline_add_frame_hover.png"),
-                                 addFrameButtonImage.x, addFrameButtonImage.y);
-                } else if (event.type == SWT.MouseExit) {
+                    if (isContainAddFrame == true) {
+                        gc.drawImage(ResourceManager
+                                             .getImage(BuilderConstants.ICON_DIR,
+                                                       "animator_outline_add_frame_hover.png"),
+                                     addFrameButtonImage.x, addFrameButtonImage.y);
+                        TimelineOutlineElement.this.setToolTipText(TimelineMessages.ADD_KEYFRAME);
+                    } else if (isLock == true) {
+                        TimelineOutlineElement.this.setToolTipText(TimelineMessages.LOCK);
+                    } else if (isVisible == true) {
+                        TimelineOutlineElement.this.setToolTipText(TimelineMessages.VISIBLE);
+                    }
+
+                }
+            }
+            if (event.type == SWT.MouseExit) {
+                if (addFrameButtonImage != null) {
                     gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
                                                           "animator_outline_add_frame_normal.png"),
                                  addFrameButtonImage.x, addFrameButtonImage.y);
                 }
-                gc.dispose();
+                TimelineOutlineElement.this.setToolTipText("");
             }
+            gc.dispose();
         }
     };
 
@@ -527,14 +545,15 @@ public class TimelineOutlineElement extends Canvas {
 
             drawOutlineElement(e.gc, clientArea);
 
-            /*e.gc.drawRectangle(clientArea.x , clientArea.y, clientArea.width -1,
-                               clientArea.height );*/
-            e.gc.drawLine(clientArea.x , clientArea.height - 1 , clientArea.width*2,
-                               clientArea.height);
-            e.gc.drawLine(clientArea.x , clientArea.y , clientArea.x,
-                          clientArea.height -1);
-            e.gc.drawLine(clientArea.width -1 , clientArea.y , clientArea.width ,
-                          clientArea.height *2);
+            /*
+             * e.gc.drawRectangle(clientArea.x , clientArea.y, clientArea.width -1,
+             * clientArea.height );
+             */
+            e.gc.drawLine(clientArea.x, clientArea.height - 1, clientArea.width * 2,
+                          clientArea.height);
+            e.gc.drawLine(clientArea.x, clientArea.y, clientArea.x, clientArea.height - 1);
+            e.gc.drawLine(clientArea.width - 1, clientArea.y, clientArea.width,
+                          clientArea.height * 2);
         }
 
         private void drawOutlineElement(GC gc, Rectangle clientArea) {
index 9136778..159276e 100644 (file)
@@ -8,6 +8,7 @@ import java.util.List;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.animator.model.AnimatorFrame;
 import org.tizen.webuibuilder.animator.model.AnimatorKeyframe;
 import org.tizen.webuibuilder.animator.model.AnimatorModel;
@@ -16,6 +17,7 @@ import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
 import org.tizen.webuibuilder.animator.ui.views.timeline.common.TimelineConstants;
 import org.tizen.webuibuilder.animator.ui.views.timeline.tree.TimeTreeElement;
 import org.tizen.webuibuilder.utility.Platform;
+import org.tizen.webuibuilder.utility.ResourceManager;
 
 
 /**
@@ -84,16 +86,23 @@ public class KeyFrameUnit extends KeyFrameComponent {
      * Create KeyFrameUnitControl
      */
     public void createKeyFrameUnitControl() {
-        
+
         int frameSize = keyframelist.size();
-        if(frameSize > 1){
+        if (frameSize > 1) {
             int startPoint = keyframeUnit.x;
             int endPoint = startPoint + keyframeUnit.width;
-            if(startKeyFrameUnitControl == null) 
-                startKeyFrameUnitControl = new Rectangle(startPoint - 3, 0, 5, 5);
-            if(endKeyFrameUnitControl == null)
-                endKeyFrameUnitControl = new Rectangle(endPoint - 3, 0, 5, 5);
-            
+            if (startKeyFrameUnitControl == null)
+                startKeyFrameUnitControl =
+                        new Rectangle(startPoint
+                                - TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT, 0,
+                                      TimelineConstants.DEFAULT_KEYFRAME_CONTROL_WIDTH,
+                                      TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT);
+            if (endKeyFrameUnitControl == null)
+                endKeyFrameUnitControl =
+                        new Rectangle(endPoint - TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT,
+                                      0, TimelineConstants.DEFAULT_KEYFRAME_CONTROL_WIDTH,
+                                      TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT);
+
         }
     }
 
@@ -163,9 +172,9 @@ public class KeyFrameUnit extends KeyFrameComponent {
             } else {
                 // none selected
                 gc.setForeground(ColorResource.BLACK);
-                if(component instanceof KeyFrame) {
+                if (component instanceof KeyFrame) {
                     KeyFrameUnit keyFrameUnit = ((KeyFrame) component).getKeyFrameUnit();
-                    if(this.equals(keyFrameUnit)) {
+                    if (this.equals(keyFrameUnit)) {
                         refreshKeyFrameUnitControl(gc);
                     }
                 } else {
@@ -175,23 +184,30 @@ public class KeyFrameUnit extends KeyFrameComponent {
                 gc.setForeground(ColorResource.LIFE_WIDGET_BORDER);
             }
             gc.drawRectangle(getKeyframeUnit());
-            
+
         }
 
         for (KeyFrame child : getKeyframelist()) {
             child.redraw(gc);
         }
     }
-    
+
     private void refreshKeyFrameUnitControl(GC gc) {
-        if(startKeyFrameUnitControl != null) {
-            startKeyFrameUnitControl.x = keyframeUnit.x - 4; 
-            gc.drawRectangle(startKeyFrameUnitControl);
+        if (startKeyFrameUnitControl != null) {
+            startKeyFrameUnitControl.x =
+                    keyframeUnit.x - TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT;
+            gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                  "animator_keyframes_extention_handle.png"),
+                         startKeyFrameUnitControl.x, startKeyFrameUnitControl.y);
         }
-            
-        if(endKeyFrameUnitControl != null) {
-            endKeyFrameUnitControl.x = keyframeUnit.x + keyframeUnit.width - 2;
-            gc.drawRectangle(endKeyFrameUnitControl);
+
+        if (endKeyFrameUnitControl != null) {
+            endKeyFrameUnitControl.x =
+                    keyframeUnit.x + keyframeUnit.width
+                            - TimelineConstants.DEFAULT_KEYFRAME_CONTROL_HEIGHT;
+            gc.drawImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+                                                  "animator_keyframes_extention_handle.png"),
+                         endKeyFrameUnitControl.x, startKeyFrameUnitControl.y);
         }
     }
 
@@ -221,7 +237,7 @@ public class KeyFrameUnit extends KeyFrameComponent {
         }
 
     }
-    
+
     /**
      * Refresh
      * 
@@ -230,9 +246,9 @@ public class KeyFrameUnit extends KeyFrameComponent {
      */
     public void refreshFrame(boolean isStart) {
         int size = keyframelist.size();
-        //Rectangle firstTime = keyframelist.get(0).getKeyframe();
-        if(isStart == true) {
-            for (int i = 1; i < size  ; ++i ) {
+        // Rectangle firstTime = keyframelist.get(0).getKeyframe();
+        if (isStart == true) {
+            for (int i = 1; i < size; ++i) {
                 KeyFrame keyFrame = keyframelist.get(i);
 
                 keyFrame.getKeyframe().x =
@@ -241,7 +257,7 @@ public class KeyFrameUnit extends KeyFrameComponent {
                                 - timeTreeElement.getVisibleStartTimePoint();
             }
         } else {
-            for (int i = 0; i < size - 1 ; ++i ) {
+            for (int i = 0; i < size - 1; ++i) {
                 KeyFrame keyFrame = keyframelist.get(i);
                 keyFrame.getKeyframe().x =
                         getKeyFrameUnitModelXpoint() + keyFrame.getKeyFrameModelXpoint()
@@ -249,7 +265,7 @@ public class KeyFrameUnit extends KeyFrameComponent {
                                 - timeTreeElement.getVisibleStartTimePoint();
             }
         }
-        
+
     }
 
     /**
@@ -388,7 +404,7 @@ public class KeyFrameUnit extends KeyFrameComponent {
     public Rectangle findNextKeyFrameBounds() {
         KeyFrame findKeyFrame = null;
         int size = keyframeModel.getChildrenSize();
-        if(size > 1) {
+        if (size > 1) {
             AnimatorFrame keyFrame = (AnimatorFrame) keyframeModel.getChild(1);
             findKeyFrame = findCurrentKeyFrame(keyFrame);
             return findKeyFrame.getKeyframe();
@@ -402,12 +418,12 @@ public class KeyFrameUnit extends KeyFrameComponent {
     public Rectangle findBeforeKeyFrameBounds() {
         KeyFrame findKeyFrame = null;
         int size = keyframeModel.getChildrenSize();
-        if(size > 1) {
-            AnimatorFrame keyFrame = (AnimatorFrame) keyframeModel.getChild(size -2);
+        if (size > 1) {
+            AnimatorFrame keyFrame = (AnimatorFrame) keyframeModel.getChild(size - 2);
             findKeyFrame = findCurrentKeyFrame(keyFrame);
             return findKeyFrame.getKeyframe();
         }
-        
+
         return null;
     }
 
@@ -416,8 +432,8 @@ public class KeyFrameUnit extends KeyFrameComponent {
      */
     public KeyFrame findCurrentKeyFrame(AnimatorFrame keyFrame) {
         KeyFrame findKeyFrame = null;
-        for(KeyFrame currentkeyFrame : keyframelist) {
-            if(currentkeyFrame.getModel().equals(keyFrame)) {
+        for (KeyFrame currentkeyFrame : keyframelist) {
+            if (currentkeyFrame.getModel().equals(keyFrame)) {
                 findKeyFrame = currentkeyFrame;
                 break;
             }