UIB : Fix CssSelector managing on Part. 76/21276/1
authornakyoung2.choi <nakyoung2.choi@samsung.com>
Fri, 16 May 2014 15:30:17 +0000 (00:30 +0900)
committernakyoung2.choi <nakyoung2.choi@samsung.com>
Fri, 16 May 2014 15:30:17 +0000 (00:30 +0900)
Change-Id: Id3d78f1f51a34375a238341f52152ab9dc447304
Signed-off-by: nakyoung2.choi <nakyoung2.choi@samsung.com>
20 files changed:
org.tizen.webuibuilder/src/org/tizen/webuibuilder/bridge/DesignerGoingBridge.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/ChangeCssSelectorCommand.java [new file with mode: 0644]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/CreateCssSelectorCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/DesignerMoveLayoutCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/DesignerResizeAndMoveLayoutCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/DesignerResizeLayoutCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/SetCssStyleCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/editparts/HoverViewerEditPart.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerAbsoluteDragEditPolicy.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerDragEditPolicy.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/viewer/HoverBrowserViewer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/Part.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/css/CssSelector.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/pagetemplate/action/CssSelecotrAction.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/editor/PageDesigner.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/editor/PageDesignerForHTML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/nscreen/NScreenItem.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/PropertiesPage.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/style/CssStyleEventDelegater.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/style/CssStyleTab.java

index d9fcb85..278a5ae 100644 (file)
@@ -633,5 +633,9 @@ public class DesignerGoingBridge extends GoingBridge {
 
         call("modifyStyle", new Jsonizable[] { new JsString(result) });
     }
+    
+    public void modifyStyle(String style) {
+        call("modifyStyle", new Jsonizable[] { new JsString(style) });
+    }
 
 }
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/ChangeCssSelectorCommand.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/ChangeCssSelectorCommand.java
new file mode 100644 (file)
index 0000000..01c581a
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * UI Builder
+ *
+ * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.webuibuilder.gef.commands;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.gef.commands.Command;
+import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.css.CssFile;
+import org.tizen.webuibuilder.model.css.CssSelector;
+import org.tizen.webuibuilder.model.css.CssStyle;
+import org.tizen.webuibuilder.model.page.PageData;
+
+abstract public class ChangeCssSelectorCommand extends Command {
+
+    private Part model;
+    private String selectorName;
+    private PageData pageData;
+    private CssFile appliedCssFile;
+    private CssSelector newSelector = null;
+    
+    public ChangeCssSelectorCommand(Object model, PageData pageData, String selectorName) {
+        setModel(model);
+        this.pageData = pageData;
+        this.selectorName = selectorName;
+    }
+    
+    public void setModel(Object model) {
+        this.model = (Part) model;
+    }
+    
+    abstract public void execute2();
+    abstract public void undo2();
+    
+    /**
+     * Do not override this method. You must override execute2().
+     */
+    @Override
+    public void execute() {
+        // prepare selector
+        Map<String, CssSelector> selectorMap = model.getEditSelectorMap();
+        CssSelector selector = selectorMap.get(selectorName); 
+        if (selector == null) {
+            // create selector
+            selector = new CssSelector(selectorName);
+            selectorMap.put(selectorName, selector);
+            appliedCssFile = pageData.getCurrentCssFile();
+            appliedCssFile.addCssSelector(selector);
+            newSelector = selector;
+            
+        }
+        
+        
+        
+        // Setting all selector of Part
+//        List<CssFile> appliedCssFileList = pageData.getAppliedCssFiles();
+//        int index = appliedCssFileList.indexOf(appliedCssFile);
+//        int size = appliedCssFileList.size();
+//        Map<String, CssSelector> allMap = model.getAllSelectorMap();
+//        boolean skip = false;
+//        CssSelector cloneSelector = selector.cloneCssSelector(selectorName);
+//        if (size - 1 == index) {
+//            allMap.put(selectorName, cloneSelector);
+//        } else {
+//            for (int i = index + 1; i <= size - 1; i++) {
+//                CssSelector targetSelector = allMap.get(selectorName); 
+//                if (targetSelector != null) {
+//                    for (CssStyle style : selector.getStyles()) {
+//                        targetSelector.getStyleMap().put(style.getKey(), style);
+//                    }
+//                    skip = true;
+//                    break;
+//                }
+//            }
+//            if (!skip) {
+//                allMap.put(selectorName, cloneSelector);
+//            }
+//        }
+        
+        execute2();
+    }
+    
+    /**
+     * Do not override this method. You must override undo2().
+     */
+    @Override
+    public void undo() {
+        undo2();
+        if (newSelector != null) {
+            model.getEditSelectorMap().remove(newSelector);
+            model.getAllSelectorMap().remove(newSelector);
+            appliedCssFile.removeCssSelector(newSelector);
+        }
+    }
+    
+    public Part getModel() {
+        return model;
+    }
+    
+    public String getSelectorName() {
+        return selectorName;
+    }
+}
index c08f086..a9635af 100644 (file)
@@ -27,52 +27,55 @@ import org.eclipse.gef.commands.Command;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.css.CssFile;
 import org.tizen.webuibuilder.model.css.CssSelector;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
