PROP : Refactoring StyleTab. 35/16935/1
authormucikan <nakyoung2.choi@samsung.com>
Thu, 27 Feb 2014 08:01:43 +0000 (17:01 +0900)
committermucikan <nakyoung2.choi@samsung.com>
Thu, 27 Feb 2014 08:01:43 +0000 (17:01 +0900)
Refactoring StyleTab. Advanced performance StyleTab for Animator.

Change-Id: I195359ef16a518d83056fcc50875e0bfc5452063
Signed-off-by: mucikan <nakyoung2.choi@samsung.com>
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/tizen.types.xml
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/editor/PageDesigner.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/PropertiesListenerHelper.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/PropertiesPage.java [moved from org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/DesignerPropertiesPage.java with 78% similarity]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/PropertiesTabItem.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/action/ActionTab.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/attributes/AttributesTab.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/method/MethodCreationFactory.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/style/CssStyleTab.java

index 1a108fa..957e382 100644 (file)
                <constant value="absolute" displayName="absolute" />
                <constant value="relative" displayName="relative" />
                <constant value="static" displayName="static" />
+               <constant value="fixed" displayName="fixed" />
        </type>
 
        <type id="background@repeat">
index 7d359fb..41d9106 100644 (file)
@@ -163,8 +163,8 @@ import org.tizen.webuibuilder.ui.editor.ruler.DesignerRulerProvider;
 import org.tizen.webuibuilder.ui.editor.texteditor.TextEditor;
 import org.tizen.webuibuilder.ui.editor.viewer.DesignerBrowserViewer;
 import org.tizen.webuibuilder.ui.editor.viewer.HoverBrowserRulerComposite;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.PropertiesMode;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.PropertiesMode;
 
 
 public class PageDesigner extends GraphicalEditor implements CommandStackListener,
@@ -239,7 +239,7 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
     private CTabItem previewTabItem;
     private CTabItem animatorTabItem;
     private RulerComposite animatorRuler;
-    private DesignerPropertiesPage properties;
+    private PropertiesPage properties;
     /**
      * Animation Timeline Page
      */
@@ -921,12 +921,9 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
             }
             // final DesignerPropertiesPage properties =
             properties =
-                    new DesignerPropertiesPage(
-                                               getCommandStack(),
-                                               getDescriptorManager(),
-                                               getPageData(),
-                                               actionRegistry.getAction(ActionFactory.UNDO.getId()),
-                                               actionRegistry.getAction(ActionFactory.REDO.getId()));
+                    new PropertiesPage(getCommandStack(), getDescriptorManager(), getPageData(),
+                                       actionRegistry.getAction(ActionFactory.UNDO.getId()),
+                                       actionRegistry.getAction(ActionFactory.REDO.getId()));
             return properties;
         }
         if (type == IContentOutlinePage.class && designer != null) {
@@ -1523,7 +1520,7 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
         return project;
     }
 
