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;
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;
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;
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;
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;
// , 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
@Override
public void widgetDisposed(DisposeEvent e) {
AnimatorBrowserViewer.removeAnimationListener(TimelineToolbar.this);
-
+
TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
Part rootPart = mainContainer.getPage().getRootPart();
((AnimatorPart) rootPart).removeAnimatorModelListener(animatorModelEventAdapter);
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
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() {
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);
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() {
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
.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);
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);
}
});
- // 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)
marker.draw(true);
}
- //double markerTime = marker.getPlayHeaderTime();
+ // double markerTime = marker.getPlayHeaderTime();
String time = AnimatorUtils.convertTimetoTimeText(pointTime);
setCurrentTime(time);
@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());
}
/**
* set TimeTextPoint
*/
-
private void setTimeTextPoint() {
TimelineContentContainer contentContainer =
((TimelineMainContainer) getParent()).getContentContainer();
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);
* 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,
TimelineMainContainer mainContainer = (TimelineMainContainer) getParent();
AnimatorPagePart pagePart = mainContainer.getPage().getPagePart();
-
+
AnimatorAnimation animation = pagePart.getAnimation(selectedAnimationGroupId);
List<AnimatorModel> widgets = animation.getChildren();
for (AnimatorModel widget : widgets) {
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);
-
}
/**
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;
}
+
}
/*****************************************************************************************
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
*****************************************************************************************/