-public class CreateCssSelectorCommand extends Command {
+public class CreateCssSelectorCommand extends ChangeCssSelectorCommand {
 
-    private CssFile cssFile;
-    private CssSelector selector;
-    private Part part;
-    private String selectorName;
-
-    public CreateCssSelectorCommand(CssFile cssFile, Part part, CssSelector selector) {
-        this.cssFile = cssFile;
-        this.part = part;
-        this.selector = selector;
-    }
-
-    public CreateCssSelectorCommand(CssFile cssFile, Part part, String selectorName) {
-        this.cssFile = cssFile;
-        this.part = part;
-        this.selectorName = selectorName;
+    public CreateCssSelectorCommand(PageData pageData, Part model, String selectorName) {
+        super(model, pageData, selectorName);
     }
 
     @Override
     public boolean canExecute() {
-        if (cssFile == null || part == null || selectorName == null || selectorName.isEmpty()) {
-            return false;
-        } else if (cssFile.getSelector(selectorName) != null) {
-            return false;
-        } else {
+        Part model = getModel();
+        if (getSelectorName() != null && !getSelectorName().isEmpty() && model != null) {
             return true;
+        } else {
+            return false;
         }
     }
 
-    @Override
-    public void execute() {
-        if (selector == null) {
-            selector = new CssSelector(selectorName);
-        }
+//    @Override
+//    public void execute() {
+//        if (selector == null) {
+//            selector = new CssSelector(selectorName);
+//        }
+//
+//        cssFile.addCssSelector(selector);
+//        part.addSelector(selector.getSelectorName(), selector);
+//    }
+//
+//    @Override
+//    public void undo() {
+//        cssFile.removeCssSelector(selector);
+//        part.removeSelector(selector.getSelectorName());
+//    }
 
-        cssFile.addCssSelector(selector);
-        part.addSelector(selector.getSelectorName(), selector);
+    @Override
+    public void execute2() {
+        String selectorName = getSelectorName();
+        CssSelector selector = new CssSelector(selectorName);
+        Part model = getModel();
+        model.addSelector(selectorName, selector);
     }
 
     @Override
-    public void undo() {
-        cssFile.removeCssSelector(selector);
-        part.removeSelector(selector.getSelectorName());
+    public void undo2() {
+        // TODO Auto-generated method stub
+        String selectorName = getSelectorName();
+        Part model = getModel();
+        model.removeSelector(selectorName);
     }
 
 }
index 3a43db6..49986ae 100644 (file)
 
 package org.tizen.webuibuilder.gef.commands;
 
+import java.util.List;
+import java.util.Map;
+
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.commands.Command;
 import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.css.CssFile;
+import org.tizen.webuibuilder.model.css.CssSelector;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
-public class DesignerMoveLayoutCommand extends Command {
-
-    private Part model;
+public class DesignerMoveLayoutCommand extends ChangeCssSelectorCommand {
 
     private Point delta;
     private Point oldPosition;
+    
 
-    public DesignerMoveLayoutCommand(Object model, Point delta) {
-        setModel(model);
+    public DesignerMoveLayoutCommand(Object model, Point delta, PageData pageData, String selectorName) {
+        super(model, pageData, selectorName);
         setDelta(delta);
     }
 
@@ -45,19 +50,69 @@ public class DesignerMoveLayoutCommand extends Command {
         this.delta = delta;
     }
 
-    public void setModel(Object model) {
-        this.model = (Part) model;
-    }
+//    public void setModel(Object model) {
+//        this.model = (Part) model;
+//    }
+
+//    @Override
+//    public void execute() {
+//        Map<String, CssSelector> selectorMap = model.getEditSelectorMap();
+//        // create new selector
+//        CssSelector selector = selectorMap.get(selectorName); 
+//        if (selector == null) {
+//            selector = new CssSelector(selectorName);
+//            selectorMap.put(selectorName, selector);
+//            pageData.getCurrentCssFile().addCssSelector(selector);
+//            newSelector = selector;
+//        }
+//        
+//        Rectangle pos = model.getPositionProperty();
+//        oldPosition = new Point(pos.x, pos.y);
+//        model.setPosition(new Point(oldPosition.x + delta.x, oldPosition.y + delta.y));
+//        
+//        List<CssFile> appliedCssFileList = pageData.getAppliedCssFiles();
+//        int index = appliedCssFileList.indexOf(pageData.getCurrentCssFile());
+//        int size = appliedCssFileList.size();
+//        Map<String, CssSelector> allMap = model.getAllSelectorMap();
+//        boolean skip = false;
+//        if (size - 1 == index) {
+//            allMap.put(selectorName, selector);
+//        } else {
+//            for (int i = index + 1; i <= size - 1; i++) {
+//                if (allMap.get(selectorName) != null) {
+//                    skip = true;
+//                    break;
+//                }
+//            }
+//            if (!skip) {
+//                allMap.put(selectorName, selector);
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public void undo() {
+//        if (oldPosition != null) {
+//            model.setPosition(new Point(oldPosition.x, oldPosition.y));
+//            if (newSelector != null) {
+//                model.getEditSelectorMap().remove(newSelector);
+//                model.getAllSelectorMap().remove(newSelector);
+//                appliedCssFile.removeCssSelector(newSelector);
+//            }
+//        }
+//    }
 
     @Override
-    public void execute() {
+    public void execute2() {
+        Part model = getModel();
         Rectangle pos = model.getPositionProperty();
         oldPosition = new Point(pos.x, pos.y);
         model.setPosition(new Point(oldPosition.x + delta.x, oldPosition.y + delta.y));
     }
 
     @Override
-    public void undo() {
+    public void undo2() {
+        Part model = getModel();
         if (oldPosition != null) {
             model.setPosition(new Point(oldPosition.x, oldPosition.y));
         }
index 427664d..9b9ad31 100644 (file)
@@ -25,24 +25,58 @@ package org.tizen.webuibuilder.gef.commands;
 
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.commands.Command;
 import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
-public class DesignerResizeAndMoveLayoutCommand extends Command {
+public class DesignerResizeAndMoveLayoutCommand extends ChangeCssSelectorCommand {
 
-    private Part model;
 
     private Rectangle delta;
     private Rectangle oldLayout;
 
-    public DesignerResizeAndMoveLayoutCommand(Object model, Rectangle delta) {
-        this.model = (Part)model;
+    public DesignerResizeAndMoveLayoutCommand(Object model, Rectangle delta, PageData pageData, String selectorName) {
+        super(model, pageData, selectorName);
         this.delta = delta;
     }
 
+//    @Override
+//    public void execute() {
+//        Map<String, CssSelector> selectorMap = model.getEditSelectorMap();
+//        // create new selector
+//        if (selectorMap.get(selectorName) == null) {
+//            CssSelector selector = new CssSelector(selectorName);
+//            selectorMap.put(selectorName, selector);
+//        }
+//        if (model.getPositionMode() == Part.PositionMode.ABSOLUTE_POSITION) {
+//            oldLayout = new Rectangle(model.getPositionProperty());
+//            if (delta.x != 0 || delta.y != 0) {
+//                model.setPosition(new Point(oldLayout.x + delta.x, oldLayout.y + delta.y));
+//            }
+//            if (delta.width != 0 || delta.height != 0) {
+//                model.setSize(new Point(oldLayout.width + delta.width, oldLayout.height + delta.height));
+//            }
+//        } else if (model.getPositionMode() == Part.PositionMode.RELATIVE_POSITION) {
+//            oldLayout = new Rectangle(model.getPositionProperty());
+//            if (delta.x != 0 || delta.y != 0) {
+//                model.setPosition(new Point(oldLayout.x + delta.x, oldLayout.y + delta.y));
+//            }
+//            if (delta.width != 0 || delta.height != 0) {
+//                model.setSize(new Point(oldLayout.width + delta.width, oldLayout.height + delta.height));
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public void undo() {
+//        if (oldLayout != null) {
+//            model.setPosition(oldLayout);
+//        }
+//    }
+
     @Override
-    public void execute() {
+    public void execute2() {
+        Part model = getModel();
         if (model.getPositionMode() == Part.PositionMode.ABSOLUTE_POSITION) {
             oldLayout = new Rectangle(model.getPositionProperty());
             if (delta.x != 0 || delta.y != 0) {
@@ -63,7 +97,8 @@ public class DesignerResizeAndMoveLayoutCommand extends Command {
     }
 
     @Override
-    public void undo() {
+    public void undo2() {
+        Part model = getModel();
         if (oldLayout != null) {
             model.setPosition(oldLayout);
         }
index 544d186..070bda2 100644 (file)
@@ -25,19 +25,18 @@ package org.tizen.webuibuilder.gef.commands;
 
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.commands.Command;
 import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
-public class DesignerResizeLayoutCommand extends Command {
+public class DesignerResizeLayoutCommand extends ChangeCssSelectorCommand {
 
-    private Part model;
 
     private Dimension delta;
     private Dimension oldSize;
 
-    public DesignerResizeLayoutCommand(Object model, Dimension delta) {
-        setModel(model);
+    public DesignerResizeLayoutCommand(Object model, Dimension delta, PageData pageData, String selectorName) {
+        super(model, pageData, selectorName);
         setDelta(delta);
     }
 
@@ -45,18 +44,40 @@ public class DesignerResizeLayoutCommand extends Command {
         this.delta = delta;
     }
 
-    public void setModel(Object model) {
-        this.model = (Part) model;
-    }
+//    public void setModel(Object model) {
+//        this.model = (Part) model;
+//    }
+//
+//    @Override
+//    public void execute() {
+//        Map<String, CssSelector> selectorMap = model.getEditSelectorMap();
+//        // create new selector
+//        if (selectorMap.get(selectorName) == null) {
+//            CssSelector selector = new CssSelector(selectorName);
+//            selectorMap.put(selectorName, selector);
+//        }
+//        
+//        oldSize = new Dimension(model.getPositionProperty().width, model.getPositionProperty().height);
+//        model.setSize(new Point(oldSize.width + delta.width, oldSize.height + delta.height));
+//    }
+//
+//    @Override
+//    public void undo() {
+//        if (oldSize != null) {
+//            model.setSize(new Point(oldSize.width, oldSize.height));
+//        }
+//    }
 
     @Override
-    public void execute() {
+    public void execute2() {
+        Part model = getModel();
         oldSize = new Dimension(model.getPositionProperty().width, model.getPositionProperty().height);
-        model.setSize(new Point(oldSize.width + delta.width, oldSize.height + delta.height));
+        model.setSize(new Point(oldSize.width + delta.width, oldSize.height + delta.height));        
     }
 
     @Override
-    public void undo() {
+    public void undo2() {
+        Part model = getModel();
         if (oldSize != null) {
             model.setSize(new Point(oldSize.width, oldSize.height));
         }
index ece87c3..a61c191 100644 (file)
 
 package org.tizen.webuibuilder.gef.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.css.CssFile;
 import org.tizen.webuibuilder.model.css.CssSelector;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
 /**
  * The command to set css style.
  */
-public class SetCssStyleCommand extends Command {
-
-    /**
-     * A {@link CssFile}.
-     */
-    private CssFile cssFile;
-
-    /**
-     * A {@link Part}.
-     */
-    private Part part;
-
-    /**
-     * A {@link CssSelector}.
-     */
-    private CssSelector selector;
+public class SetCssStyleCommand extends ChangeCssSelectorCommand {
 
     /**
      * A css style name.
@@ -76,11 +61,9 @@ public class SetCssStyleCommand extends Command {
      * @param value
      *            css style value
      */
-    public SetCssStyleCommand(CssFile cssFile, Part part, CssSelector selector, String key,
+    public SetCssStyleCommand(PageData pageData, Part part, String selectorName, String key,
             String value) {
-        this.cssFile = cssFile;
-        this.part = part;
-        this.selector = selector;
+        super(part, pageData, selectorName);
         this.key = key;
         this.value = value;
     }
@@ -88,52 +71,64 @@ public class SetCssStyleCommand extends Command {
     /**
      * Checks whether a {@link SetCssStyleCommand} can be executed.
      * 
-     * @return <code>true</code> if a {@link SetCssStyleCommand} can be executed, and
-     *         <code>false</code> otherwise
+     * @return <code>true</code> if a {@link SetCssStyleCommand} can be
+     *         executed, and <code>false</code> otherwise
      */
-    @Override
-    public boolean canExecute() {
-        if (cssFile == null || part == null || selector == null) {
-            return false;
-        } else {
-            if (part.getIdPropertyValue().equals(selector.getPartId())) {
-                return true;
-            } else {
-                return false;
-            }
-        }
-    }
+    // @Override
+    // public boolean canExecute() {
+    // if (cssFile == null || part == null || selector == null) {
+    // return false;
+    // } else {
+    // if (part.getIdPropertyValue().equals(selector.getPartId())) {
+    // return true;
+    // } else {
+    // return false;
+    // }
+    // }
+    // }
+    //
+    // /**
+    // * Executes a {@link SetCssStyleCommand}.
+    // */
+    // @Override
+    // public void execute() {
+    // if (canExecute()) {
+    // if (oldValue == null) {
+    // oldValue = selector.getPropertyValue(key);
+    // }
+    //
+    // if (cssFile.getSelector(selector.getSelectorName()) == null) {
+    // cssFile.addCssSelector(selector);
+    // }
+    // selector.setStyle(key, value);
+    // String selectorName = selector.getSelectorName();
+    //
+    // if (part.getSelector(selectorName) == null) {
+    // part.addSelector(selectorName, selector);
+    // }
+    // part.setSelectorPropertyValue(selectorName, key, value);
+    // }
+    // }
+    //
+    // /**
+    // * Undoes a {@link SetCssStyleCommand}.
+    // */
+    // @Override
+    // public void undo() {
+    // selector.setStyle(key, oldValue);
+    // part.setSelectorPropertyValue(selector.getSelectorName(), key, oldValue);
+    // }
 
-    /**
-     * Executes a {@link SetCssStyleCommand}.
-     */
     @Override
-    public void execute() {
-        if (canExecute()) {
-            if (oldValue == null) {
-                oldValue = selector.getPropertyValue(key);
-            }
-
-            if (cssFile.getSelector(selector.getSelectorName()) == null) {
-                cssFile.addCssSelector(selector);
-            }
-            selector.setStyle(key, value);
-            String selectorName = selector.getSelectorName();
-
-            if (part.getSelector(selectorName) == null) {
-                part.addSelector(selectorName, selector);
-            }
-            part.setSelectorPropertyValue(selectorName, key, value);
-        }
+    public void execute2() {
+        Part part = getModel();
+        part.setSelectorPropertyValue(getSelectorName(), key, value);
     }
 
-    /**
-     * Undoes a {@link SetCssStyleCommand}.
-     */
     @Override
-    public void undo() {
-        selector.setStyle(key, oldValue);
-        part.setSelectorPropertyValue(selector.getSelectorName(), key, oldValue);
+    public void undo2() {
+        Part part = getModel();
+        part.setSelectorPropertyValue(getSelectorName(), key, oldValue);
     }
 
 }
index 0762100..17e5b1a 100644 (file)
@@ -27,6 +27,7 @@ import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.draw2d.FreeformLayer;
 import org.eclipse.draw2d.IClippingStrategy;
@@ -48,6 +49,8 @@ import org.tizen.webuibuilder.bridge.DesignerGoingBridge.WidgetPosition;
 import org.tizen.webuibuilder.gef.figure.PageFigure;
 import org.tizen.webuibuilder.gef.figure.PartFigure;
 import org.tizen.webuibuilder.gef.figure.WidgetFigure;
+import org.tizen.webuibuilder.gef.policies.DesignerAbsoluteDragEditPolicy;
+import org.tizen.webuibuilder.gef.policies.DesignerDragEditPolicy;
 import org.tizen.webuibuilder.gef.policies.HoverViewerXYLayoutEditPolicy;
 import org.tizen.webuibuilder.gef.tools.HoverViewerDragEditPartsTracker;
 import org.tizen.webuibuilder.gef.viewer.HoverBrowserViewer;
@@ -55,7 +58,11 @@ import org.tizen.webuibuilder.model.IPartListener;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.PartEvent;
 import org.tizen.webuibuilder.model.css.CssEvent;
+import org.tizen.webuibuilder.model.css.CssFile;
+import org.tizen.webuibuilder.model.css.CssSelector;
+import org.tizen.webuibuilder.model.css.CssStyle;
 import org.tizen.webuibuilder.model.css.ICssListener;
+import org.tizen.webuibuilder.model.page.PageData;
 import org.tizen.webuibuilder.ui.editor.ruler.DesignerGuide;
 
 
@@ -259,7 +266,75 @@ public class HoverViewerEditPart extends AbstractGraphicalEditPart implements IP
     @Override
     public void needRefresh(CssEvent event) {
         // called needRefresh(e) in HoverVrowserViewer()
+        String selectorName = event.getSelectorName();
+        if (selectorName == null) {
+            ((HoverBrowserViewer) getViewer()).updateStyle();
+        }
+        PageData pageData = ((HoverBrowserViewer)getViewer()).getPageData();
+        Part model = (Part)getModel();
+        CssSelector selector = model.getSelector(selectorName);
+        List<CssFile> appliedCssFileList = pageData.getAppliedCssFiles();
+        int index = appliedCssFileList.indexOf(pageData.getCurrentCssFile());
+        int size = appliedCssFileList.size();
+        Map<String, CssSelector> allMap = model.getAllSelectorMap();
+        CssSelector cloneSelector = selector.cloneCssSelector(selectorName);
+        
+//        if (size - 1 == index) {
+//            
+//            allMap.put(selectorName, cloneSelector);
+//            
+//        } else {
+            for (int i = index + 1; i < size; i++) {
+                CssFile cssFile = appliedCssFileList.get(i);
+                CssSelector skipSelector = cssFile.getSelector(selectorName);
+                if (skipSelector == null) {
+                    continue;
+                }
+                Map<String, CssStyle> skipStyleMap = skipSelector.getStyleMap();
+                for (CssStyle style : cloneSelector.getStyles()) {
+                    if (skipStyleMap.get(style.getKey()) != null) {
+                        cloneSelector.getStyleMap().remove(style.getKey());
+//                        allMap.get(selectorName).setStyle(style);
+//                        allMap.put(style.getKey(), style);
+                    }
+                }
+                
+                
+                
+//                CssSelector targetSelector = allMap.get(selectorName); 
+//                if (targetSelector != null) {
+//                    for (CssStyle style : selector.getStyles()) {
+//                        targetSelector.getStyleMap().put(style.getKey(), style);
+//                    }
+//                    skip = true;
+//                    break;
+//                }
+            }
+            for (CssStyle style : cloneSelector.getStyles()) {
+                allMap.get(selectorName).setStyle(style);
+            }
+//            for (int i = 0; i <= index; i++) {
+//                allMap.
+//            }
+//            if (!skip) {
+//                allMap.put(selectorName, cloneSelector);
+//            }
+//        }
         ((HoverBrowserViewer) getViewer()).updateStyle();
+        
+        if (event.getPropertyKey() == null) {
+            return;
+        }
+        if (event.getPropertyKey().equals("position")) {
+            if (((Part) getModel()).getPositionMode() == Part.PositionMode.ABSOLUTE_POSITION) {
+                installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,
+                                  new DesignerAbsoluteDragEditPolicy());
+            }
+            if (((Part) getModel()).getPositionMode() == Part.PositionMode.RELATIVE_POSITION) {
+                installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DesignerDragEditPolicy());
+            }
+            refreshVisuals();
+        }
     }
 
     @SuppressWarnings("rawtypes")
index 3336b59..47cae4e 100644 (file)
@@ -43,7 +43,6 @@ import org.eclipse.gef.handles.MoveHandle;
 import org.eclipse.gef.requests.AlignmentRequest;
 import org.eclipse.gef.requests.ChangeBoundsRequest;
 import org.eclipse.swt.graphics.Color;
-import org.tizen.webuibuilder.gef.commands.DesignerChangeLayoutCommand;
 import org.tizen.webuibuilder.gef.commands.DesignerMoveLayoutCommand;
 import org.tizen.webuibuilder.gef.commands.DesignerResizeAndMoveLayoutCommand;
 import org.tizen.webuibuilder.gef.commands.DesignerResizeLayoutCommand;
@@ -51,7 +50,9 @@ import org.tizen.webuibuilder.gef.commands.WidgetRelation;
 import org.tizen.webuibuilder.gef.editparts.DesignerRootEditPart;
 import org.tizen.webuibuilder.gef.editparts.HoverViewerEditPart;
 import org.tizen.webuibuilder.gef.figure.SelectionBorder;
+import org.tizen.webuibuilder.gef.viewer.HoverBrowserViewer;
 import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.page.PageData;
 
 
 public class DesignerAbsoluteDragEditPolicy extends ResizableEditPolicy {
@@ -60,6 +61,11 @@ public class DesignerAbsoluteDragEditPolicy extends ResizableEditPolicy {
 
     @Override
     public Command getCommand(Request request) {
+        HoverBrowserViewer viewer = (HoverBrowserViewer) getHost().getViewer();
+        PageData pageData = viewer.getPageData();
+        Part part = (Part) getHost().getModel();
+        String selectorName = part.getDefaultSelectorName();
+        
         if (REQ_RESIZE.equals(request.getType())) {
             Dimension sizeDelta = ((ChangeBoundsRequest) request).getSizeDelta();
             sizeDelta.width /=
@@ -78,18 +84,22 @@ public class DesignerAbsoluteDragEditPolicy extends ResizableEditPolicy {
             if((direct & PositionConstants.NORTH) != 0){
                 layoutDelta.y -= sizeDelta.height; 
             }
+            
+            
             if(layoutDelta.x != 0 || layoutDelta.y != 0){
                 layoutDelta.width = sizeDelta.width;
                 layoutDelta.height = sizeDelta.height;
-                return new DesignerResizeAndMoveLayoutCommand(getHost().getModel(), layoutDelta);
+                return new DesignerResizeAndMoveLayoutCommand(part, layoutDelta, pageData, selectorName);
             } else {
-                return new DesignerResizeLayoutCommand(getHost().getModel(), sizeDelta);
+                return new DesignerResizeLayoutCommand(part, sizeDelta, pageData, selectorName);
             }
             // return new DesignerChangeLayoutCommand(getHost().getModel(),
             // ((ChangeBoundsRequest) request)
             // .getTransformedRectangle(rect));
         }
         if (REQ_MOVE.equals(request.getType())) {
+            
+            
             Point moveDelta = ((ChangeBoundsRequest) request).getMoveDelta();
             moveDelta.x /= ((DesignerRootEditPart) getHost().getRoot()).getZoomManager().getZoom();
             moveDelta.y /= ((DesignerRootEditPart) getHost().getRoot()).getZoomManager().getZoom();
@@ -99,7 +109,9 @@ public class DesignerAbsoluteDragEditPolicy extends ResizableEditPolicy {
             // return new DesignerChangeLayoutCommand(getHost().getModel(),
             // ((ChangeBoundsRequest) request)
             // .getTransformedRectangle(rect), 0);
-            return new DesignerMoveLayoutCommand(getHost().getModel(), moveDelta);
+//            CssFile cssFile = viewer.getPageData().getCurrentCssFile();
+            
+            return new DesignerMoveLayoutCommand(part, moveDelta, pageData, selectorName);
         }
         if (REQ_ALIGN.equals(request.getType())) {
             return getAlignCommand((AlignmentRequest) request);
index dc860ad..517a6fd 100644 (file)
@@ -56,9 +56,11 @@ import org.tizen.webuibuilder.gef.dnd.model.ITemplate;
 import org.tizen.webuibuilder.gef.editparts.DesignerRootEditPart;
 import org.tizen.webuibuilder.gef.editparts.HoverViewerEditPart;
 import org.tizen.webuibuilder.gef.figure.SelectionBorder;
+import org.tizen.webuibuilder.gef.viewer.HoverBrowserViewer;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.PartProperty;
 import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
+import org.tizen.webuibuilder.model.page.PageData;
 import org.tizen.webuibuilder.request.MoveRequest;
 
 
@@ -101,7 +103,12 @@ public class DesignerDragEditPolicy extends ResizableEditPolicy {
             // return new DesignerChangeLayoutCommand(getHost().getModel(),
             // ((ChangeBoundsRequest) request)
             // .getTransformedRectangle(rect));
-            return new DesignerResizeLayoutCommand(getHost().getModel(), sizeDelta);
+            
+            HoverBrowserViewer viewer = (HoverBrowserViewer) getHost().getViewer();
+            PageData pageData = viewer.getPageData();
+            Part part = (Part) getHost().getModel();
+            String selectorName = part.getDefaultSelectorName();
+            return new DesignerResizeLayoutCommand(getHost().getModel(), sizeDelta, pageData, selectorName);
         }
         if (REQ_MOVE.equals(request.getType())) {
             if (request instanceof MoveRequest) {
index 73b3a09..1c8f95a 100644 (file)
@@ -59,6 +59,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.ToolTip;
 import org.eclipse.ui.IEditorInput;
+import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.bridge.DesignerGoingBridge;
 import org.tizen.webuibuilder.bridge.DesignerGoingBridge.WidgetPosition;
 import org.tizen.webuibuilder.browserwidget.ImageBufferedBrowserWidget.ContentsAreaChangedListener;
@@ -569,6 +570,7 @@ public class HoverBrowserViewer extends ScrollingGraphicalViewer
 
     private void setCssStyle(String cssStyle) {
         // Logger.trace("setCssStyle : " + cssStyle.substring(0, 40));
+        goingBridge.modifyStyle(BuilderConstants.EMPTY);
         goingBridge.setCssStyle(cssStyle);
     }
 
index 2f2f488..d853647 100644 (file)
@@ -121,7 +121,9 @@ public class Part implements ISerializer {
     /**
      * A Map containing css selector.
      */
-    private Map<String, CssSelector> selectors = new HashMap<String, CssSelector>();
+    private Map<String, CssSelector> allSelectorMap = new HashMap<String, CssSelector>();
+    
+    private Map<String, CssSelector> editSelectorMap = new HashMap<String, CssSelector>();
 
     private AbsolutePositionProvider absolutePositionProvider = null;
     private Map<String, GotoPageProperty> gotoPageProperties =
@@ -797,14 +799,7 @@ public class Part implements ISerializer {
             lockRefresh();
             //Point newPosition = ScreenToPage(new Point(position.x, position.y));
             Point newPosition = new Point(position.x, position.y);
-            Part page = getOwnerPage();
-            String selectorName = EMPTY;
-            if (page == null) {
-                selectorName = SHARP + getIdPropertyValue();
-            } else {
-                selectorName =
-                        SHARP + page.getIdPropertyValue() + SPACE + SHARP + getIdPropertyValue();
-            }
+            String selectorName = getDefaultSelectorName();
 
             // String parentName = TypeDescriptor.ID_OF_GROUP_POSITION;
             setSelectorPropertyValue(selectorName, LEFT, String.valueOf(newPosition.x) + PX, null);
@@ -1465,7 +1460,7 @@ public class Part implements ISerializer {
             return;
         }
 
-        selectors.put(selectorName, cssSelector);
+        editSelectorMap.put(selectorName, cssSelector);
 
         fireEvent(new CssEvent(EventType.CSS_SELECTOR_ADDED, this, cssSelector.getSelectorName(),
                                null, null));
@@ -1486,8 +1481,26 @@ public class Part implements ISerializer {
         if (cssSelector == null) {
             return;
         }
+        
+        String selectorName = cssSelector.getSelectorName();
+        
+        CssSelector prevSelector = allSelectorMap.get(selectorName);
+        if (prevSelector == null) {
+            CssSelector cloneSelector = cssSelector.cloneCssSelector(selectorName);
+            allSelectorMap.put(selectorName, cloneSelector);
+        } else {
+            for (CssStyle style : cssSelector.getStyles()) {
+                prevSelector.getStyleMap().put(style.getKey(), style);
+            }
+        }
+    }
+    
+    public void addEditSelectorWhenReadCss(CssSelector cssSelector) {
+        if (cssSelector == null) {
+            return;
+        }
 
-        selectors.put(cssSelector.getSelectorName(), cssSelector);
+        editSelectorMap.put(cssSelector.getSelectorName(), cssSelector);
     }
 
     /**
@@ -1496,7 +1509,11 @@ public class Part implements ISerializer {
      * @return Collection containing css selector
      */
     public Collection<CssSelector> getSelectors() {
-        return selectors.values();
+        return allSelectorMap.values();
+    }
+    
+    public Map<String, CssSelector> getAllSelectorMap() {
+        return allSelectorMap;
     }
 
     /**
@@ -1505,7 +1522,7 @@ public class Part implements ISerializer {
      * @return List containing css selector name
      */
     public List<String> getSelectorNameList() {
-        return new ArrayList<String>(selectors.keySet());
+        return new ArrayList<String>(editSelectorMap.keySet());
     }
 
     /**
@@ -1517,7 +1534,7 @@ public class Part implements ISerializer {
      *         otherwise
      */
     public CssSelector getSelector(String selectorName) {
-        return selectors.get(selectorName);
+        return editSelectorMap.get(selectorName);
     }
 
     /**
@@ -1531,7 +1548,7 @@ public class Part implements ISerializer {
      *         exist, and <code>null</code> otherwise
      */
     public String getSelectorPropertyValue(String selectorName, String propertyKey) {
-        CssSelector selector = selectors.get(selectorName);
+        CssSelector selector = allSelectorMap.get(selectorName);
         if (selector != null) {
             return selector.getPropertyValue(propertyKey);
         } else {
@@ -1540,8 +1557,11 @@ public class Part implements ISerializer {
     }
 
     public void clearAllSelector() {
-        if (selectors.size() > 0) {
-            selectors.clear();
+        if (allSelectorMap.size() > 0) {
+            allSelectorMap.clear();
+        }
+        if (editSelectorMap.size() > 0) {
+            editSelectorMap.clear();
         }
         if (getChildren().size() > 0) {
             for (Part child : getChildren()) {
@@ -1563,7 +1583,8 @@ public class Part implements ISerializer {
         }
 
         CssSelector cssSelector = getSelector(selectorName);
-        selectors.remove(selectorName);
+        editSelectorMap.remove(selectorName);
+        allSelectorMap.remove(selectorName);
 
         fireEvent(new CssEvent(EventType.CSS_SELECTOR_REMOVED, this, cssSelector.getSelectorName(),
                                null, null));
@@ -1586,7 +1607,8 @@ public class Part implements ISerializer {
         } else if (isFireEvent) {
             removeSelector(selectorName);
         } else {
-            selectors.remove(selectorName);
+            editSelectorMap.remove(selectorName);
+            allSelectorMap.remove(selectorName);
         }
     }
 
@@ -1621,7 +1643,7 @@ public class Part implements ISerializer {
      */
     public void setSelectorNameAndPartId(String selectorName, String newSelectorName,
                                          String newPartId) {
-        CssSelector cssSelector = selectors.get(selectorName);
+        CssSelector cssSelector = editSelectorMap.get(selectorName);
         if (cssSelector != null) {
             cssSelector.setSelectorName(newSelectorName);
             cssSelector.setPartId(newPartId);
@@ -1723,7 +1745,8 @@ public class Part implements ISerializer {
             return;
         }
 
-        CssSelector selector = selectors.get(selectorName);
+//        CssSelector selector = selectors.get(selectorName);
+        CssSelector selector = editSelectorMap.get(selectorName);
         if (selector == null) {
             return;
         }
@@ -2876,5 +2899,9 @@ public class Part implements ISerializer {
     public void deserialize(String text) {
         // TODO : Implementation
     }
+    
+    public Map<String, CssSelector> getEditSelectorMap() {
+        return editSelectorMap;
+    }
 
 }
index b342ed6..c47045b 100644 (file)
@@ -204,6 +204,10 @@ public class CssSelector {
         fireEvent(new NewCssEvent(EventType.CSS_STYLE_CHANGED, null, this, style.getKey(),
                                   style.getValue()));
     }
+    
+    public Map<String, CssStyle> getStyleMap() {
+        return styles;
+    }
 
     /**
      * Sets a {@link CssStyle}. If not exist style in this {@link CssSelector},
index 982ad56..3828ec4 100644 (file)
@@ -95,8 +95,8 @@ public class CssSelecotrAction extends SelectionAction {
 
             CommandStack commandStack = designEditPartViewer.getEditDomain().getCommandStack();
             Command command =
-                    new CreateCssSelectorCommand(designEditPartViewer.getPageData()
-                            .getCurrentCssFile(), part, result);
+                    new CreateCssSelectorCommand(designEditPartViewer.getPageData(),
+                             part, result);
             commandStack.execute(command);
         }
     }
index d4f7bd4..85f47b3 100644 (file)
@@ -381,6 +381,7 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
 
         NScreenUtil.nscreen_log("current page css : "
                 + pageData.getCurrentCssFile().getCssFilePath());
+        setCurrentCssFileToModel(pageData.getCurrentCssFile());
         if (getViewer() != null) {
             getViewer().updateStyle();
         }
@@ -388,9 +389,6 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
     }
 
     protected void setCssFileToModel(CssFile cssFile) {
-        if (getPageData() != null) {
-            getPageData().getAppliedCssFiles().clear();
-        }
         if (rootPart != null && cssFile != null) {
             for (CssSelector selector : cssFile.getSelectors()) {
                 String pageId = selector.getPageId();
@@ -404,6 +402,25 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
                 }
 
             }
+            
+            pageData.getAppliedCssFiles().add(cssFile);
+        }
+    }
+    
+    protected void setCurrentCssFileToModel(CssFile cssFile) {
+        if (rootPart != null && cssFile != null) {
+            for (CssSelector selector : cssFile.getSelectors()) {
+                String pageId = selector.getPageId();
+                Part pagePart = rootPart.getChildOfIdPropertyValue(pageId, true);
+                if (pagePart != null) {
+                    String partId = selector.getPartId();
+                    Part part = pagePart.getChildOfIdPropertyValue(partId, true);
+                    if (part != null) {
+                        part.addEditSelectorWhenReadCss(selector);
+                    }
+                }
+
+            }
         }
     }
 
index 7ad8764..5ad0cb4 100644 (file)
@@ -139,6 +139,7 @@ public class PageDesignerForHTML extends PageDesigner implements ITextEditorList
         FilenameFilterEndsWith filter = new FilenameFilterEndsWith(".css");
         File[] files = cssDir.listFiles(filter);
         if (!appManager.getPageDataSet().getPages().isEmpty()) {
+            pageData = appManager.getPageDataSet().getPages().get(0);
             for (PageData page : appManager.getPageDataSet().getPages()) {
                 String pageId = page.getName();
                 List<File> pageCssFile = new ArrayList<File>();
@@ -232,7 +233,7 @@ public class PageDesignerForHTML extends PageDesigner implements ITextEditorList
                     setCssFileToModel(applyList.get(i));
                 }
             }
-            pageData = appManager.getPageDataSet().getPages().get(0);
+            
         } else {
             rootPart = null;
         }
index e9b04c0..785df96 100644 (file)
@@ -445,9 +445,12 @@ public class NScreenItem extends Composite {
         CssFile cssFile = new CssFile(filePath + IPath.SEPARATOR + getFileName());
         IFile ifile = project.getFile(getFileName());
         try {
+            if (ifile.exists()) {
+                ifile.delete(true, null);
+            }
             byte[] bytes = new byte[0];
             InputStream source = new ByteArrayInputStream(bytes);
-            ifile.create(source, IResource.NONE, null);
+            ifile.create(source, IResource.FORCE, null);
         } catch (CoreException e) {
             e.printStackTrace();
         }
index 07f2203..6756d65 100644 (file)
@@ -207,7 +207,7 @@ public class PropertiesPage extends Page implements IPropertySheetPage, IPartLis
                 case STYLE:
                     CssStyleTab styleTab =
                             new CssStyleTab(tabFolder, commandStack,
-                                            descriptorManager.getCssDescriptor(),
+                                            descriptorManager.getCssDescriptor(), pageData,
                                             pageData.getCurrentCssFile(), goingBridge);
                     // temp end
                     pageData.addPageListener(styleTab);
index b4a422f..137c51a 100644 (file)
@@ -26,8 +26,6 @@ package org.tizen.webuibuilder.ui.views.properties.style;
 import java.util.Collection;
 
 import org.eclipse.gef.commands.CommandStack;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.bridge.DesignerGoingBridge;
 import org.tizen.webuibuilder.gef.commands.CreateCssSelectorCommand;
@@ -45,6 +43,7 @@ import org.tizen.webuibuilder.model.css.ICssSelectorListener;
 import org.tizen.webuibuilder.model.css.NewCssEvent;
 import org.tizen.webuibuilder.model.css.descriptors.CssDescriptor;
 import org.tizen.webuibuilder.model.css.descriptors.CssPropertyDescriptor;
+import org.tizen.webuibuilder.model.page.PageData;
 import org.tizen.webuibuilder.ui.views.properties.method.IValueChangeListener;
 import org.tizen.webuibuilder.ui.views.properties.method.Method;
 import org.tizen.webuibuilder.ui.views.properties.method.MethodEvent;
@@ -61,6 +60,7 @@ public class CssStyleEventDelegater implements ICssSelectorListener, IValueChang
     private CssDescriptor cssDescriptor;
     private CssFile cssFile;
     private CssSelector selector;
+    private PageData pageData;
 
     /**
      * Constructs a new instance of this class given its {@link CommandStack},
@@ -74,10 +74,11 @@ public class CssStyleEventDelegater implements ICssSelectorListener, IValueChang
      *            a {@link CssStyle}
      */
     public CssStyleEventDelegater(CommandStack commandStack, CssDescriptor cssDescriptor,
-            CssStyleTab styleTab, DesignerGoingBridge goingBridge) {
+            CssStyleTab styleTab, PageData pageData, DesignerGoingBridge goingBridge) {
         this.styleTab = styleTab;
         this.commandStack = commandStack;
         this.cssDescriptor = cssDescriptor;
+        this.pageData = pageData;
         this.goingBridge = goingBridge;
     }
 
@@ -190,7 +191,7 @@ public class CssStyleEventDelegater implements ICssSelectorListener, IValueChang
 
                 Part part = styleTab.getModel();
                 SetCssStyleCommand command =
-                        new SetCssStyleCommand(cssFile, part, selector, key, value);
+                        new SetCssStyleCommand(pageData, part, selector.getSelectorName(), key, value);
                 commandStack.execute(command);
             }
         }
@@ -232,20 +233,11 @@ public class CssStyleEventDelegater implements ICssSelectorListener, IValueChang
             return;
         } else {
             CreateCssSelectorCommand command =
-                    new CreateCssSelectorCommand(cssFile, styleTab.getModel(), selectorName);
+                    new CreateCssSelectorCommand(pageData, styleTab.getModel(), selectorName);
             commandStack.execute(command);
         }
     }
 
-    public void addCssSelector(CssSelector selector) {
-        if (selector == null) {
-            return;
-        } else {
-            CreateCssSelectorCommand command =
-                    new CreateCssSelectorCommand(cssFile, styleTab.getModel(), selector);
-            commandStack.execute(command);
-        }
-    }
 
     public void removeCssSelector(CssSelector selector) {
         if (selector == null) {
index fd6cc55..fcb2cdb 100644 (file)
@@ -68,6 +68,7 @@ import org.tizen.webuibuilder.model.descriptors.PropertyConditionDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor.Types;
 import org.tizen.webuibuilder.model.page.IPageDataListener;
+import org.tizen.webuibuilder.model.page.PageData;
 import org.tizen.webuibuilder.model.page.PageDataEvent;
 import org.tizen.webuibuilder.ui.views.properties.CategoryComposite;
 import org.tizen.webuibuilder.ui.views.properties.PropertiesConstant;
@@ -163,13 +164,13 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
      *            a {@link CssFile}
      */
     public CssStyleTab(CTabFolder tabFolder, CommandStack commandStack,
-            CssDescriptor cssDescriptor, CssFile cssFile, DesignerGoingBridge goingBridge) {
+            CssDescriptor cssDescriptor,  PageData pageData, CssFile cssFile, DesignerGoingBridge goingBridge) {
         super(tabFolder, SWT.NONE, TabIndex.STYLE.getIndex(), goingBridge);
         setText(PropertiesConstant.STYLE);
         this.commandStack = commandStack;
         this.cssDescriptor = cssDescriptor;
 
-        cssDelegater = new CssStyleEventDelegater(commandStack, cssDescriptor, this, goingBridge);
+        cssDelegater = new CssStyleEventDelegater(commandStack, cssDescriptor, this, pageData, goingBridge);
         animDelegater = new CssStyleAnimationEventDelegater(commandStack, this);
 
         setCssFile(cssFile);
@@ -360,8 +361,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             /* TODO Log */
             cssDelegater.setCssFile(cssFile);
             setDefaultSelector();
-            removeListeners();
-            addListeners();
+//            removeListeners();
+//            addListeners();
             return true;
         } else {
             return false;
@@ -407,7 +408,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
         if (model != null) {
             model.removeCssListener(animDelegater);
             model.removePartListener(cssDelegater);
-//            model.removeCssListener(cssDelegater);
         }
 
         removeCssListener();
@@ -467,8 +467,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
             clip.setInitialData(getModel());
 
         setDefaultSelector();
-        removeListeners();
-        addListeners();
+//        removeListeners();
+//        addListeners();
 
         // delegater.setModel(models);
     }
@@ -515,8 +515,6 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
 
         // CSS Delegater
         cssDelegater.setCssSelector(currentSelector);
-        removeListeners();
-        addListeners();
         
 //        if (cssCategory != null && !cssCategory.isDisposed()) {
 //            cssCategory.setSelector(selectorName);    
@@ -1485,6 +1483,8 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
     public void pageChanged(PageDataEvent e) {
         if (setCssFile(e.getPage().getCurrentCssFile())) {
             refresh();
+            removeListeners();
+            addListeners();
         }
 
     }