UIB : Modify violation for Prevent. 24/18224/1
authorgyeongmin.ju <gyeongmin.ju@samsung.com>
Wed, 19 Mar 2014 02:51:08 +0000 (11:51 +0900)
committergyeongmin.ju <gyeongmin.ju@samsung.com>
Wed, 19 Mar 2014 02:51:08 +0000 (11:51 +0900)
Signed-off-by: gyeongmin.ju <gyeongmin.ju@samsung.com>
Change-Id: Ia953d50c5b519acadea390859bccfd805c44eb80

org.tizen.webuibuilder/src/org/tizen/webuibuilder/extintrf/DeclarationViewInfoProvider.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/AppManagerForAppXML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/AppManagerForHTML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/page/PageData.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/page/PageDataForHTML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/editor/PageDesigner.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/editor/PageDesignerForAppXML.java

index 879ed22..d5d171e 100644 (file)
@@ -267,6 +267,7 @@ public class DeclarationViewInfoProvider implements IDeclarationViewInfoProvider
                 strBuf.append(strLine);
                 strBuf.append(System.getProperty("line.separator"));
             }
+            fr.close();
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
index 1ab759b..1216e88 100644 (file)
@@ -180,6 +180,8 @@ public class AppManagerForAppXML extends AppManager {
             tempHtml = tempHtml.replace("%page_name%", pageData.getName());
             tempHtml =
                     tempHtml.replace("%page_css_path%", rootPathUri + "/" + pageData.getCssPath());
+        } else {
+               return new String("");
         }
 
         String framework_script = new String("");
