*
*/
-
package org.tizen.webuibuilder.model.page;
import java.util.ArrayList;
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));
+ }
}
*
*/
-
package org.tizen.webuibuilder.ui.editor;
import java.io.File;
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);
+ }
}