-    public DesignerPropertiesPage getProperties() {
+    public PropertiesPage getProperties() {
         return properties;
     }
 
index 70dbd39..adead5d 100644 (file)
@@ -34,10 +34,10 @@ import org.tizen.webuibuilder.animator.ui.editor.viewer.IAnimationListener;
 
 public class PropertiesListenerHelper implements IAnimationListener {
 
-    private DesignerPropertiesPage page;
+    private PropertiesPage page;
     private boolean isActivate = false;
 
-    public PropertiesListenerHelper(DesignerPropertiesPage page) {
+    public PropertiesListenerHelper(PropertiesPage page) {
         this.page = page;
 
         Page oPage = (Page) page;
@@ -47,9 +47,6 @@ import org.eclipse.ui.views.properties.IPropertySheetPage;
 import org.eclipse.ui.views.properties.PropertySheet;
 import org.tizen.webuibuilder.animator.model.AnimatorFrame;
 import org.tizen.webuibuilder.animator.model.AnimatorModel;
-import org.tizen.webuibuilder.animator.model.AnimatorModelEvent;
-import org.tizen.webuibuilder.animator.model.AnimatorModelManager;
-import org.tizen.webuibuilder.animator.model.IAnimatorModelListener;
 import org.tizen.webuibuilder.animator.ui.editor.viewer.AnimationEvent;
 import org.tizen.webuibuilder.animator.ui.editor.viewer.AnimatorBrowserViewer;
 import org.tizen.webuibuilder.animator.ui.views.timeline.TimelineView;
@@ -70,8 +67,7 @@ import org.tizen.webuibuilder.ui.views.properties.style.CssStyleTab;
 /**
  * Page-book page for the {@link PropertySheet}. This page is activated in PageDesigner.
  */
-public class DesignerPropertiesPage extends Page implements IPropertySheetPage, IPartListener,
-        IAnimatorModelListener {
+public class PropertiesPage extends Page implements IPropertySheetPage, IPartListener {
 
     /**
      * PropertiesMode consist of DESIGN, ANIMATOR.
@@ -81,7 +77,7 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
     }
 
     /**
-     * TabIndex for {@link DesignerPropertiesPage}.
+     * TabIndex for {@link PropertiesPage}.
      */
     public enum TabIndex {
         ATTRIBUTES(0), STYLE(1), ACTION(2);
@@ -93,7 +89,7 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
         }
 
         /**
-         * Gets index of tab on {@link DesignerPropertiesPage}.
+         * Gets index of tab on {@link PropertiesPage}.
          * 
          * @return index of tab
          */
@@ -131,7 +127,7 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
      * @param redoAction
      *            {@link IAction} for redo.
      */
-    public DesignerPropertiesPage(CommandStack commandStack, DescriptorManager descprictorManager,
+    public PropertiesPage(CommandStack commandStack, DescriptorManager descprictorManager,
             PageData pageData, IAction undoAction, IAction redoAction) {
         this.commandStack = commandStack;
         this.descriptorManager = descprictorManager;
@@ -157,11 +153,11 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
         tabFolder.setSelection(0);
         tabFolder.pack();
 
-        AnimatorModelManager manager =
-                AnimatorModelManager.getInstance(AnimatorUtils.getAppManager());
-        Part rootPart = manager.getRootPart();
-
-        rootPart.addAnimatorModelListener(this);
+//        AnimatorModelManager manager =
+//                AnimatorModelManager.getInstance(AnimatorUtils.getAppManager());
+//        Part rootPart = manager.getRootPart();
+//
+//        rootPart.addAnimatorModelListener(this);
 
         listnerHelper = new PropertiesListenerHelper(this);
         // AnimatorBrowserViewer.addAnimationListener(this);
@@ -186,11 +182,11 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
             page.removePartListener(this);
         }
 
-        AnimatorModelManager manager =
-                AnimatorModelManager.getInstance(AnimatorUtils.getAppManager());
-        Part rootPart = manager.getRootPart();
-
-        rootPart.removeAnimatorModelListener(this);
+//        AnimatorModelManager manager =
+//                AnimatorModelManager.getInstance(AnimatorUtils.getAppManager());
+//        Part rootPart = manager.getRootPart();
+//
+//        rootPart.removeAnimatorModelListener(this);
 
         // AnimatorBrowserViewer.removeAnimationListener(this);
         AnimatorBrowserViewer.removeAnimationListener(listnerHelper);
@@ -439,131 +435,6 @@ public class DesignerPropertiesPage extends Page implements IPropertySheetPage,
         return styleTab;
     }
 
-    @Override
-    public void animationAdd(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void animationRemove(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void animationEdit(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void widgetAdd(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void widgetRemove(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void widgetEdit(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void keyframeAdd(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void keyframeRemove(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void keyframeEdit(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void keyframeMerge(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void actionAdd(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void actionRemove(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void actionEdit(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void frameAdd(AnimatorModelEvent e) {
-        // AnimatorModel animatorModel = e.getModel();
-        //
-        // if(animatorModel != null && animatorModel instanceof AnimatorFrame){
-        // CssStyleTab styleTab = getCssStyleTab();
-        // if(styleTab !=null){
-        // styleTab.setFrame((AnimatorFrame)animatorModel);
-        // }
-        // }
-    }
-
-    @Override
-    public void frameRemove(AnimatorModelEvent e) {
-
-    }
-
-    @Override
-    public void frameEdit(AnimatorModelEvent e) {
-        AnimatorModel animatorModel = e.getModel();
-
-        // if(animatorModel != null && animatorModel instanceof AnimatorFrame){
-        // CssStyleTab styleTab = getCssStyleTab();
-        // if(styleTab !=null){
-        // styleTab.refreshMethodWithFrame(false);
-        // }
-        // }
-    }
-
-    @Override
-    public void propertyChange(AnimatorModelEvent e) {
-        // lock comming
-        // when locked non show or disable
-        // AnimatorProperty propertiy = e.getAnimatorProperty();
-        // if(propertiy != null && propertiy.getPropertyName() == "LOCK"){
-        //
-        // }else{
-        //
-        // }
-
-    }
-
-    @Override
-    public void selectionChanged(AnimatorModelEvent e) {
-        // AnimatorModel model = e.getModel();
-        // if(model instanceof AnimatorFrame){
-        // Logger.trace("AnimatorFrame selection Changed");
-        //
-        // refreshWithFrame((AnimatorFrame)model);
-        // }/*else if(model instanceof AnimatorKeyframe){
-        // Logger.trace("AnimatorKeyframe selection Changed");
-        //
-        // }*/else{
-        //
-        // Logger.trace("not frame selection Changed");
-        // refreshWithFrame(null);
-        // }
-
-    }
-
     public void animationSnapShot2(AnimationEvent e) {
         if (mode == PropertiesMode.ANIMATOR) {
 
index 26ba95e..4b15a3c 100644 (file)
@@ -47,12 +47,12 @@ import org.eclipse.swt.widgets.Listener;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.DocumentPart;
 import org.tizen.webuibuilder.model.Part;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.PropertiesMode;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.PropertiesMode;
 import org.tizen.webuibuilder.utility.ResourceManager;
 
 
 /**
- * Instances of this class represent a property that represent a {@link DesignerPropertiesPage}.
+ * Instances of this class represent a property that represent a {@link PropertiesPage}.
  */
 public abstract class PropertiesTabItem extends CTabItem {
 
index faedd75..d0771d5 100644 (file)
@@ -44,7 +44,7 @@ import org.tizen.webuibuilder.model.DocumentPart;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.descriptors.EventDescriptor;
 import org.tizen.webuibuilder.model.descriptors.EventParamDescriptor;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.TabIndex;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.TabIndex;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesConstant;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem;
 import org.tizen.webuibuilder.ui.views.properties.method.Method;
index 4f98a54..0653da7 100644 (file)
@@ -42,7 +42,7 @@ import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
 import org.tizen.webuibuilder.model.descriptors.PropertyConditionDescriptor;
 import org.tizen.webuibuilder.model.descriptors.PropertyDescriptor;
 import org.tizen.webuibuilder.ui.views.properties.CategoryComposite;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.TabIndex;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.TabIndex;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesConstant;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem;
 import org.tizen.webuibuilder.ui.views.properties.method.IGroupMethod;
@@ -84,7 +84,6 @@ public class AttributesTab extends PropertiesTabItem {
         setText(PropertiesConstant.ATTRIBUTES);
         delegater = new AttributesEventDelegater(commandStack, this);
         factory = MethodCreationFactory.getInstance();
-        factory.setCommandStack(commandStack);
 
         refresh();
     }
index 4760a7d..b86c858 100644 (file)
@@ -25,7 +25,6 @@ package org.tizen.webuibuilder.ui.views.properties.method;
 
 import java.util.List;
 
-import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.webuibuilder.BuilderConstants;
@@ -42,7 +41,6 @@ import org.tizen.webuibuilder.ui.views.properties.method.Method.MethodType;
  */
 public class MethodCreationFactory {
 
-    private CommandStack commandStack;
     private Part model;
 
     private static MethodCreationFactory instance;
@@ -62,15 +60,6 @@ public class MethodCreationFactory {
         return instance;
     }
 
-    /**
-     * Sets a {@link CommandStack} for {@link HtmlMethod}.
-     * 
-     * @param commandStack
-     *            a {@link CommandStack}
-     */
-    public void setCommandStack(CommandStack commandStack) {
-        this.commandStack = commandStack;
-    }
 
     /**
      * Sets a {@link Part}
@@ -141,11 +130,11 @@ public class MethodCreationFactory {
                     method = combo;
                 }
                 break;
-            case HTMLSTRING:
-                method =
-                        new HtmlMethod(parent, SWT.NONE, methodType, name, value, displayName,
-                                       model, commandStack);
-                break;
+//            case HTMLSTRING:
+//                method =
+//                        new HtmlMethod(parent, SWT.NONE, methodType, name, value, displayName,
+//                                       model, commandStack);
+//                break;
             case IMAGE:
                 method =
                         new ImageMethod(parent, SWT.NONE, methodType, name, value, displayName,
index 55a480c..695a9e1 100644 (file)
 package org.tizen.webuibuilder.ui.views.properties.style;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.swt.SWT;
@@ -39,13 +39,13 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.forms.events.ExpansionAdapter;
 import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 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;
 import org.tizen.webuibuilder.animator.model.AnimatorModelManager;
 import org.tizen.webuibuilder.animator.model.AnimatorSelector;
-import org.tizen.webuibuilder.animator.model.AnimatorWidget;
 import org.tizen.webuibuilder.animator.ui.views.timeline.command.TimelineFrameCreateCommand;
 import org.tizen.webuibuilder.animator.utils.AnimatorUtils;
 import org.tizen.webuibuilder.model.DocumentPart;
@@ -62,8 +62,8 @@ import org.tizen.webuibuilder.model.descriptors.TypeDescriptor.Types;
 import org.tizen.webuibuilder.model.page.IPageDataListener;
 import org.tizen.webuibuilder.model.page.PageDataEvent;
 import org.tizen.webuibuilder.ui.views.properties.CategoryComposite;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.PropertiesMode;
-import org.tizen.webuibuilder.ui.views.properties.DesignerPropertiesPage.TabIndex;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.PropertiesMode;
+import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.TabIndex;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesConstant;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem;
 import org.tizen.webuibuilder.ui.views.properties.method.ClipMethod;
@@ -94,7 +94,7 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     private CssFile cssFile;
     private CssCategoryDescriptor fakeDescriptor;
 
-    // delegater
+    // Delegater
     private CssStyleEventDelegater cssDelegater;
     private CssStyleAnimationEventDelegater animDelegater;
 
@@ -104,7 +104,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
 
     // Methods
     private MethodCreationFactory factory;
-    private List<Method> methods = new ArrayList<Method>();
+    // private List<Method> methods = new ArrayList<Method>();
+    private Map<String, Method> methods = new HashMap<String, Method>();
     private CustomCSSMethod customCss;
     private MetricsMethod metrics;
     private ClipMethod clip;
@@ -117,8 +118,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     private AnimatorFrame frame;
 
     /**
-     * Constructs a new instance of this class given its parent tabFolder (which must be a
-     * CTabFolder), a {@link CommandStack}, a {@link CssDescriptor} and a {@link CssFile}.
+     * Constructs a new instance of this class given its parent tabFolder (which
+     * must be a CTabFolder), a {@link CommandStack}, a {@link CssDescriptor}
+     * and a {@link CssFile}.
      * 
      * @param tabFolder
      *            a CTabFolder. cannot be null
@@ -141,37 +143,49 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
         animDelegater = new CssStyleAnimationEventDelegater(commandStack, this);
 
         factory = MethodCreationFactory.getInstance();
-        factory.setCommandStack(commandStack);
 
-        createStyleContents();
+        createDesignerContents();
     }
 
-    /**
-     * createStyleContents
-     */
-    private void createStyleContents() {
-        // create no content method
-        if (noContent == null) {
+    private void createNoContent() {
+        if (noContent == null || noContent.isDisposed()) {
             noContent = new NoContentMethod(content, MethodType.STYLE);
             noContent.setLayoutData(new GridData(GridData.CENTER, GridData.FILL, true, true));
         }
+    }
 
-        // create multi content method
-        if (multiContent == null) {
+    private void createMultiContent() {
+        if (multiContent == null || multiContent.isDisposed()) {
             multiContent = new MultiSelectMethod(content, MethodType.STYLE);
             multiContent.setLayoutData(new GridData(GridData.CENTER, GridData.FILL, true, true));
         }
+    }
 
-        categoryContainer = new Composite(content, SWT.NONE);
-        categoryContainer.setLayout(new GridLayout(1, true));
-        categoryContainer.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+    private void createCategoryContainer() {
+        if (categoryContainer == null || categoryContainer.isDisposed()) {
+            categoryContainer = new Composite(content, SWT.NONE);
+            categoryContainer.setLayout(new GridLayout(1, true));
+            categoryContainer.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+        }
+    }
+
+    /**
+     * createStyleContents
+     */
+    private void createDesignerContents() {
+        // create no content method
+        createNoContent();
+
+        // create multi content method
+        createMultiContent();
+
+        // create category container
+        createCategoryContainer();
 
         // create methods
         List<CssCategoryDescriptor> descriptors = cssDescriptor.getCssCategoryDescriptors();
 
         for (CssCategoryDescriptor descriptor : descriptors) {
-            String categoryName = descriptor.getDisplayName();
-
             CategoryComposite categoryComposite = getCategory(descriptor);
 
             for (CssPropertyDescriptor property : descriptor.getCssPropertyDescriptors()) {
@@ -196,23 +210,19 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
                     method.setLabelRightData(32, 0);
                     method.setControlRightData(100, 0);
                 }
-                addListenerToMethod2(method);
+                addListenerToMethod(method);
 
                 method.setLabelTooltipText(property.getPropertyDisplayName());
                 // method.refresh();
-                methods.add(method);
+                methods.put(method.getMethodName(), method);
                 categoryComposite.setMethod(method);
             }
 
         }
 
-        for (Method method : methods) {
+        for (Method method : methods.values()) {
             applyCondition(method);
         }
-
-        // content.pack();
-        // content.layout();
-        // resizeScrolledComposite();
     }
 
     /**
@@ -241,15 +251,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     private void addListeners() {
         Part model = getModel();
         if (model != null) {
-            // model.addPartListener(cssDelegater);
-            // model.addCssListener(delegater);
-
-            // model.addPartListener(animDelegater);
             model.addCssListener(animDelegater);
 
             addCssListener();
-            // TODO
-            // selector.addCssSelectorListener(cssDelegater);
         }
 
     }
@@ -269,10 +273,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     private void removeListeners() {
         Part model = getModel();
         if (model != null) {
-            // model.removePartListener(cssDelegater);
-            // model.removeCssListener(delegater);
-
-            // model.removePartListener(animDelegater);
             model.removeCssListener(animDelegater);
         }
 
@@ -308,7 +308,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     /*
      * (non-Javadoc)
      * 
-     * @see org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#setModel(java.util.List)
+     * @see
+     * org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#setModel
+     * (java.util.List)
      */
     public void setModel(List<Part> models) {
         super.setModel(models);
@@ -378,8 +380,11 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     private void includeComposite(Composite composite) {
         GridData noContentData = (GridData) noContent.getLayoutData();
         GridData multiContentData = (GridData) multiContent.getLayoutData();
+
+        Logger logger = LoggerFactory.getLogger(this.getClass());
+
         if (categoryContainer == null || categoryContainer.isDisposed()) {
-            /* TODO Log */
+            logger.error("Category Conatainer disposed...");
         }
         GridData categoryData = (GridData) categoryContainer.getLayoutData();
 
@@ -405,7 +410,7 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             categoryData.exclude = false;
             categoryContainer.setVisible(true);
         } else {
-            // TODO Log(getClass(), "invalid composite for include to StyleTab.");
+            logger.error("Invalid composite for include to StyleTab");
         }
         // content.layout();
     }
@@ -413,7 +418,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     /*
      * (non-Javadoc)
      * 
-     * @see org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#refresh()
+     * @see
+     * org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#refresh()
      */
     @Override
     public void refresh() {
@@ -428,44 +434,43 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             includeComposite(multiContent);
         } else {
             /* defense code */
-            if (isAnimatorMode2()) {
-                includeComposite(noContent);
+            if (getMode().equals(PropertiesMode.ANIMATOR)) {
                 return;
             }
 
             if (methods == null || methods.isEmpty()) {
-                createStyleContents();
+                createDesignerContents();
             }
             includeComposite(categoryContainer);
 
             List<CssStyle> cloneStyles = new ArrayList<CssStyle>(selector.getStyles());
             boolean refreshFlag = true;
 
-            for (Method method : methods) {
+            for (Method method : methods.values()) {
                 refreshFlag = true;
                 String methodName = method.getMethodName();
                 String positionValue = BuilderConstants.EMPTY;
 
                 // refresh position
-                if(model.getPosition() != null){
-                       if (methodName.equals("width")) {                       
-                           positionValue = model.getPosition().width + "px";
-                           method.refreshValue(methodName, positionValue);
-                           refreshManagedMethods(methodName, positionValue, false);
-                           refreshFlag = false;
-                       } else if (methodName.equals("height")) {
-                           positionValue = model.getPosition().height + "px";
-                           method.refreshValue(methodName, positionValue);
-                           refreshManagedMethods(methodName, positionValue, false);
-                           refreshFlag = false;
-                       }
+                if (model.getPosition() != null) {
+                    if (methodName.equals("width")) {
+                        positionValue = model.getPosition().width + "px";
+                        method.refreshValue(methodName, positionValue);
+                        refreshManagedMethods(methodName, positionValue, false);
+                        refreshFlag = false;
+                    } else if (methodName.equals("height")) {
+                        positionValue = model.getPosition().height + "px";
+                        method.refreshValue(methodName, positionValue);
+                        refreshManagedMethods(methodName, positionValue, false);
+                        refreshFlag = false;
+                    }
                 }
 
                 for (CssStyle style : cloneStyles) {
                     if (methodName.equals(style.getKey())) {
                         String styleValue = style.getStringValue();
                         method.refreshValue(methodName, styleValue);
-//                        setCategoryBrief(method, methodName, styleValue);
+                        // setCategoryBrief(method, methodName, styleValue);
 
                         refreshManagedMethods(methodName, styleValue, true);
 
@@ -560,7 +565,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     /*
      * (non-Javadoc)
      * 
-     * @see org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#refresh(java.util.List)
+     * @see
+     * org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#refresh(
+     * java.util.List)
      */
     @Override
     public void refresh(List<String> keys) {
@@ -580,7 +587,7 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             return;
         }
 
-        Part model = getModel();
+        // Part model = getModel();
         this.frame = null;
         /* 1. part to frame */
         // if (model != null) {
@@ -594,49 +601,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     }
 
     /**
-     * Refreshes with {@link AnimatorFrame}
-     * 
-     * @param frame
-     *            a {@link AnimatorFrame}
-     */
-    public void refreshWithFrame(AnimatorFrame frame) {
-
-        /* TODO Log */
-
-        if (content.isDisposed()) {
-            return;
-        }
-
-        Part model = getModel();
-
-        /* 1. part to frame */
-        if (model != null) {
-            clear();
-            removeListeners();
-            super.setModel(null);
-        }
-
-        /* check to null */
-        if (frame == null) {
-            clear();
-            removeListeners();
-            super.setModel(null);
-            return;
-        }
-
-        /* 2. other frame to frame */
-        /* 3. same frame to frame */
-        boolean isSameFrame = false;
-        if (this.frame == frame) {
-            isSameFrame = true;
-        }
-
-        this.frame = frame;
-
-        refreshMethodWithFrame(isSameFrame);
-    }
-
-    /**
      * checkNameRestricted
      * 
      * @param restrictNames
@@ -679,90 +643,91 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     }
 
     /**
-     * resetMethod
+     * createAnimatorContents
      */
-    private void resetMethod() {
+    private void createAnimatorContents() {
+        // create no content method
+        createNoContent();
 
-        if (methods == null || methods.size() == 0) {
-            List<CssCategoryDescriptor> descriptors = cssDescriptor.getCssCategoryDescriptors();
+        // create multi content method
+        createMultiContent();
 
-            /* create parents composite */
-            categoryContainer = new Composite(content, SWT.NONE);
-            categoryContainer.setLayout(new GridLayout(1, true));
-            categoryContainer.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+        // create category container
+        createCategoryContainer();
 
-            for (CssCategoryDescriptor descriptor : descriptors) {
-                String categoryName = descriptor.getDisplayName();
-                String categoryRealName = descriptor.getName();
+        List<CssCategoryDescriptor> descriptors = cssDescriptor.getCssCategoryDescriptors();
 
-                String[] restrictCstegoryNames = { "custom" };
-                if (checkNameRestricted(restrictCstegoryNames, categoryRealName)) {
-                    continue;
-                }
+        for (CssCategoryDescriptor descriptor : descriptors) {
+            String categoryRealName = descriptor.getName();
 
-                CssCategoryDescriptor childDescriptor = descriptor;
-                String changerCstegoryNames = "transform";
-                if (changerCstegoryNames.equals(categoryRealName)) {
-                    childDescriptor = getFakeDescriptor(descriptor);
-                }
+            String[] restrictCstegoryNames = { "custom" };
+            if (checkNameRestricted(restrictCstegoryNames, categoryRealName)) {
+                continue;
+            }
 
-                CategoryComposite categoryComposite = getCategory(descriptor);
+            CssCategoryDescriptor childDescriptor = descriptor;
+            String changerCstegoryNames = "transform";
+            if (changerCstegoryNames.equals(categoryRealName)) {
+                childDescriptor = getFakeDescriptor(descriptor);
+            }
 
-                for (CssPropertyDescriptor property : childDescriptor.getCssPropertyDescriptors()) {
+            CategoryComposite categoryComposite = getCategory(descriptor);
 
-                    // TODO : get value from selector
-                    String value = property.getDefaultValue();
-                    Method method =
-                            factory.createMethod(categoryComposite.getClient(), property, value,
-                                                 MethodType.STYLE, true);
-                    if (method == null) {
-                        continue;
-                    }
+            for (CssPropertyDescriptor property : childDescriptor.getCssPropertyDescriptors()) {
 
-                    /* exception code for remove some method */
-                    String[] restrictNames = { "position", "left", "top", "width", "height" };
-                    if (checkNameRestricted(restrictNames, property.getPropertyName())) {
-                        /* TODO make descriptor */
-                        method.setControlable(false);
-                    }
+                // TODO : get value from selector
+                String value = property.getDefaultValue();
+                Method method =
+                        factory.createMethod(categoryComposite.getClient(), property, value,
+                                             MethodType.STYLE, true);
+                if (method == null) {
+                    continue;
+                }
 
-                    setManagedMethod(method);
-
-                    if (property.getInline()) {
-                        method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true,
-                                                          false, 1, 1));
-                        method.setLabelRightData(50, 1);
-                        method.setControlRightData(90, 0);
-                    } else if (changerCstegoryNames.equals(categoryRealName)) {
-                        method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true,
-                                                          false, 2, 1));
-                        method.setLabelRightData(32, 0);
-                        method.setControlRightData(90, 0);
-                    } else {
-                        method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true,
-                                                          false, 2, 1));
-                        method.setLabelRightData(32, 0);
-                        method.setControlRightData(100, 0);
-                    }
+                /* exception code for remove some method */
+                String[] restrictNames = { "position", "left", "top", "width", "height" };
+                if (checkNameRestricted(restrictNames, property.getPropertyName())) {
+                    /* TODO make descriptor */
+                    method.setControlable(false);
+                }
 
-                    // method.setDefaultValue(property.getDefaultValue());
-                    method.setLabelTooltipText(property.getPropertyDisplayName());
-                    method.refresh();
+                setManagedMethod(method);
 
-                    if (isGropMethodType(property) && isMethodEmptyName(method)) {
-                        addListenerFromGroupMethod(method);
-                    } else {
-                        methods.add(method);
-                    }
-                    addListenerToMethod2(method);
-                    method.enableFuncButton(true);
+                if (property.getInline()) {
+                    method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 1,
+                                                      1));
+                    method.setLabelRightData(50, 1);
+                    method.setControlRightData(90, 0);
+                } else if (changerCstegoryNames.equals(categoryRealName)) {
+                    method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2,
+                                                      1));
+                    method.setLabelRightData(32, 0);
+                    method.setControlRightData(90, 0);
+                } else {
+                    method.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2,
+                                                      1));
+                    method.setLabelRightData(32, 0);
+                    method.setControlRightData(100, 0);
                 }
 
-            }
+                // method.setDefaultValue(property.getDefaultValue());
+                method.setLabelTooltipText(property.getPropertyDisplayName());
+                method.refresh();
 
-            for (Method method : methods) {
-                applyCondition(method);
+                if (isGropMethodType(property) && isMethodEmptyName(method)) {
+                    addListenerFromGroupMethod(method);
+                } else {
+                    methods.put(method.getMethodName(), method);
+                }
+                addListenerToMethod(method);
+                method.enableFuncButton(true);
+                // categoryComposite.setMethod(method);
             }
+
+        }
+
+        for (Method method : methods.values()) {
+            applyCondition(method);
         }
         return;
     }
@@ -775,7 +740,10 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      */
     private void addListenerFromGroupMethod(Method method) {
         List<Method> childrenMethods = ((IGroupMethod) method).getChildMethods();
-        methods.addAll(childrenMethods);
+        for (Method child : childrenMethods) {
+            methods.put(child.getMethodName(), child);
+        }
+        // methods.addAll(childrenMethods);
         for (Method childMethod : childrenMethods) {
             if (childMethod instanceof GroupMethod && isMethodEmptyName(childMethod)) {
                 addListenerFromGroupMethod(childMethod);
@@ -825,22 +793,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     }
 
     /**
-     * methodsRefreshWithDefault
-     */
-    private void methodsRefreshWithDefault() {
-        for (Method method : methods) {
-            String methodName = method.getMethodName();
-
-            // if(methodName.equals("opacity")){
-            // int num = Integer.parseInt(method.getDefaultValue());
-            // method.refreshValue(methodName, String.valueOf(num*100));
-            // }else{
-            method.refreshValue(methodName, method.getDefaultValue());
-            // }
-        }
-    }
-
-    /**
      * Refreshes method with snapshot for animator.
      * 
      * @param map
@@ -855,8 +807,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
 
         if (methods == null || methods.size() == 0) {
             /* need reset because method getting patter is deferente */
-            resetMethod();
+            createAnimatorContents();
         }
+        includeComposite(categoryContainer);
 
         // basicMethodSetting(true);
         /* frame to properties */
@@ -865,107 +818,16 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             snapshotTocCssDelegater(map);
         }
 
-        includeComposite(categoryContainer);
-        content.pack();
-        content.layout();
-        resizeScrolledComposite();
-    }
-
-    /**
-     * Refreshes method with frame for animator.
-     * 
-     * @param isSameFrame
-     */
-    public void refreshMethodWithFrame(boolean isSameFrame) {
-        /* TODO Log */
-
-        if (frame == null) {
-            clear();
-            return;
-        }
-
-        resetMethod();
-
-        basicMethodSetting(isSameFrame);
-
-        /* frame to properties */
-        {
-            /* delegater set from frame */
-            frameTocCssDelegater();
-        }
+        // for (CategoryComposite category : categories) {
+        // category.refreshBrief();
+        // }
 
-        includeComposite(categoryContainer);
-        content.pack();
-        content.layout();
+        // content.pack();
+        // content.layout();
         resizeScrolledComposite();
     }
 
     /**
-     * basicMethodSetting
-     * 
-     * @param isSameFrame
-     */
-    private void basicMethodSetting(boolean isSameFrame) {
-
-        while (!isSameFrame) {
-
-            /* method refresh to default */
-            methodsRefreshWithDefault();
-
-            /* model to properties for properties initial setting */
-            AnimatorKeyframe key = (AnimatorKeyframe) frame.getParent();
-            if (key == null)
-                break;
-            AnimatorSelector selector = (AnimatorSelector) key.getParent();
-            if (selector == null)
-                break;
-            AnimatorWidget widget = (AnimatorWidget) selector.getParent();
-            if (widget == null)
-                break;
-            Part partModel = widget.getPartLink();
-            if (partModel == null)
-                break;
-
-            if (partModel != null) {
-                String sLeft = "left";
-                String sTop = "top";
-                String sWidth = "width";
-                String sHeight = "height";
-                Rectangle rect = partModel.getPosition();
-
-                Method method = getMethod(sLeft);
-                if (method != null) {
-                    method.refreshValue(sLeft, String.valueOf(rect.x));
-                }
-
-                method = getMethod(sTop);
-                if (method != null) {
-                    method.refreshValue(sTop, String.valueOf(rect.y));
-                }
-
-                method = getMethod(sWidth);
-                if (method != null) {
-                    method.refreshValue(sWidth, String.valueOf(rect.width));
-                }
-
-                method = getMethod(sHeight);
-                if (method != null) {
-                    method.refreshValue(sHeight, String.valueOf(rect.height));
-                }
-
-            }
-            break;
-        }
-    }
-
-    /**
-     * frameTocCssDelegater
-     */
-    private void frameTocCssDelegater() {
-        animDelegater.setFrame(frame);
-    }
-
-    /**
      * snapshotTocCssDelegater
      * 
      * @param map
@@ -975,16 +837,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     }
 
     /**
-     * Sets a {@link AnimatorFrame}
-     * 
-     * @param frame
-     *            a {@link AnimatorFrame}
-     */
-    public void setFrame(AnimatorFrame frame) {
-        this.frame = frame;
-    }
-
-    /**
      * Gets a {@link AnimatorFrame}.
      * 
      * @return a {@link AnimatorFrame}
@@ -1002,7 +854,7 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             category.getClient().dispose();
         }
 
-        for (Method method : methods) {
+        for (Method method : methods.values()) {
             method.dispose();
         }
 
@@ -1069,7 +921,14 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
         categories.add(categoryComposite);
         return categoryComposite;
     }
-    
+
+    /**
+     * Sets key/value to {@link Method} for brief message on category.
+     * 
+     * @param method a {@link Method}
+     * @param key
+     * @param value
+     */
     public void setCategoryBrief(Method method, String key, String value) {
         for (CategoryComposite category : categories) {
             if (category.hasMethod(method)) {
@@ -1082,23 +941,27 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
                     Part model = getModel();
                     value = model.getPosition().height + "px";
                 }
-                
+
                 category.setBriefMessage(key, value);
             }
         }
     }
 
     /**
-     * addListenerToMethod2
+     * addListenerToMethod
      * 
      * @param method
      *            {@link Method}
      */
-    private void addListenerToMethod2(final Method method) {
-        if (isAnimatorMode2()) {
+    private void addListenerToMethod(final Method method) {
+        PropertiesMode mode = getMode();
+        if (mode.equals(PropertiesMode.DESIGN)) {
+            addDesignerListenerToMethod(method);
+        } else if (mode.equals(PropertiesMode.ANIMATOR)) {
             addAnimationListenerToMethod(method);
         } else {
-            addDesignerListenerToMethod(method);
+            Logger logger = LoggerFactory.getLogger(this.getClass());
+            logger.error("Invalid properties mode. Mode is " + mode);
         }
     }
 
@@ -1228,7 +1091,7 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      * Applies conditions in this has all the {@link Method}.
      */
     public void applyConditions() {
-        for (Method method : methods) {
+        for (Method method : methods.values()) {
             applyCondition(method);
         }
     }
@@ -1295,22 +1158,9 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      * @return a {@link Method}
      */
     public Method getMethod(String name) {
-        for (Method method : methods) {
-            if (method.getMethodName().equals(name)) {
-                return method;
-            }
-        }
-        return null;
+        return methods.get(name);
     }
 
-    // public void getNSetMethod(String name, String value) {
-    // Method method = getMethod(name);
-    // if (method != null) {
-    // method.setValue(value);
-    // }
-    // return;
-    // }
-
     /**
      * getEnableByParent
      * 
@@ -1327,15 +1177,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     }
 
     /**
-     * Get list of {@link Method}.
-     * 
-     * @return list of {@link Method}
-     */
-    public List<Method> getMethods() {
-        return methods;
-    }
-
-    /**
      * Applies condition by child with {@link Method}.
      * 
      * @param method
@@ -1361,48 +1202,12 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
         }
     }
 
-    /**
-     * Gets a method with parent.
-     * 
-     * @param parentName
-     *            parent method name
-     * @param name
-     *            method name
-     * @return a {@link Method}
-     */
-    // public Method getMethodByParent(String parentName, String name) {
-    // if (parentName == null || name == null || getModel() instanceof DocumentPart) {
-    // return null;
-    // }
-    //
-    // Method parent = getMethod(parentName);
-    // if (parent != null) {
-    // if (parent instanceof IGroupMethod) {
-    // List<Method> children = ((IGroupMethod) parent).getChildMethods();
-    // for (Method child : children) {
-    // if (child.getMethodName().equals(name)) {
-    // return child;
-    // }
-    // }
-    // }
-    // }
-    // return null;
-    // }
-
-    /**
-     * isAnimatorMode2
-     * 
-     * @return
-     */
-    private boolean isAnimatorMode2() {
-        return (getMode() == PropertiesMode.ANIMATOR);
-    }
-
     /*
      * (non-Javadoc)
      * 
      * @see
-     * org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#changeMode(org.tizen.webuibuilder
+     * org.tizen.webuibuilder.ui.views.properties.PropertiesTabItem#changeMode
+     * (org.tizen.webuibuilder
      * .ui.views.properties.DesignerPropertiesPage.PropertiesMode)
      */
     @Override
@@ -1412,11 +1217,13 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
         clear();
 
         if (methods == null || methods.isEmpty()) {
-            if (isAnimatorMode2()) {
-                resetMethod();
+            if (mode.equals(PropertiesMode.DESIGN)) {
+                createDesignerContents();
+            } else if (mode.equals(PropertiesMode.ANIMATOR)) {
+                createAnimatorContents();
             } else {
-                createStyleContents();
-                // refresh();
+                Logger logger = LoggerFactory.getLogger(this.getClass());
+                logger.error("Invalid properties mode. Mode is " + mode);
             }
         }
     }
@@ -1461,8 +1268,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      * (non-Javadoc)
      * 
      * @see
-     * org.tizen.webuibuilder.model.page.IPageDataListener#pageChanged(org.tizen.webuibuilder.model
-     * .page.PageDataEvent)
+     * org.tizen.webuibuilder.model.page.IPageDataListener#pageChanged(org.tizen
+     * .webuibuilder.model .page.PageDataEvent)
      */
     @Override
     public void pageChanged(PageDataEvent e) {
@@ -1476,8 +1283,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      * (non-Javadoc)
      * 
      * @see
-     * org.tizen.webuibuilder.model.page.IPageDataListener#pagePreDelete(org.tizen.webuibuilder.
-     * model.page.PageDataEvent)
+     * org.tizen.webuibuilder.model.page.IPageDataListener#pagePreDelete(org
+     * .tizen.webuibuilder. model.page.PageDataEvent)
      */
     @Override
     public void pagePreDelete(PageDataEvent e) {
@@ -1489,8 +1296,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      * (non-Javadoc)
      * 
      * @see
-     * org.tizen.webuibuilder.model.page.IPageDataListener#pageRenamed(org.tizen.webuibuilder.model
-     * .page.PageDataEvent)
+     * org.tizen.webuibuilder.model.page.IPageDataListener#pageRenamed(org.tizen
+     * .webuibuilder.model .page.PageDataEvent)
      */
     @Override
     public void pageRenamed(PageDataEvent e) {