index 3835ddf..2422671 100644 (file)
@@ -596,15 +596,17 @@ public class AppManagerForHTML extends AppManager {
         Document editDoc = (Document) getDocument().cloneNode(true);
 
         NodeList heads = editDoc.getElementsByTagName("head");
+        Element head = null;
         if (heads == null) {
-            Element newElmHead = editDoc.createElement("head");
-            editDoc.insertBefore(newElmHead, editDoc.getFirstChild());
+               head = editDoc.createElement("head");
+            editDoc.insertBefore(head, editDoc.getFirstChild());
+        } else {
+               head = (Element) heads.item(0);
         }
-        Element elm = (Element) heads.item(0);
 
         Element newElmBase = editDoc.createElement("base");
         newElmBase.setAttribute("href", rootPathUri + "/");
-        elm.insertBefore(newElmBase, elm.getFirstChild());
+        head.insertBefore(newElmBase, head.getFirstChild());
 
         String html = null;
         if (rootPart != null) {
@@ -622,14 +624,16 @@ public class AppManagerForHTML extends AppManager {
 
         Element newElm = editDoc.createElement("script");
         newElm.setAttribute("src", "./tizen-ui-builder-tool/res/html/preview.js");
-        elm.appendChild(newElm);
+        head.appendChild(newElm);
 
         NodeList bodys = editDoc.getElementsByTagName("body");
+        Element body = null;
         if (bodys == null) {
-            Element newElmBody = editDoc.createElement("body");
-            editDoc.appendChild(newElmBody);
+            body = editDoc.createElement("body");
+            editDoc.appendChild(body);
+        } else {
+               body = (Element) bodys.item(0);
         }
-        Element body = (Element) bodys.item(0);
         int len = body.getChildNodes().getLength();
         for (int i = 0; i < len; i++) {
             body.removeChild(body.getFirstChild());
index d7a4c8d..ac98fcf 100644 (file)
@@ -20,7 +20,6 @@
  *
  */
 
-
 package org.tizen.webuibuilder.model.page;
 
 import java.util.ArrayList;
@@ -58,752 +57,761 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.Text;
 
-
 public class PageData implements IPartListener, ICssListener {
 
-    private PageDataPaths pageDataPaths;
-
-    private String type;
-    private String name;
-    protected Part rootPart;
-    protected Part pagePart;
-    private DescriptorManager descriptorManager;
-    private String version;
-    private List<IPageDataListener> listeners = new ArrayList<IPageDataListener>();
-    private List<IPageDataListener> removeListeners = new ArrayList<IPageDataListener>();
-    private List<CssFile> cssFiles = new ArrayList<CssFile>();
-    private int cssFileIndex = 0;
-
-    private IResource resource = null;
-    private ToggleEditorHandlerModel toggleModel;
-    private boolean processEventFlag = false;
-
-    public void setPageData(String name, String version, Part rootPart) {
-        this.name = name;
-        this.version = version;
-
-        Part rootPart2 = null;
-        if (rootPart.isDocumentPart()) {
-            rootPart2 = rootPart;
-            pagePart = rootPart.getChildren().get(0);
-        } else if (rootPart.isPagePart()) {
-            pagePart = rootPart;
-            PartDescriptor descriptor = descriptorManager.getPartDescriptor("tizen.doc");
-            rootPart2 = new Part(null, (DocumentPartDescriptor) descriptor);
-            rootPart2.setPartId(rootPart2.getUniquePartId());
-            rootPart2.setPartClass(PartClass.DOCUMENT_PART);
-            rootPart2.addChildWhenPageRead(rootPart);
-        } else {
-            // PartDescriptor descriptor =
-            // descriptorManager.getPartDescriptor("tizen.doc");
-            // rootPart2 = new DocumentPart(null, (DocumentPartDescriptor)
-            // descriptor);
-            // rootPart2.addChildWhenPageRead(rootPart);
-        }
-
-        if (this.rootPart == null) {
-            this.rootPart = rootPart2;
-            if (this.rootPart != null) {
-                this.rootPart.setOwnerRef(this);
-                rootPart.addPartListener(this, true);
-                rootPart.addCssListener(this, true);
-            }
-        } else {
-            this.rootPart.getChildren().clear();
-            for (Part part : rootPart2.getChildren()) {
-                this.rootPart.addChild(part, false);
-            }
-        }
-
-        rootPart.refresh();
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    public void setPageFileData(PageFileData pageFileData, int index) {
-        if (pageFileData != null) {
-            setPageData(pageFileData.getName(index), pageFileData.getVersion(),
-                        pageFileData.getRootPart(index));
-        } else {
-            this.name = null;
-            this.pageDataPaths = null;
-            this.rootPart = null;
-            // this.document = null;
-            this.descriptorManager = null;
-        }
-
-        // fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    public PageData(String type, String name, String version, Part rootPart,
-            DescriptorManager descriptorManager, PageDataPaths pageDataPaths) {
-        this.type = type;
-        setPageData(name, version, rootPart);
-        this.descriptorManager = descriptorManager;
-        this.toggleModel = new ToggleEditorHandlerModel(this);
-        this.pageDataPaths = pageDataPaths;
-
-        // setPagePath(pageDataPaths.getPagePath());
-    }
-
-    public PageData(String type, PageFileData pageFileData, int index,
-            DescriptorManager descriptorManager, PageDataPaths pageDataPaths) {
-        this.type = type;
-        this.descriptorManager = descriptorManager;
-        setPageFileData(pageFileData, index);
-        // if (pageFileData != null) {
-        // this.name = pageFileData.getName();
-        // this.version = pageFileData.getVersion();
-        // this.rootPart = pageFileData.getRootPart();
-        // this.document = document;
-        // this.descriptorManager = descriptorManager;
-        // if(this.rootPart != null){
-        // this.rootPart.setOwnerRef(this);
-        // rootPart.addPartListener(this, true);
-        // rootPart.addCssListener(this, true);
-        // }
-        // } else {
-        // this.name = null;
-        // this.page = null;
-        // this.rootPart = null;
-        // this.document = null;
-        // this.descriptorManager = null;
-        // }
-        this.toggleModel = new ToggleEditorHandlerModel(this);
-        this.pageDataPaths = pageDataPaths;
-
-        // if(page != null){
-        // setPagePath(page.getPagePath());
-        // }
-    }
-
-    // public PageData() {
-    // Logger.info("Create PageData");
-    // this.type = null;
-    // this.name = null;
-    // this.page = null;
-    // this.rootPart = null;
-    // this.outputDocument = null;
-    // this.toggleModel = new ToggleEditorHandlerModel();
-    // }
-
-    public void dispose() {
-        rootPart.removePartListener(this);
-        rootPart.removeCssListener(this);
-
-        this.name = null;
-        this.pageDataPaths = null;
-        this.rootPart = null;
-        this.descriptorManager = null;
-
-        cssFiles.clear();
-        cssFiles = null;
-    }
-
-    public void setName(String name) {
-        if (this.name.equals(name)) {
-            return;
-        }
-
-        this.name = name;
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_RENAMED, this));
-    }
-
-    public void setPagePath(String path) {
-        if (path != null) {
-            if (pageDataPaths != null) {
-                pageDataPaths.setPagePath(path);
-            }
-            IFile iFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path));
-            setResource(iFile);
-        }
-    }
-
-    public void setHtmlPath(String path) {
-        if (pageDataPaths != null) {
-            pageDataPaths.setHtmlPath(path);
-        }
-    }
-
-    public void setJsPath(String path) {
-        if (pageDataPaths != null) {
-            pageDataPaths.setJsPath(path);
-        }
-    }
-
-    public void setManagedJsPath(String path) {
-        if (pageDataPaths != null) {
-            pageDataPaths.setManagedJsPath(path);
-        }
-    }
-
-    public void setCssPath(String path) {
-        if (pageDataPaths != null) {
-            pageDataPaths.setCssPath(path);
-        }
-    }
-
-    public void setManagedCssPath(String path) {
-        if (pageDataPaths != null) {
-            pageDataPaths.setManagedCssPath(path);
-        }
-    }
-
-    public void setResource(IResource resource) {
-        this.resource = resource;
-    }
-
-    public IResource getResource() {
-        return resource;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public PageDataPaths getPageDataPaths() {
-        return pageDataPaths;
-    }
-
-    public String getPagePath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getPagePath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getHtmlPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getHtmlPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getJsPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getJsPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getManagedJsPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getManagedJsPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getCssPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getCssPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getManagedCssPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getManagedCssPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getAnimatorManagedJsPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getAnimatorManagedJsPath();
-        } else {
-            return null;
-        }
-    }
-
-    public String getAnimatorManagedCssPath() {
-        if (pageDataPaths != null) {
-            return pageDataPaths.getAnimatorManagedCssPath();
-        } else {
-            return null;
-        }
-    }
-
-    public Part getRootPart() {
-        return rootPart;
-    }
-
-    public Part getPagePart() {
-        return pagePart;
-    }
-
-    // public Document getDocument() {
-    // return document;
-    // }
-
-    public DescriptorManager getDescriptorManager() {
-        return descriptorManager;
-    }
-
-    private boolean changePageID(Part parentPart) {
-        for (Part part : parentPart.getChildren()) {
-            if (part.getDescriptorId().equals(BuilderConstants.PART_PAGE)) {
-                part.setPropertyValue(BuilderConstants.PROPERTY_ID, getName());
-                return true;
-            } else {
-                if (changePageID(part)) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    public void syncDataToFileData() {
-        // pageDataPaths.setId(getName());
-        changePageID(getRootPart());
-    }
-
-    private void _addPartIdToElement(Part part) {
-        if (part.getPartId() != null) {
-            if (part.getElement() != null) {
-                part.getElement().setAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
-            }
-        }
-
-        for (Part child : part.getChildren()) {
-            _addPartIdToElement(child);
-        }
-    }
-
-    public void addPartIdToElement() {
-        _addPartIdToElement(rootPart);
-    }
-
-    private void _removePartIdToElement(Part part) {
-        if (part.getElement() != null) {
-            part.getElement().removeAttribute(BuilderConstants.ATTRIBUTE_PID);
-        }
-
-        for (Part child : part.getChildren()) {
-            _removePartIdToElement(child);
-        }
-    }
-
-    public void removePartIdToElement() {
-        _removePartIdToElement(rootPart);
-    }
-
-    // public void syncDataToStyle() {
-    // syncDataToStyle(rootPart);
-    // //getManagedCssFile().fireEvent(new
-    // CssEvent(EventType.CSS_PROPERTY_CHANGED, getManagedCssFile(), null, null,
-    // null));
-    // }
-
-    // private void syncStyleToData(Part part) {
-    // if (part instanceof WidgetPart) {
-    // String ssel = BuilderConstants.SHARP +
-    // part.getPropertyValue(BuilderConstants.PROPERTY_ID);
-    // CssFile cssFile = getManagedCssFile();
-    // String position = cssFile.getSelectorPropertyValue(ssel, "position");
-    // if(position == null){
-    //
-    // } else if(position.equals("absolute")){
-    // part.setPositionModeNoEvent(Part.PositionMode.ABSOLUTE_POSITION);
-    // Part parentPart = part.getParent();
-    // String v = cssFile.getSelectorPropertyValue(ssel, "left");
-    // int x = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
-    // 0;
-    // v = cssFile.getSelectorPropertyValue(ssel, "top");
-    // int y = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
-    // 0;
-    // v = cssFile.getSelectorPropertyValue(ssel, "width");
-    // int w = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
-    // 0;
-    // v = cssFile.getSelectorPropertyValue(ssel, "height");
-    // int h = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
-    // 0;
-    // if(parentPart.getPosition() != null) {
-    // x += parentPart.getPosition().x;
-    // y += parentPart.getPosition().y;
-    // }
-    // part.setPositionNoEvent(new Rectangle(x, y, w, h));
-    // } else if(position.equals("relative")){
-    // part.setPositionModeNoEvent(Part.PositionMode.RELATIVE_POSITION);
-    // part.setPositionNoEvent(new Rectangle(0, 0, 0, 0));
-    // }
-    // }
-    //
-    // for (Part child : part.getChildren()) {
-    // syncStyleToData(child);
-    // }
-    // }
-
-    // public void syncStyleToData() {
-    // syncStyleToData(rootPart);
-    // }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public void addPageListener(IPageDataListener listener) {
-        listeners.add(listener);
-    }
-
-    public void removePageListener(IPageDataListener listener) {
-        if (!processEventFlag) {
-            listeners.remove(listener);
-        } else {
-            removeListeners.add(listener);
-        }
-    }
-
-    public void fireEvent(final PageDataEvent pageEvent) {
-        Display.getDefault().syncExec(new Runnable() {
-            @Override
-            public void run() {
-                fireEvent(pageEvent, listeners);
-            }
-        });
-    }
-
-    private void fireEvent(PageDataEvent pageEvent, List<IPageDataListener> listeners) {
-        Iterator<IPageDataListener> itr = listeners.iterator();
-        IPageDataListener listener = null;
-
-        processEventFlag = true;
-        while (itr.hasNext()) {
-            listener = itr.next();
-            switch (pageEvent.getType()) {
-                case PAGE_PREDELETE:
-                    listener.pagePreDelete(pageEvent);
-                    break;
-                case PAGE_CHANGED:
-                    listener.pageChanged(pageEvent);
-                    break;
-                case PAGE_RENAMED:
-                    listener.pageRenamed(pageEvent);
-                    break;
-                default:
-                    assert (false);
-            }
-        }
-        processEventFlag = false;
-
-        if (!removeListeners.isEmpty()) {
-            for (IPageDataListener removeListener : removeListeners) {
-                listeners.remove(removeListener);
-            }
-            removeListeners.clear();
-        }
-    }
-
-    /**
-     * Gets a Toggle Model.
-     * 
-     * @return toggle Model
-     */
-    public ToggleEditorHandlerModel getToggleSwitcherModel() {
-        return this.toggleModel;
-    }
-
-    @Override
-    public void childAdded(PartEvent event) {
-        @SuppressWarnings("unchecked")
-        List<Part> models = (List<Part>) event.getChildPartList();
-        CssFile cssFile = getCurrentCssFile();
-        if (cssFile != null) {
-            for (Part model : models) {
-                for (CssSelector selector : model.getSelectors()) {
-                    cssFile.addCssSelector(selector);
-                }
-            }
-        }
-
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void childMoved(PartEvent event) {
-        // if (event != null) {
-        // addElement(event);
-        // }
-        //
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public void childRemoved(PartEvent event) {
-        if (event != null) {
-            Element parent = ((Part) event.getPart()).getElement();
-            if (parent != null) {
-                List<Part> children = (List<Part>) event.getChildPartList();
-                int size = children.size();
-                for (int i = 0; i < size; i++) {
-                    Part child = children.get(i);
-                    Element element = child.getElement();
-                    parent.removeChild(element);
-                }
-            }
-
-            List<Part> children = (List<Part>) event.getChildPartList();
-            CssFile cssFile = getCurrentCssFile();
-            for (int i = 0; i < children.size(); i++) {
-                Part child = children.get(i);
-                // remove css
-                for (CssSelector selector : child.getSelectors()) {
-                    cssFile.removeCssSelector(selector);
-                }
-
-            }
-        }
-
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void propertyChanged(PartEvent event) {
-        if (event != null) {
-            String propertyName = event.getChangedProperty();
-            Part part = ((Part) event.getPart());
-            if (part != null) {
-                Element element = part.getElement();
-                String value = part.getPropertyValue(propertyName);
-                if (element != null) {
-                    PartDescriptor partDescriptor = part.getPartDescriptor();
-                    PropertyDescriptor propertyDescriptor =
-                            partDescriptor.getPropertyDescriptor(propertyName);
-                    String xpath = propertyDescriptor.getXpath();
-
-                    if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
-                        XPathFactory xpathFactory = XPathFactory.newInstance();
-                        XPath expr = xpathFactory.newXPath();
-                        Object obj = null;
-                        try {
-                            obj = expr.evaluate(xpath, element, XPathConstants.NODE);
-                        } catch (XPathExpressionException e) {
-                            e.printStackTrace();
-                        }
-
-                        if (obj instanceof Node) {
-                            Node node = (Node) obj;
-                            if (node instanceof Attr) {
-                                Attr attr = (Attr) node;
-                                if (value.equals(BuilderConstants.EMPTY)) {
-                                    Element ownerElement = attr.getOwnerElement();
-                                    ownerElement.removeAttribute(propertyName);
-                                } else {
-                                    attr.setValue(value);
-                                }
-                                // System.out.println("~~~~~~~~~~propertyChanged() xpath attribute "+
-                                // attr + ", " + propertyName +"=" + value);
-                            } else if (node instanceof Text) {
-                                Text text = (Text) node;
-                                text.setTextContent(value);
-                                // System.out.println("~~~~~~~~~~propertyChanged() xpath text "+
-                                // text + ", " + propertyName +"=" + value);
-                            }
-                        }
-                    } else {
-                        if (value.equals(BuilderConstants.EMPTY)) {
-                            element.removeAttribute(propertyName);
-                        } else {
-                            element.setAttribute(propertyName, value);
-                        }
-                        // System.out.println("~~~~~~~~~~propertyChanged() no xpath "
-                        // + element + ", " + propertyName +"=" + value);
-                    }
-                }
-            }
-        }
-
-        // System.out.println("PageData propertyChanged()");
-        // TransformerFactory transformerFactory =
-        // TransformerFactory.newInstance();
-        //        transformerFactory.setAttribute("indent-number", new Integer(4)); //$NON-NLS-1$
-        // Transformer transformer = null;
-        // try {
-        // transformer = transformerFactory.newTransformer();
-        // } catch (TransformerConfigurationException e) {
-        // e.printStackTrace();
-        // }
-        // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
-        // BuilderConstants.NO);
-        // transformer.setOutputProperty(OutputKeys.INDENT,
-        // BuilderConstants.NO);
-        // DOMSource source = new DOMSource(document);
-        // StreamResult result = new StreamResult(System.out);
-        // try {
-        // transformer.transform(source, result);
-        // } catch (TransformerException e) {
-        // e.printStackTrace();
-        // }
-
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void eventChanged(PartEvent event) {
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void positionChanged(PartEvent event) {
-        // syncDataToStyle();
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void cssPropertyChanged(CssEvent event) {
-        if (event.getEventType().equals(CssEvent.EventType.CSS_POSITION_CHANGED)) {
-            Part part = event.getPart();
-            String selectorName = event.getSelectorName();
-
-            CssSelector selector = getCurrentCssFile().getSelector(selectorName);
-            if (selector == null
-                    && !part.getPositionMode().equals(Part.PositionMode.ABSOLUTE_POSITION)) {
-                return;
-            } else {
-                Rectangle rect = part.getPosition();
-                selector.setStyle("left", rect.x + "px");
-                selector.setStyle("top", rect.y + "px");
-                selector.setStyle("width", rect.width + "px");
-                selector.setStyle("height", rect.height + "px");
-            }
-            return;
-        }
-
-        if (event.getPropertyKey() == null) {
-            return;
-        }
-
-        // if(event.getPropertyKey().equals("position")){
-        // Part part = rootPart.getChildOfPropertyValue("id",
-        // event.getSelectorName().substring(1), true);
-        // if(part != null){
-        // if(event.getPropertyValue().equals("absolute")){
-        // part.setPositionMode(Part.PositionMode.ABSOLUTE_POSITION);
-        // } else if(event.getPropertyValue().equals("relative")){
-        // part.setPositionMode(Part.PositionMode.RELATIVE_POSITION);
-        // }
-        //
-        // }
-        // } else if(event.getPropertyKey().equals("left")){
-        // Part part = rootPart.getChildOfPropertyValue("id",
-        // event.getSelectorName().substring(1), true);
-        // if(part != null){
-        // Rectangle rect = new Rectangle(part.getPosition());
-        // rect.x = Integer.parseInt(event.getPropertyValue().substring(0,
-        // event.getPropertyValue().length()-2));
-        // part.setPosition(rect);
-        // }
-        // } else if(event.getPropertyKey().equals("top")){
-        // Part part = rootPart.getChildOfPropertyValue("id",
-        // event.getSelectorName().substring(1), true);
-        // if(part != null){
-        // Rectangle rect = new Rectangle(part.getPosition());
-        // rect.y = Integer.parseInt(event.getPropertyValue().substring(0,
-        // event.getPropertyValue().length()-2));
-        // part.setPosition(rect);
-        // }
-        // }
-
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void cssSelectorAdded(CssEvent event) {
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void cssSelectorRemoved(CssEvent event) {
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    @Override
-    public void visualPositionChanged(PartEvent e) {
-    }
-
-    @Override
-    public void needRefresh(CssEvent event) {
-    }
-
-    @Override
-    public void needRefresh(PartEvent e) {
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
-
-    /* add CSS File method */
-    public boolean addCssFile(CssFile addItem) {
-        if (addItem == null) {
-            return false;
-        }
-        for (CssFile cssFile : cssFiles) {
-            if (cssFile.getWidth() == addItem.getWidth()) {
-                return false;
-            }
-        }
-
-        return cssFiles.add(addItem);
-    }
-
-    public void addCssFile(String cssFilePath, int width) {
-        addCssFile(new CssFile(cssFilePath, width));
-    }
-
-    public void removeCssFile(CssFile cssFile) {
-        if (cssFile != null) {
-            cssFiles.remove(cssFile);
-        }
-    }
-
-    public void removeCssFile(String fileName) {
-        removeCssFile(getCssFile(fileName));
-    }
-
-    public CssFile getCssFile(String fileName) {
-        if (fileName != null) {
-            for (CssFile cssFile : cssFiles) {
-                if (fileName.equals(cssFile.getFileName())) {
-                    return cssFile;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    public List<CssFile> getCssFiles() {
-        return cssFiles;
-    }
-
-    public void setCssFiles(List<CssFile> cssFiles) {
-        this.cssFiles = cssFiles;
-    }
-
-    public CssFile getCurrentCssFile() {
-        if (cssFiles.isEmpty()) {
-            return null;
-        }
-
-        return cssFiles.get(cssFileIndex);
-    }
-
-    public CssFile getCommonCssFile() {
-        return cssFiles.get(0);
-    }
-
-    public void setCssFileIndex(int index) {
-        cssFileIndex = index;
-        fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
-    }
+       private PageDataPaths pageDataPaths;
+
+       private String type;
+       private String name;
+       protected Part rootPart;
+       protected Part pagePart;
+       private DescriptorManager descriptorManager;
+       private String version;
+       private List<IPageDataListener> listeners = new ArrayList<IPageDataListener>();
+       private List<IPageDataListener> removeListeners = new ArrayList<IPageDataListener>();
+       private List<CssFile> cssFiles = new ArrayList<CssFile>();
+       private int cssFileIndex = 0;
+
+       private IResource resource = null;
+       private ToggleEditorHandlerModel toggleModel;
+       private boolean processEventFlag = false;
+
+       public void setPageData(String name, String version, Part rootPart) {
+               this.name = name;
+               this.version = version;
+
+               Part rootPart2 = null;
+               if (rootPart.isDocumentPart()) {
+                       rootPart2 = rootPart;
+                       pagePart = rootPart.getChildren().get(0);
+               } else if (rootPart.isPagePart()) {
+                       pagePart = rootPart;
+                       PartDescriptor descriptor = descriptorManager
+                                       .getPartDescriptor("tizen.doc");
+                       rootPart2 = new Part(null, (DocumentPartDescriptor) descriptor);
+                       rootPart2.setPartId(rootPart2.getUniquePartId());
+                       rootPart2.setPartClass(PartClass.DOCUMENT_PART);
+                       rootPart2.addChildWhenPageRead(rootPart);
+               } else {
+                       // PartDescriptor descriptor =
+                       // descriptorManager.getPartDescriptor("tizen.doc");
+                       // rootPart2 = new DocumentPart(null, (DocumentPartDescriptor)
+                       // descriptor);
+                       // rootPart2.addChildWhenPageRead(rootPart);
+               }
+
+               if (this.rootPart == null) {
+                       this.rootPart = rootPart2;
+                       if (this.rootPart != null) {
+                               this.rootPart.setOwnerRef(this);
+                               rootPart.addPartListener(this, true);
+                               rootPart.addCssListener(this, true);
+                       }
+               } else {
+                       this.rootPart.getChildren().clear();
+                       if (rootPart2 != null) {
+                               for (Part part : rootPart2.getChildren()) {
+                                       this.rootPart.addChild(part, false);
+                               }
+                       }
+               }
+
+               rootPart.refresh();
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       public void setPageFileData(PageFileData pageFileData, int index) {
+               if (pageFileData != null) {
+                       setPageData(pageFileData.getName(index), pageFileData.getVersion(),
+                                       pageFileData.getRootPart(index));
+               } else {
+                       this.name = null;
+                       this.pageDataPaths = null;
+                       this.rootPart = null;
+                       // this.document = null;
+                       this.descriptorManager = null;
+               }
+
+               // fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       public PageData(String type, String name, String version, Part rootPart,
+                       DescriptorManager descriptorManager, PageDataPaths pageDataPaths) {
+               this.type = type;
+               setPageData(name, version, rootPart);
+               this.descriptorManager = descriptorManager;
+               this.toggleModel = new ToggleEditorHandlerModel(this);
+               this.pageDataPaths = pageDataPaths;
+
+               // setPagePath(pageDataPaths.getPagePath());
+       }
+
+       public PageData(String type, PageFileData pageFileData, int index,
+                       DescriptorManager descriptorManager, PageDataPaths pageDataPaths) {
+               this.type = type;
+               this.descriptorManager = descriptorManager;
+               setPageFileData(pageFileData, index);
+               // if (pageFileData != null) {
+               // this.name = pageFileData.getName();
+               // this.version = pageFileData.getVersion();
+               // this.rootPart = pageFileData.getRootPart();
+               // this.document = document;
+               // this.descriptorManager = descriptorManager;
+               // if(this.rootPart != null){
+               // this.rootPart.setOwnerRef(this);
+               // rootPart.addPartListener(this, true);
+               // rootPart.addCssListener(this, true);
+               // }
+               // } else {
+               // this.name = null;
+               // this.page = null;
+               // this.rootPart = null;
+               // this.document = null;
+               // this.descriptorManager = null;
+               // }
+               this.toggleModel = new ToggleEditorHandlerModel(this);
+               this.pageDataPaths = pageDataPaths;
+
+               // if(page != null){
+               // setPagePath(page.getPagePath());
+               // }
+       }
+
+       // public PageData() {
+       // Logger.info("Create PageData");
+       // this.type = null;
+       // this.name = null;
+       // this.page = null;
+       // this.rootPart = null;
+       // this.outputDocument = null;
+       // this.toggleModel = new ToggleEditorHandlerModel();
+       // }
+
+       public void dispose() {
+               rootPart.removePartListener(this);
+               rootPart.removeCssListener(this);
+
+               this.name = null;
+               this.pageDataPaths = null;
+               this.rootPart = null;
+               this.descriptorManager = null;
+
+               cssFiles.clear();
+               cssFiles = null;
+       }
+
+       public void setName(String name) {
+               if (this.name.equals(name)) {
+                       return;
+               }
+
+               this.name = name;
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_RENAMED, this));
+       }
+
+       public void setPagePath(String path) {
+               if (path != null) {
+                       if (pageDataPaths != null) {
+                               pageDataPaths.setPagePath(path);
+                       }
+                       IFile iFile = ResourcesPlugin.getWorkspace().getRoot()
+                                       .getFile(new Path(path));
+                       setResource(iFile);
+               }
+       }
+
+       public void setHtmlPath(String path) {
+               if (pageDataPaths != null) {
+                       pageDataPaths.setHtmlPath(path);
+               }
+       }
+
+       public void setJsPath(String path) {
+               if (pageDataPaths != null) {
+                       pageDataPaths.setJsPath(path);
+               }
+       }
+
+       public void setManagedJsPath(String path) {
+               if (pageDataPaths != null) {
+                       pageDataPaths.setManagedJsPath(path);
+               }
+       }
+
+       public void setCssPath(String path) {
+               if (pageDataPaths != null) {
+                       pageDataPaths.setCssPath(path);
+               }
+       }
+
+       public void setManagedCssPath(String path) {
+               if (pageDataPaths != null) {
+                       pageDataPaths.setManagedCssPath(path);
+               }
+       }
+
+       public void setResource(IResource resource) {
+               this.resource = resource;
+       }
+
+       public IResource getResource() {
+               return resource;
+       }
+
+       public String getType() {
+               return type;
+       }
+
+       public String getName() {
+               return name;
+       }
+
+       public PageDataPaths getPageDataPaths() {
+               return pageDataPaths;
+       }
+
+       public String getPagePath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getPagePath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getHtmlPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getHtmlPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getJsPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getJsPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getManagedJsPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getManagedJsPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getCssPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getCssPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getManagedCssPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getManagedCssPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getAnimatorManagedJsPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getAnimatorManagedJsPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public String getAnimatorManagedCssPath() {
+               if (pageDataPaths != null) {
+                       return pageDataPaths.getAnimatorManagedCssPath();
+               } else {
+                       return null;
+               }
+       }
+
+       public Part getRootPart() {
+               return rootPart;
+       }
+
+       public Part getPagePart() {
+               return pagePart;
+       }
+
+       // public Document getDocument() {
+       // return document;
+       // }
+
+       public DescriptorManager getDescriptorManager() {
+               return descriptorManager;
+       }
+
+       private boolean changePageID(Part parentPart) {
+               for (Part part : parentPart.getChildren()) {
+                       if (part.getDescriptorId().equals(BuilderConstants.PART_PAGE)) {
+                               part.setPropertyValue(BuilderConstants.PROPERTY_ID, getName());
+                               return true;
+                       } else {
+                               if (changePageID(part)) {
+                                       return true;
+                               }
+                       }
+               }
+
+               return false;
+       }
+
+       public void syncDataToFileData() {
+               // pageDataPaths.setId(getName());
+               changePageID(getRootPart());
+       }
+
+       private void _addPartIdToElement(Part part) {
+               if (part.getPartId() != null) {
+                       if (part.getElement() != null) {
+                               part.getElement().setAttribute(BuilderConstants.ATTRIBUTE_PID,
+                                               part.getPartId());
+                       }
+               }
+
+               for (Part child : part.getChildren()) {
+                       _addPartIdToElement(child);
+               }
+       }
+
+       public void addPartIdToElement() {
+               _addPartIdToElement(rootPart);
+       }
+
+       private void _removePartIdToElement(Part part) {
+               if (part.getElement() != null) {
+                       part.getElement().removeAttribute(BuilderConstants.ATTRIBUTE_PID);
+               }
+
+               for (Part child : part.getChildren()) {
+                       _removePartIdToElement(child);
+               }
+       }
+
+       public void removePartIdToElement() {
+               _removePartIdToElement(rootPart);
+       }
+
+       // public void syncDataToStyle() {
+       // syncDataToStyle(rootPart);
+       // //getManagedCssFile().fireEvent(new
+       // CssEvent(EventType.CSS_PROPERTY_CHANGED, getManagedCssFile(), null, null,
+       // null));
+       // }
+
+       // private void syncStyleToData(Part part) {
+       // if (part instanceof WidgetPart) {
+       // String ssel = BuilderConstants.SHARP +
+       // part.getPropertyValue(BuilderConstants.PROPERTY_ID);
+       // CssFile cssFile = getManagedCssFile();
+       // String position = cssFile.getSelectorPropertyValue(ssel, "position");
+       // if(position == null){
+       //
+       // } else if(position.equals("absolute")){
+       // part.setPositionModeNoEvent(Part.PositionMode.ABSOLUTE_POSITION);
+       // Part parentPart = part.getParent();
+       // String v = cssFile.getSelectorPropertyValue(ssel, "left");
+       // int x = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
+       // 0;
+       // v = cssFile.getSelectorPropertyValue(ssel, "top");
+       // int y = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
+       // 0;
+       // v = cssFile.getSelectorPropertyValue(ssel, "width");
+       // int w = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
+       // 0;
+       // v = cssFile.getSelectorPropertyValue(ssel, "height");
+       // int h = (v != null)? Integer.parseInt(v.substring(0, v.length() - 2)) :
+       // 0;
+       // if(parentPart.getPosition() != null) {
+       // x += parentPart.getPosition().x;
+       // y += parentPart.getPosition().y;
+       // }
+       // part.setPositionNoEvent(new Rectangle(x, y, w, h));
+       // } else if(position.equals("relative")){
+       // part.setPositionModeNoEvent(Part.PositionMode.RELATIVE_POSITION);
+       // part.setPositionNoEvent(new Rectangle(0, 0, 0, 0));
+       // }
+       // }
+       //
+       // for (Part child : part.getChildren()) {
+       // syncStyleToData(child);
+       // }
+       // }
+
+       // public void syncStyleToData() {
+       // syncStyleToData(rootPart);
+       // }
+
+       public String getVersion() {
+               return version;
+       }
+
+       public void addPageListener(IPageDataListener listener) {
+               listeners.add(listener);
+       }
+
+       public void removePageListener(IPageDataListener listener) {
+               if (!processEventFlag) {
+                       listeners.remove(listener);
+               } else {
+                       removeListeners.add(listener);
+               }
+       }
+
+       public void fireEvent(final PageDataEvent pageEvent) {
+               Display.getDefault().syncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               fireEvent(pageEvent, listeners);
+                       }
+               });
+       }
+
+       private void fireEvent(PageDataEvent pageEvent,
+                       List<IPageDataListener> listeners) {
+               Iterator<IPageDataListener> itr = listeners.iterator();
+               IPageDataListener listener = null;
+
+               processEventFlag = true;
+               while (itr.hasNext()) {
+                       listener = itr.next();
+                       switch (pageEvent.getType()) {
+                       case PAGE_PREDELETE:
+                               listener.pagePreDelete(pageEvent);
+                               break;
+                       case PAGE_CHANGED:
+                               listener.pageChanged(pageEvent);
+                               break;
+                       case PAGE_RENAMED:
+                               listener.pageRenamed(pageEvent);
+                               break;
+                       default:
+                               assert (false);
+                       }
+               }
+               processEventFlag = false;
+
+               if (!removeListeners.isEmpty()) {
+                       for (IPageDataListener removeListener : removeListeners) {
+                               listeners.remove(removeListener);
+                       }
+                       removeListeners.clear();
+               }
+       }
+
+       /**
+        * Gets a Toggle Model.
+        * 
+        * @return toggle Model
+        */
+       public ToggleEditorHandlerModel getToggleSwitcherModel() {
+               return this.toggleModel;
+       }
+
+       @Override
+       public void childAdded(PartEvent event) {
+               @SuppressWarnings("unchecked")
+               List<Part> models = (List<Part>) event.getChildPartList();
+               CssFile cssFile = getCurrentCssFile();
+               if (cssFile != null) {
+                       for (Part model : models) {
+                               for (CssSelector selector : model.getSelectors()) {
+                                       cssFile.addCssSelector(selector);
+                               }
+                       }
+               }
+
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void childMoved(PartEvent event) {
+               // if (event != null) {
+               // addElement(event);
+               // }
+               //
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @SuppressWarnings("unchecked")
+       @Override
+       public void childRemoved(PartEvent event) {
+               if (event != null) {
+                       Element parent = ((Part) event.getPart()).getElement();
+                       if (parent != null) {
+                               List<Part> children = (List<Part>) event.getChildPartList();
+                               int size = children.size();
+                               for (int i = 0; i < size; i++) {
+                                       Part child = children.get(i);
+                                       Element element = child.getElement();
+                                       parent.removeChild(element);
+                               }
+                       }
+
+                       List<Part> children = (List<Part>) event.getChildPartList();
+                       CssFile cssFile = getCurrentCssFile();
+                       for (int i = 0; i < children.size(); i++) {
+                               Part child = children.get(i);
+                               // remove css
+                               for (CssSelector selector : child.getSelectors()) {
+                                       cssFile.removeCssSelector(selector);
+                               }
+
+                       }
+               }
+
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void propertyChanged(PartEvent event) {
+               if (event != null) {
+                       String propertyName = event.getChangedProperty();
+                       Part part = ((Part) event.getPart());
+                       if (part != null) {
+                               Element element = part.getElement();
+                               String value = part.getPropertyValue(propertyName);
+                               if (element != null) {
+                                       PartDescriptor partDescriptor = part.getPartDescriptor();
+                                       PropertyDescriptor propertyDescriptor = partDescriptor
+                                                       .getPropertyDescriptor(propertyName);
+                                       String xpath = propertyDescriptor.getXpath();
+
+                                       if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
+                                               XPathFactory xpathFactory = XPathFactory.newInstance();
+                                               XPath expr = xpathFactory.newXPath();
+                                               Object node = null;
+                                               try {
+                                                       node = expr.evaluate(xpath, element,
+                                                                       XPathConstants.NODE);
+                                               } catch (XPathExpressionException e) {
+                                                       e.printStackTrace();
+                                               }
+
+                                               if (node != null) {
+                                                       if (node instanceof Attr) {
+                                                               Attr attr = (Attr) node;
+                                                               if (value.equals(BuilderConstants.EMPTY)) {
+                                                                       Element ownerElement = attr
+                                                                                       .getOwnerElement();
+                                                                       ownerElement.removeAttribute(propertyName);
+                                                               } else {
+                                                                       attr.setValue(value);
+                                                               }
+                                                               // System.out.println("~~~~~~~~~~propertyChanged() xpath attribute "+
+                                                               // attr + ", " + propertyName +"=" + value);
+                                                       } else if (node instanceof Text) {
+                                                               Text text = (Text) node;
+                                                               text.setTextContent(value);
+                                                               // System.out.println("~~~~~~~~~~propertyChanged() xpath text "+
+                                                               // text + ", " + propertyName +"=" + value);
+                                                       }
+                                               }
+                                       } else {
+                                               if (value.equals(BuilderConstants.EMPTY)) {
+                                                       element.removeAttribute(propertyName);
+                                               } else {
+                                                       element.setAttribute(propertyName, value);
+                                               }
+                                               // System.out.println("~~~~~~~~~~propertyChanged() no xpath "
+                                               // + element + ", " + propertyName +"=" + value);
+                                       }
+                               }
+                       }
+               }
+
+               // System.out.println("PageData propertyChanged()");
+               // TransformerFactory transformerFactory =
+               // TransformerFactory.newInstance();
+               //        transformerFactory.setAttribute("indent-number", new Integer(4)); //$NON-NLS-1$
+               // Transformer transformer = null;
+               // try {
+               // transformer = transformerFactory.newTransformer();
+               // } catch (TransformerConfigurationException e) {
+               // e.printStackTrace();
+               // }
+               // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+               // BuilderConstants.NO);
+               // transformer.setOutputProperty(OutputKeys.INDENT,
+               // BuilderConstants.NO);
+               // DOMSource source = new DOMSource(document);
+               // StreamResult result = new StreamResult(System.out);
+               // try {
+               // transformer.transform(source, result);
+               // } catch (TransformerException e) {
+               // e.printStackTrace();
+               // }
+
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void eventChanged(PartEvent event) {
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void positionChanged(PartEvent event) {
+               // syncDataToStyle();
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void cssPropertyChanged(CssEvent event) {
+               if (event.getEventType()
+                               .equals(CssEvent.EventType.CSS_POSITION_CHANGED)) {
+                       Part part = event.getPart();
+                       String selectorName = event.getSelectorName();
+
+                       CssSelector selector = getCurrentCssFile()
+                                       .getSelector(selectorName);
+                       if (selector == null
+                                       && !part.getPositionMode().equals(
+                                                       Part.PositionMode.ABSOLUTE_POSITION)) {
+                               return;
+                       } else if (selector != null) {
+                               Rectangle rect = part.getPosition();
+                               selector.setStyle("left", rect.x + "px");
+                               selector.setStyle("top", rect.y + "px");
+                               selector.setStyle("width", rect.width + "px");
+                               selector.setStyle("height", rect.height + "px");
+                       }
+                       return;
+               }
+
+               if (event.getPropertyKey() == null) {
+                       return;
+               }
+
+               // if(event.getPropertyKey().equals("position")){
+               // Part part = rootPart.getChildOfPropertyValue("id",
+               // event.getSelectorName().substring(1), true);
+               // if(part != null){
+               // if(event.getPropertyValue().equals("absolute")){
+               // part.setPositionMode(Part.PositionMode.ABSOLUTE_POSITION);
+               // } else if(event.getPropertyValue().equals("relative")){
+               // part.setPositionMode(Part.PositionMode.RELATIVE_POSITION);
+               // }
+               //
+               // }
+               // } else if(event.getPropertyKey().equals("left")){
+               // Part part = rootPart.getChildOfPropertyValue("id",
+               // event.getSelectorName().substring(1), true);
+               // if(part != null){
+               // Rectangle rect = new Rectangle(part.getPosition());
+               // rect.x = Integer.parseInt(event.getPropertyValue().substring(0,
+               // event.getPropertyValue().length()-2));
+               // part.setPosition(rect);
+               // }
+               // } else if(event.getPropertyKey().equals("top")){
+               // Part part = rootPart.getChildOfPropertyValue("id",
+               // event.getSelectorName().substring(1), true);
+               // if(part != null){
+               // Rectangle rect = new Rectangle(part.getPosition());
+               // rect.y = Integer.parseInt(event.getPropertyValue().substring(0,
+               // event.getPropertyValue().length()-2));
+               // part.setPosition(rect);
+               // }
+               // }
+
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void cssSelectorAdded(CssEvent event) {
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void cssSelectorRemoved(CssEvent event) {
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       @Override
+       public void visualPositionChanged(PartEvent e) {
+       }
+
+       @Override
+       public void needRefresh(CssEvent event) {
+       }
+
+       @Override
+       public void needRefresh(PartEvent e) {
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
+
+       /* add CSS File method */
+       public boolean addCssFile(CssFile addItem) {
+               if (addItem == null) {
+                       return false;
+               }
+               for (CssFile cssFile : cssFiles) {
+                       if (cssFile.getWidth() == addItem.getWidth()) {
+                               return false;
+                       }
+               }
+
+               return cssFiles.add(addItem);
+       }
+
+       public void addCssFile(String cssFilePath, int width) {
+               addCssFile(new CssFile(cssFilePath, width));
+       }
+
+       public void removeCssFile(CssFile cssFile) {
+               if (cssFile != null) {
+                       cssFiles.remove(cssFile);
+               }
+       }
+
+       public void removeCssFile(String fileName) {
+               removeCssFile(getCssFile(fileName));
+       }
+
+       public CssFile getCssFile(String fileName) {
+               if (fileName != null) {
+                       for (CssFile cssFile : cssFiles) {
+                               if (fileName.equals(cssFile.getFileName())) {
+                                       return cssFile;
+                               }
+                       }
+               }
+
+               return null;
+       }
+
+       public List<CssFile> getCssFiles() {
+               return cssFiles;
+       }
+
+       public void setCssFiles(List<CssFile> cssFiles) {
+               this.cssFiles = cssFiles;
+       }
+
+       public CssFile getCurrentCssFile() {
+               if (cssFiles.isEmpty()) {
+                       return null;
+               }
+
+               return cssFiles.get(cssFileIndex);
+       }
+
+       public CssFile getCommonCssFile() {
+               return cssFiles.get(0);
+       }
+
+       public void setCssFileIndex(int index) {
+               cssFileIndex = index;
+               fireEvent(new PageDataEvent(PageDataEventType.PAGE_CHANGED, this));
+       }
 
 }
index 54d16ff..301040b 100644 (file)
@@ -173,13 +173,13 @@ public class PageDataForHTML extends PageData {
             transformer =
                     transformerFactory.newTransformer(new DOMSource(getDescriptorManager()
                             .getXsltDocument()));
+            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
+            transformer.setOutputProperty(OutputKeys.INDENT, BuilderConstants.NO);
+            transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
+            transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
         } catch (TransformerConfigurationException e) {
             e.printStackTrace();
         }
-        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
-        transformer.setOutputProperty(OutputKeys.INDENT, BuilderConstants.NO);
-        transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
-        transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
 
         DOMSource source = new DOMSource(element);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
index 6c31d87..d602219 100644 (file)
@@ -959,7 +959,9 @@ public class PageDesigner extends GraphicalEditor implements CommandStackListene
         if (type == DeclarationViewInfoProvider.class) {
             if (fDeclarationViewInfoProvider == null) {
                 fDeclarationViewInfoProvider = new DeclarationViewInfoProvider(rootPart);
-                designer.addSelectionChangedListener(fDeclarationViewInfoProvider);
+                if (designer != null) {
+                       designer.addSelectionChangedListener(fDeclarationViewInfoProvider);
+                }
             }
             return fDeclarationViewInfoProvider;
         }
index f240c08..8a7a7a7 100644 (file)
@@ -20,7 +20,6 @@
  *
  */
 
-
 package org.tizen.webuibuilder.ui.editor;
 
 import java.io.File;
@@ -52,181 +51,185 @@ import org.tizen.webuibuilder.ui.editor.texteditor.TextEditor;
 import org.tizen.webuibuilder.ui.editor.texteditor.TextEditorForAppXML;
 import org.tizen.webuibuilder.ui.views.nscreen.model.NScreenModel;
 
-
 public class PageDesignerForAppXML extends PageDesigner {
 
-    public static final String ID = PageDesignerForAppXML.class.getName();
-
-    @Override
-    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-        String filename = input.getToolTipText();
-        Path path = new Path(filename);
-        IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-        project = file.getProject();
-        projectManager = ProjectManager.getProjectManager(project);
-        appManager = projectManager.getDefaultAppManager();
-
-        super.init(site, input);
-    }
-
-    @Override
-    protected void setInput(IEditorInput input) {
-        super.setInput(input);
-
-        String filename = input.getToolTipText();
-        Path path = new Path(filename);
-        IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-        setPartName(file.getName());
-
-        IProject project = file.getProject();
-        projectManager = ProjectManager.getProjectManager(project);
-
-        if (file.exists()) {
-            filePath = file.getLocation().toString();
-        } else {
-            filePath = input.getToolTipText();
-        }
-
-        PageFileData pageFileData = loadPage(filePath);
-
-        appManager = projectManager.getDefaultAppManager();
-
-        if (appManager != null) {
-            appManager.addPageListener(this);
-            //if (pageFileData != null) {
-                pageData = appManager.getPageData(pageFileData.getName(0));
-                if (pageData != null) {
-                    pageData.addPageListener(this);
-                }
-            //} else {
-                // pageData = appManager.getPageData(0);
-            //}
-        } else {
-            // appManager = new AppManager(projectManager, null);
-            // Page page = new Page(filename, false, filename, EMPTY, EMPTY,
-            // EMPTY, EMPTY, EMPTY);
-            // appManager.addPageListener(this);
-            // pageData = new PageData("single", pageFileData, (Document)null,
-            // projectManager.getDescriptorManager(), page);
-            // if (pageData != null) {
-            // pageData.addPageListener(this);
-            // }
-        }
-
-        Part rootPart = null;
-        if (pageFileData != null && pageData != null) {
-            rootPart = pageData.getRootPart();
-
-            bindingAnimatorModel(rootPart);
-        }
-
-        setRootPart(rootPart);
-        
-        /* load css file */
-        // pageData.addCssFile(loadCssFile(filePath));
-
-        /* load css file */
-        if (pageData != null && pageData.getCssFiles().size() == 0) {
-            for (NScreenModel model : pageFileData.getNscreenModelList()) {
-                CssFile cssFile = null;
-                if (model.getFileName() == null || model.getFileName().isEmpty()) {
-                    String cssPath =
-                            filePath.substring(0, filePath.lastIndexOf(BuilderConstants.DOT));
-                    // cssPath += BuilderConstants.MANAGED_CSS_EXTENSION;
-                    cssPath += ".default.css";
-
-                    try {
-                        File newCSSFile = new File(cssPath);
-                        newCSSFile.createNewFile();
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
-
-                    model.setFileName(cssPath.substring(cssPath.lastIndexOf(IPath.SEPARATOR) + 1));
-                    cssFile = loadCssFile(cssPath);
-                } else {
-                    String cssPath =
-                            filePath.substring(0, filePath.lastIndexOf(IPath.SEPARATOR) + 1);
-                    cssPath += model.getFileName();
-                    cssFile = loadCssFile(cssPath);
-                }
-                if (cssFile != null) {
-                    cssFile.setNScreenModel(model);
-                    pageData.addCssFile(cssFile);
-                }
-            }
-
-            setCssFileToModel(pageData.getCurrentCssFile());
-        }
-    }
-
-    protected PageFileData loadPage(String file) {
-        PageFileData parsed = null;
-        PageFileData retVaule = null;
-
-        if (file != null) {
-            parsed = PageReader.read(file, appManager.getPartFactory());
-            if (parsed != null) {
-                // parsed.getRootPart().setDescriptorManagerAll(getDescriptorManager());
-                // parsed.getRootPart().setProjectAll(projectManager.getProject());
-            }
-            retVaule = parsed;
-        }
-
-        return retVaule;
-    }
-
-    @Override
-    protected void save(String filePath) throws IOException, CoreException {
-        if (filePath == null) {
-            return;
-        }
-
-        pageData.syncDataToFileData();
-        PageFileData pageFileData =
-                new PageFileData(pageData.getName(), pageData.getVersion(), pageData.getRootPart(),
-                                 null);
-        for (CssFile cssFile : pageData.getCssFiles()) {
-            pageFileData.getNscreenModelList().add(cssFile.getNScreenModel());
-        }
-
-        PageWriter.writeToFile(pageFileData, filePath);
-        IFile file = getFile();
-        file.refreshLocal(IResource.DEPTH_ZERO, null);
-        WebUIBuilderBuilder.build(file);
-        AnimatorFileWriter.save(appManager, rootPart);
-    }
-
-    @Override
-    protected TextEditor createTextEditorComposite(Composite parent) {
-        // Initializes textEditor.
-        TextEditor editor = new TextEditorForAppXML((IEditorSite) getSite(), /*
-                                                                              * getProjectManager (
-                                                                              * ) ,
-                                                                              */getAppManager());
-        editor.createPartControl(parent);
-
-        return editor;
-    }
-
-    @Override
-    protected String generateCode() {
-        String code =
-                CodeGenerator.generateCode(rootPart, false, appManager.getDescriptorManager()
-                        .getXsltDocument(), false);
-        return code;
-    }
-
-    @Override
-    public void pagePreDelete(PageDataEvent e) {
-        PageDesigner editor = this;
-        getSite().getPage().closeEditor(editor, false);
-    }
-
-    @Override
-    public void pageRenamed(PageDataEvent e) {
-        PageDesigner editor = this;
-        getSite().getPage().closeEditor(editor, false);
-    }
+       public static final String ID = PageDesignerForAppXML.class.getName();
+
+       @Override
+       public void init(IEditorSite site, IEditorInput input)
+                       throws PartInitException {
+               String filename = input.getToolTipText();
+               Path path = new Path(filename);
+               IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+               project = file.getProject();
+               projectManager = ProjectManager.getProjectManager(project);
+               appManager = projectManager.getDefaultAppManager();
+
+               super.init(site, input);
+       }
+
+       @Override
+       protected void setInput(IEditorInput input) {
+               super.setInput(input);
+
+               String filename = input.getToolTipText();
+               Path path = new Path(filename);
+               IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+               setPartName(file.getName());
+
+               IProject project = file.getProject();
+               projectManager = ProjectManager.getProjectManager(project);
+
+               if (file.exists()) {
+                       filePath = file.getLocation().toString();
+               } else {
+                       filePath = input.getToolTipText();
+               }
+
+               PageFileData pageFileData = loadPage(filePath);
+
+               appManager = projectManager.getDefaultAppManager();
+
+               if (appManager != null) {
+                       appManager.addPageListener(this);
+                       // if (pageFileData != null) {
+                       pageData = appManager.getPageData(pageFileData.getName(0));
+                       if (pageData != null) {
+                               pageData.addPageListener(this);
+                       }
+                       // } else {
+                       // pageData = appManager.getPageData(0);
+                       // }
+               } else {
+                       // appManager = new AppManager(projectManager, null);
+                       // Page page = new Page(filename, false, filename, EMPTY, EMPTY,
+                       // EMPTY, EMPTY, EMPTY);
+                       // appManager.addPageListener(this);
+                       // pageData = new PageData("single", pageFileData, (Document)null,
+                       // projectManager.getDescriptorManager(), page);
+                       // if (pageData != null) {
+                       // pageData.addPageListener(this);
+                       // }
+               }
+
+               Part rootPart = null;
+               if (pageFileData != null && pageData != null) {
+                       rootPart = pageData.getRootPart();
+
+                       bindingAnimatorModel(rootPart);
+               }
+
+               setRootPart(rootPart);
+
+               /* load css file */
+               // pageData.addCssFile(loadCssFile(filePath));
+
+               /* load css file */
+               if (pageData != null && pageData.getCssFiles() != null
+                               && pageData.getCssFiles().size() == 0) {
+                       for (NScreenModel model : pageFileData.getNscreenModelList()) {
+                               CssFile cssFile = null;
+                               if (model.getFileName() == null
+                                               || model.getFileName().isEmpty()) {
+                                       String cssPath = filePath.substring(0,
+                                                       filePath.lastIndexOf(BuilderConstants.DOT));
+                                       // cssPath += BuilderConstants.MANAGED_CSS_EXTENSION;
+                                       cssPath += ".default.css";
+
+                                       try {
+                                               File newCSSFile = new File(cssPath);
+                                               newCSSFile.createNewFile();
+                                       } catch (IOException e) {
+                                               e.printStackTrace();
+                                       }
+
+                                       model.setFileName(cssPath.substring(cssPath
+                                                       .lastIndexOf(IPath.SEPARATOR) + 1));
+                                       cssFile = loadCssFile(cssPath);
+                               } else {
+                                       String cssPath = filePath.substring(0,
+                                                       filePath.lastIndexOf(IPath.SEPARATOR) + 1);
+                                       cssPath += model.getFileName();
+                                       cssFile = loadCssFile(cssPath);
+                               }
+                               if (cssFile != null) {
+                                       cssFile.setNScreenModel(model);
+                                       pageData.addCssFile(cssFile);
+                               }
+                       }
+
+                       setCssFileToModel(pageData.getCurrentCssFile());
+               }
+       }
+
+       protected PageFileData loadPage(String file) {
+               PageFileData parsed = null;
+               PageFileData retVaule = null;
+
+               if (file != null) {
+                       parsed = PageReader.read(file, appManager.getPartFactory());
+                       if (parsed != null) {
+                               // parsed.getRootPart().setDescriptorManagerAll(getDescriptorManager());
+                               // parsed.getRootPart().setProjectAll(projectManager.getProject());
+                       }
+                       retVaule = parsed;
+               }
+
+               return retVaule;
+       }
+
+       @Override
+       protected void save(String filePath) throws IOException, CoreException {
+               if (filePath == null) {
+                       return;
+               }
+
+               pageData.syncDataToFileData();
+               PageFileData pageFileData = new PageFileData(pageData.getName(),
+                               pageData.getVersion(), pageData.getRootPart(), null);
+               for (CssFile cssFile : pageData.getCssFiles()) {
+                       pageFileData.getNscreenModelList().add(cssFile.getNScreenModel());
+               }
+
+               PageWriter.writeToFile(pageFileData, filePath);
+               IFile file = getFile();
+               file.refreshLocal(IResource.DEPTH_ZERO, null);
+               WebUIBuilderBuilder.build(file);
+               AnimatorFileWriter.save(appManager, rootPart);
+       }
+
+       @Override
+       protected TextEditor createTextEditorComposite(Composite parent) {
+               // Initializes textEditor.
+               TextEditor editor = new TextEditorForAppXML((IEditorSite) getSite(), /*
+                                                                                                                                                        * getProjectManager
+                                                                                                                                                        * (
+                                                                                                                                                        * )
+                                                                                                                                                        * ,
+                                                                                                                                                        */
+                               getAppManager());
+               editor.createPartControl(parent);
+
+               return editor;
+       }
+
+       @Override
+       protected String generateCode() {
+               String code = CodeGenerator.generateCode(rootPart, false, appManager
+                               .getDescriptorManager().getXsltDocument(), false);
+               return code;
+       }
+
+       @Override
+       public void pagePreDelete(PageDataEvent e) {
+               PageDesigner editor = this;
+               getSite().getPage().closeEditor(editor, false);
+       }
+
+       @Override
+       public void pageRenamed(PageDataEvent e) {
+               PageDesigner editor = this;
+               getSite().getPage().closeEditor(editor, false);
+       }
 
 }