ANIMATOR : Check duplication animationgroup name 55/20455/3
authorjinwooim.bae <jinwooim.bae@samsung.com>
Wed, 7 May 2014 11:53:47 +0000 (20:53 +0900)
committerjinwooim.bae <jinwooim.bae@samsung.com>
Thu, 8 May 2014 04:43:59 +0000 (13:43 +0900)
This will check for duplicate animationgroup names.

Change-Id: I93ebacae639d4d8872b421fd23e79155a0516e09
Signed-off-by: jinwooim.bae <jinwooim.bae@samsung.com>
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/part/AnimatorPagePart.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/AnimationGroupCreateDialog.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/AnimationGroupEditDialog.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/AnimatorGroupToolTip.java [new file with mode: 0644]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/TimelineOutlineHeader.java

index bdc09ca..166562e 100644 (file)
@@ -77,6 +77,19 @@ public class AnimatorPagePart extends AnimatorPart {
 
                return animation;
        }
+       
+   public AnimatorAnimation getAnimationByName(String animationName) {
+        AnimatorAnimation animation = null;
+        for (AnimatorAnimation currentAnimation : getAnimations()) {
+            String currentAnimationName = currentAnimation.getName();
+            if (currentAnimationName.equals(animationName)) {
+                animation = currentAnimation;
+                break;
+            }
+        }
+
+        return animation;
+    }
 
        public AnimatorAnimation createAnimatorAnimation(AnimatorModelFactory modelFactory) {
                AnimatorAnimation animationGroup = (AnimatorAnimation)modelFactory.createAnimatorModel(AnimatorModelType.ANIMATION);
index 8964c1c..ab24287 100644 (file)
@@ -43,6 +43,8 @@ import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
+import org.tizen.webuibuilder.animator.model.AnimatorAnimation;
+import org.tizen.webuibuilder.animator.model.part.AnimatorPagePart;
 
 
 /**
@@ -59,6 +61,7 @@ public class AnimationGroupCreateDialog extends Dialog {
     private boolean isRepeated = false;
     private boolean isAutoPlay = false;
 
+    private TimelineOutlineHeader outlineHeader = null;
     /**
      * Construct
      * 
@@ -67,9 +70,10 @@ public class AnimationGroupCreateDialog extends Dialog {
      * @param style
      *            SWT Composite style
      */
-    public AnimationGroupCreateDialog(Shell parent, int style) {
+    public AnimationGroupCreateDialog(Shell parent, TimelineOutlineHeader outlineHeader, int style) {
         super(parent, style);
         setText("Create animation group");
+        this.outlineHeader = outlineHeader;
     }
 
     /**
@@ -126,12 +130,12 @@ public class AnimationGroupCreateDialog extends Dialog {
         animationGroupName.setTextLimit(31);
         animationGroupName.setMessage("Under 32 characters.");
         animationGroupName
-                .setToolTipText("Under 32 Characters, and check pattern, [^A-Za-z0-9\\.\\@_\\-~#\\s]+");
+                .setToolTipText("Under 32 Characters, and check pattern, [^A-Za-z0-9//_//-]+");
         animationGroupName.addListener(SWT.Verify, new Listener() {
             public void handleEvent(Event e) {
                 String animationGroupName = e.text;
 
-                Pattern pattern = Pattern.compile("[^A-Za-z0-9\\.\\@_\\-~#\\s]+");
+                Pattern pattern = Pattern.compile("[^A-Za-z0-9//_//-]+");
                 Matcher matcher = pattern.matcher(animationGroupName);
                 boolean find = matcher.find();
                 if (find) {
@@ -222,12 +226,27 @@ public class AnimationGroupCreateDialog extends Dialog {
             public void mouseUp(MouseEvent e) {
 
                 String newAnimationGroupName = animationGroupName.getText();
-                result =
-                        new AnimationGroupDialogResult(animationIterationSpinner.getSelection(),
-                                                       isRepeated, isAutoPlay,
-                                                       newAnimationGroupName);
-
-                shell.dispose();
+                if (newAnimationGroupName == null || newAnimationGroupName.length() == 0) {
+                    AnimatorGroupToolTip toolTip =
+                            new AnimatorGroupToolTip(shell, animationGroupName);
+                    toolTip.showErrorToolTip("Insert Name");
+                } else {
+                    AnimatorPagePart pagePart =
+                            outlineHeader.getTimelineMainContainer().getPage().getPagePart();
+                    AnimatorAnimation animation =
+                            pagePart.getAnimationByName(newAnimationGroupName);
+                    if (animation != null) {
+                        AnimatorGroupToolTip toolTip =
+                                new AnimatorGroupToolTip(shell, animationGroupName);
+                        toolTip.showErrorToolTip("Duplicate Name");
+                    } else {
+                        result =
+                                new AnimationGroupDialogResult(animationIterationSpinner
+                                        .getSelection(), isRepeated, isAutoPlay,
+                                                               newAnimationGroupName);
+                        shell.dispose();
+                    }
+                }
             }
 
             @Override
index da75fa9..5647701 100644 (file)
@@ -43,7 +43,9 @@ import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolTip;
 import org.tizen.webuibuilder.animator.model.AnimatorAnimation;
+import org.tizen.webuibuilder.animator.model.part.AnimatorPagePart;
 
 
 /**
@@ -63,6 +65,7 @@ public class AnimationGroupEditDialog extends Dialog {
     private AnimatorAnimation animation = null;
     private boolean isDirty = false;
 
+    private TimelineOutlineHeader outlineHeader = null;
     /**
      * Construct
      * 
@@ -73,10 +76,12 @@ public class AnimationGroupEditDialog extends Dialog {
      * @param animation
      *            {@link AnimatorAnimation}
      */
-    public AnimationGroupEditDialog(Shell parent, int style, AnimatorAnimation animation) {
+    public AnimationGroupEditDialog(Shell parent, TimelineOutlineHeader outlineHeader, int style,
+            AnimatorAnimation animation) {
         super(parent, style);
 
         this.animation = animation;
+        this.outlineHeader = outlineHeader;
 
         setText("Show and edit animation group");
     }
@@ -145,13 +150,13 @@ public class AnimationGroupEditDialog extends Dialog {
         animationGroupName.setTextLimit(32);
         animationGroupName.setMessage("Under 32 characters.");
         animationGroupName
-                .setToolTipText("Under 32 Characters, and check pattern, [^A-Za-z0-9\\.\\@_\\-~#\\s]+");
+                .setToolTipText("Under 32 Characters, and check pattern, [^A-Za-z0-9\\_\\-]+");
         animationGroupName.setText(animation.getName());
         animationGroupName.addListener(SWT.Verify, new Listener() {
             public void handleEvent(Event e) {
                 String animationGroupName = e.text;
 
-                Pattern pattern = Pattern.compile("[^A-Za-z0-9\\.\\@_\\-~#\\s]+");
+                Pattern pattern = Pattern.compile("[^A-Za-z0-9\\_\\-]+");
                 Matcher matcher = pattern.matcher(animationGroupName);
                 boolean find = matcher.find();
                 if (find) {
@@ -247,33 +252,52 @@ public class AnimationGroupEditDialog extends Dialog {
         createAnimationButton.addMouseListener(new MouseListener() {
             @Override
             public void mouseUp(MouseEvent e) {
-                if (!animation.getName().equals(animationGroupName.getText())) {
-                    isDirty = true;
-                }
-
-                if (animation.getIteration() != animationIterationSpinner.getSelection()) {
-                    isDirty = true;
-                }
 
-                if (animation.isRepeated() != isRepeated) {
-                    isDirty = true;
-                }
+                String newAnimationGroupName = animationGroupName.getText();
 
-                if (animation.isJustPlay() != isAutoPlay) {
-                    isDirty = true;
-                }
-
-                if (isDirty) {
-                    result =
-                            new AnimationGroupDialogResult(
-                                                           animationIterationSpinner.getSelection(),
-                                                           isRepeated, isAutoPlay,
-                                                           animationGroupName.getText());
+                if (newAnimationGroupName == null || newAnimationGroupName.length() == 0) {
+                    AnimatorGroupToolTip toolTip =
+                            new AnimatorGroupToolTip(shell, animationGroupName);
+                    toolTip.showErrorToolTip("Insert Name");
                 } else {
-                    result = null;
+                    AnimatorPagePart pagePart =
+                            outlineHeader.getTimelineMainContainer().getPage().getPagePart();
+                    AnimatorAnimation findAnimation =
+                            pagePart.getAnimationByName(newAnimationGroupName);
+                    if (findAnimation != null) {
+                        AnimatorGroupToolTip toolTip =
+                                new AnimatorGroupToolTip(shell, animationGroupName);
+                        toolTip.showErrorToolTip("Duplicate Name");
+                    } else {
+
+                        if (!animation.getName().equals(animationGroupName.getText())) {
+                            isDirty = true;
+                        }
+
+                        if (animation.getIteration() != animationIterationSpinner.getSelection()) {
+                            isDirty = true;
+                        }
+
+                        if (animation.isRepeated() != isRepeated) {
+                            isDirty = true;
+                        }
+
+                        if (animation.isJustPlay() != isAutoPlay) {
+                            isDirty = true;
+                        }
+
+                        if (isDirty) {
+                            result =
+                                    new AnimationGroupDialogResult(animationIterationSpinner
+                                            .getSelection(), isRepeated, isAutoPlay,
+                                                                   animationGroupName.getText());
+                        } else {
+                            result = null;
+                        }
+                        shell.dispose();
+                    }
                 }
 
-                shell.dispose();
             }
 
             @Override
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/AnimatorGroupToolTip.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/ui/views/timeline/header/AnimatorGroupToolTip.java
new file mode 100644 (file)
index 0000000..a2bd7d9
--- /dev/null
@@ -0,0 +1,85 @@
+\r
+\r
+package org.tizen.webuibuilder.animator.ui.views.timeline.header;\r
+\r
+import java.util.Timer;\r
+import java.util.TimerTask;\r
+\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.swt.events.FocusListener;\r
+import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.swt.widgets.ToolTip;\r
+\r
+\r
+public class AnimatorGroupToolTip {\r
+\r
+    private ToolTip tooltip = null;\r
+    private Shell shell = null;\r
+    private Control control = null;\r
+\r
+    public AnimatorGroupToolTip(Shell shell, Control control) {\r
+        this.shell = shell;\r
+        this.control = control;\r
+    }\r
+\r
+    /**\r
+     * Show Error ToolTip\r
+     * \r
+     * @param text\r
+     */\r
+    public void showErrorToolTip(String text) {\r
+        hideErrorTooltip();\r
+        tooltip = new ToolTip(shell, SWT.ICON_WARNING | SWT.BALLOON);\r
+        tooltip.setText(text);\r
+\r
+        Point location = control.toDisplay(control.getSize().x, control.getSize().y);\r
+\r
+        tooltip.setLocation(location.x - control.getSize().x + control.getBorderWidth(), location.y\r
+                - control.getBorderWidth());\r
+        tooltip.setVisible(true);\r
+\r
+        control.addFocusListener(new FocusListener() {\r
+\r
+            @Override\r
+            public void focusLost(FocusEvent e) {\r
+                if (tooltip != null) {\r
+                    Timer timer = new Timer();\r
+                    TimerTask timerTask = new TimerTask() {\r
+                        @Override\r
+                        public void run() {\r
+                            Display.getDefault().asyncExec(new Runnable() {\r
+\r
+                                @Override\r
+                                public void run() {\r
+                                    hideErrorTooltip();\r
+                                }\r
+                            });\r
+                        }\r
+                    };\r
+\r
+                    timer.schedule(timerTask, 300);\r
+                }\r
+            }\r
+\r
+            @Override\r
+            public void focusGained(FocusEvent e) {\r
+                // Do nothing\r
+            }\r
+        });\r
+    }\r
+\r
+    /**\r
+     * Hides error message on the control \r
+     */\r
+    public void hideErrorTooltip() {\r
+        if (tooltip != null && !tooltip.isDisposed()) {\r
+            tooltip.setVisible(false);\r
+            tooltip.dispose();\r
+            tooltip = null;\r
+        }\r
+    }\r
+}\r
index 49c124f..5308151 100644 (file)
@@ -197,7 +197,7 @@ public class TimelineOutlineHeader extends Composite {
                 for (int i = 0; i < animations.size(); i++) {
                     final MenuItem aniGroupItem = new MenuItem(animationGroupMenu, SWT.CHECK);
                     final AnimatorAnimation animatorAnimation = animations.get(i); 
-                    aniGroupItem.setText(animatorAnimation.getName() + getId(animatorAnimation));
+                    aniGroupItem.setText(animatorAnimation.getName());
                     aniGroupItem.setData("id", animatorAnimation.getId());
 
                     if (selectedAnimationGroupId != null
@@ -309,7 +309,7 @@ public class TimelineOutlineHeader extends Composite {
 
         if (size != 0) {
             selectedAnimationGroupId = animations.get(0).getId();
-            animationGroupLabel.setText(animations.get(0).getName() + getId(animations.get(0)));
+            animationGroupLabel.setText(animations.get(0).getName());
             animationGroupLabel.setData("id", animations.get(0).getId());
         } else {
             animationGroupLabel.setText("NONE");
@@ -325,17 +325,6 @@ public class TimelineOutlineHeader extends Composite {
     }
 
     /**
-     * Get AnimationGroupId
-     * 
-     * @param animationGroup {@link AnimatorAnimation}
-     * @return 
-     */
-    private String getId(AnimatorAnimation animationGroup) {
-        String id = "  ( ID : " + animationGroup.getId() + " )";
-        return id;
-    }
-
-    /**
      * Clear Tree in Timeline
      */
     public void clearTree() {
@@ -354,8 +343,9 @@ public class TimelineOutlineHeader extends Composite {
      * Add Animation Group
      */
     public void addAnimationGroup() {
+        
         AnimationGroupCreateDialog createDialog =
-                new AnimationGroupCreateDialog(getShell(), SWT.NONE);
+                new AnimationGroupCreateDialog(getShell(), this, SWT.NONE);
 
         AnimationGroupDialogResult result = (AnimationGroupDialogResult) createDialog.open();
         if (result != null) {
@@ -485,8 +475,9 @@ public class TimelineOutlineHeader extends Composite {
             return;
         }
 
+        
         AnimationGroupEditDialog editDialog =
-                new AnimationGroupEditDialog(getShell(), SWT.NONE, editAnimation);
+                new AnimationGroupEditDialog(getShell(), this, SWT.NONE, editAnimation);
         AnimationGroupDialogResult result = (AnimationGroupDialogResult) editDialog.open();
         if (result != null) {
             AnimatorPagePart pagePart = getTimelineMainContainer().getPage().getPagePart();
@@ -606,7 +597,7 @@ public class TimelineOutlineHeader extends Composite {
         }
     }
 
-    private TimelineMainContainer getTimelineMainContainer() {
+    public TimelineMainContainer getTimelineMainContainer() {
         return (TimelineMainContainer) getParent().getParent().getParent().getParent();
     }
 
@@ -637,7 +628,7 @@ public class TimelineOutlineHeader extends Composite {
             String animationId = animation.getId();
 
             setSelectedAnimationGroupId(animationId);
-            animationGroupLabel.setText(animationName + getId(animation));
+            animationGroupLabel.setText(animationName);
             getAnimationGroupLabel().setData("id", animationId);
             animationGroupLabel.setToolTipText(animationName);
             animationGroupLabel.pack();
@@ -658,7 +649,7 @@ public class TimelineOutlineHeader extends Composite {
             String animationName = animation.getName();
             String animationId = animation.getId();
 
-            animationGroupLabel.setText(animationName + getId(animation));
+            animationGroupLabel.setText(animationName);
             getAnimationGroupLabel().setData("id", animationId);
             animationGroupLabel.setToolTipText(animationName);
             animationGroupLabel.pack();