*
*/
-
package org.tizen.webuibuilder.model.page;
import java.util.ArrayList;
import org.tizen.webuibuilder.model.page.PageDataEvent.PageDataEventType;
import org.tizen.webuibuilder.model.page.PageDataSetEvent.PageDataSetEventType;
-
public class PageDataSet {
- public enum DataDataValidateType {
- PAGE_OK, PAGE_NOACTIVEPAGE, PAGE_MULTIACTIVEPAGE
- };
-
- private Part baseRootPart = null;
-
- private List<PageData> pages = new ArrayList<PageData>();
-
- private List<IPageDataSetListener> listeners = new ArrayList<IPageDataSetListener>();
- private List<IPageDataSetListener> removeListeners = new ArrayList<IPageDataSetListener>();
- private boolean processEventFlag = false;
-
- /**
- * Constructor.
- *
- * @param project
- * an {@link IProject}
- */
- public PageDataSet() {
-
- }
-
- public List<PageData> getPages() {
- return pages;
- }
-
- public void addPage(PageData page, String path, boolean isExistsPagePart) {
- if (hasPageName(page.getName())) {
- return;
- }
-
- page.setPagePath(path);
- pages.add(page);
- if (isExistsPagePart) {
- baseRootPart.addChild(page.getPagePart(), true);
- }
-
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_ADDED, page,
- getNumberOfPages() - 1, null));
- }
-
- public void addPage(PageData page, String path) {
- addPage(page, path, false);
- }
-
- public void addPage(int index, PageData page, String path, boolean isExistsPagePart) {
- if (hasPageName(page.getName())) {
- return;
- }
-
- page.setPagePath(path);
- pages.add(index, page);
- if (isExistsPagePart) {
- baseRootPart.getChildOfId("tizen.doc").addChild(page.getPagePart(), true);
- }
-
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_ADDED, page, index, null));
- }
-
- public void addPage(int index, PageData page, String path) {
- addPage(index, page, path, false);
- }
-
- public void renamePage(PageData page, String newName) {
- PageData oldPage = page;
- page.setName(newName);
- // if (page.getPagePath() != oldPage.getPagePath()) {
- // // rename(oldPage.getPagePath(), page.getPagePath());
- // }
- // if (page.getJsPath() != oldPage.getJsPath()) {
- // // rename(oldPage.getPagePath(), page.getPagePath());
- // }
- // if (page.getManagedJsPath() != oldPage.getManagedJsPath()) {
- // // delete(oldPage.getManagedJsPath());
- // }
- // if (page.getCssPath() != oldPage.getCssPath()) {
- // // delete(oldPage.getPagePath());
- // }
- // if (page.getHtmlPath() != oldPage.getHtmlPath()) {
- // // delete(oldPage.getHtmlPath());
- // }
-
- // rebuild Managed.js, html, css
- // .........
-
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_RENAMED, page, getPageIndex(page),
- oldPage));
- }
-
- public void movePage(PageData page, int sourceIndex, int targetIndex) {
- PageData pageData = pages.get(sourceIndex);
- pages.remove(pageData);
- pages.add(targetIndex, pageData);
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_MOVED, null, 0, null));
- }
-
- public int getPageIndex(String id) {
- return getPageIndex(getPageData(id));
- }
-
- public int getPageIndex(PageData page) {
- return getPages().indexOf(page);
- }
-
- public boolean hasPageName(String pageName) {
- for (PageData page : getPages()) {
- String name = page.getName();
- if (name != null && name.equals(pageName)) {
- return true;
- }
- }
-
- return false;
- }
-
- public void addPageListener(IPageDataSetListener listener) {
- listeners.add(listener);
- }
-
- public void removePageListener(IPageDataSetListener listener) {
- if (!processEventFlag) {
- listeners.remove(listener);
- } else {
- removeListeners.add(listener);
- }
- }
-
- private void fireEvent(final PageDataSetEvent pageEvent) {
- Display.getDefault().syncExec(new Runnable() {
- @Override
- public void run() {
- fireEvent(pageEvent, listeners);
- }
- });
- }
-
- private void fireEvent(PageDataSetEvent pageEvent, List<IPageDataSetListener> listeners) {
- Iterator<IPageDataSetListener> itr = listeners.iterator();
- IPageDataSetListener listener = null;
-
- processEventFlag = true;
- while (itr.hasNext()) {
- listener = itr.next();
- switch (pageEvent.getType()) {
- case ALL_PAGES_RESETED:
- listener.allPagesReseted(pageEvent);
- break;
- case PAGE_ADDED:
- listener.pageAdded(pageEvent);
- break;
- case PAGE_REMOVED:
- listener.pageRemoved(pageEvent);
- break;
- case PAGE_RENAMED:
- listener.pageRenamed(pageEvent);
- break;
- default:
- assert (false);
- }
- }
- processEventFlag = false;
-
- if (!removeListeners.isEmpty()) {
- for (IPageDataSetListener removeListener : removeListeners) {
- listeners.remove(removeListener);
- }
- removeListeners.clear();
- }
- }
-
- public PageData getPageByIndex(int index) {
- return getPages().get(index);
- }
-
- public PageData getPageByPath(String path) {
- if (path == null) {
- return null;
- }
-
- for (PageData page : getPages()) {
- if (path.equals(page.getPagePath())) {
- return page;
- }
- }
-
- return null;
- }
-
- public String getPageName(int index) {
- return getPageByIndex(index).getName();
- }
-
- public int getNumberOfPages() {
- return getPages().size();
- }
-
- public Part getBaseRootPart() {
- return baseRootPart;
- }
-
- public void setBaseRootPart(Part rootPart) {
- baseRootPart = rootPart;
- fireEvent(new PageDataSetEvent(PageDataSetEventType.ALL_PAGES_RESETED, null, 0, null));
- }
-
- /**
- * Gets a root {@link Part} corresponding page.
- *
- * @param name
- * a page name
- * @return root {@link Part} if a root {@link Part} corresponding page is exist, and null
- * otherwise
- */
- public Part getRootPart(String name) {
- PageData page = getPageData(name);
- if (page != null) {
- return page.getRootPart();
- } else {
- return null;
- }
- }
-
- public Part getPagePart(String name) {
- PageData page = getPageData(name);
- if (page != null) {
- return page.getPagePart();
- } else {
- return null;
- }
- }
-
- /**
- * Gets a {@link PageData} corresponding page.
- *
- * @param index
- * a page index
- * @return {@link PageData} if a {@link PageData} corresponding page is exist, and null
- * otherwise
- */
- public PageData getPageData(int index) {
- if (index < 0 || index >= getPages().size()) {
- return null;
- }
-
- return getPages().get(index);
- }
-
- /**
- * Gets a {@link PageData} corresponding page.
- *
- * @param name
- * a page name
- * @return {@link PageData} if a {@link PageData} corresponding page is exist, and null
- * otherwise
- */
- public PageData getPageData(String name) {
- if (name == null) {
- return null;
- }
-
- for (PageData page : getPages()) {
- if (name.equals(page.getName())) {
- return page;
- }
- }
-
- return null;
- }
-
- public void removePage(int index) {
- PageData page = getPages().get(index);
-
- page.fireEvent(new PageDataEvent(PageDataEventType.PAGE_PREDELETE, page));
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_PREDELETE, page, index, null));
-
- pages.remove(index);
-
- fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_REMOVED, page, index, null));
- }
-
- public void removePage(PageData page) {
- int index = getPages().indexOf(page);
- removePage(index);
- }
-
- public void removeAllPages() {
- for (int i = pages.size() - 1; i >= 0; i--) {
- removePage(i);
- }
- }
+ public enum DataDataValidateType {
+ PAGE_OK, PAGE_NOACTIVEPAGE, PAGE_MULTIACTIVEPAGE
+ };
+
+ private Part baseRootPart = null;
+
+ private List<PageData> pages = new ArrayList<PageData>();
+
+ private List<IPageDataSetListener> listeners = new ArrayList<IPageDataSetListener>();
+ private List<IPageDataSetListener> removeListeners = new ArrayList<IPageDataSetListener>();
+ private boolean processEventFlag = false;
+
+ /**
+ * Constructor.
+ *
+ * @param project
+ * an {@link IProject}
+ */
+ public PageDataSet() {
+
+ }
+
+ public List<PageData> getPages() {
+ return pages;
+ }
+
+ public void addPage(PageData page, String path, boolean isExistsPagePart) {
+ if (hasPageName(page.getName())) {
+ return;
+ }
+
+ page.setPagePath(path);
+ pages.add(page);
+ if (isExistsPagePart) {
+ baseRootPart.addChild(page.getPagePart(), true);
+ }
+
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_ADDED, page,
+ getNumberOfPages() - 1, null));
+ }
+
+ public void addPage(PageData page, String path) {
+ addPage(page, path, false);
+ }
+
+ public void addPage(int index, PageData page, String path,
+ boolean isExistsPagePart) {
+ if (hasPageName(page.getName())) {
+ return;
+ }
+
+ page.setPagePath(path);
+ pages.add(index, page);
+ if (isExistsPagePart) {
+ Part docPart = baseRootPart.getChildOfId("tizen.doc");
+ if (docPart != null) {
+ docPart.addChild(page.getPagePart(), true);
+ }
+ }
+
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_ADDED, page,
+ index, null));
+ }
+
+ public void addPage(int index, PageData page, String path) {
+ addPage(index, page, path, false);
+ }
+
+ public void renamePage(PageData page, String newName) {
+ PageData oldPage = page;
+ page.setName(newName);
+ // if (page.getPagePath() != oldPage.getPagePath()) {
+ // // rename(oldPage.getPagePath(), page.getPagePath());
+ // }
+ // if (page.getJsPath() != oldPage.getJsPath()) {
+ // // rename(oldPage.getPagePath(), page.getPagePath());
+ // }
+ // if (page.getManagedJsPath() != oldPage.getManagedJsPath()) {
+ // // delete(oldPage.getManagedJsPath());
+ // }
+ // if (page.getCssPath() != oldPage.getCssPath()) {
+ // // delete(oldPage.getPagePath());
+ // }
+ // if (page.getHtmlPath() != oldPage.getHtmlPath()) {
+ // // delete(oldPage.getHtmlPath());
+ // }
+
+ // rebuild Managed.js, html, css
+ // .........
+
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_RENAMED, page,
+ getPageIndex(page), oldPage));
+ }
+
+ public void movePage(PageData page, int sourceIndex, int targetIndex) {
+ PageData pageData = pages.get(sourceIndex);
+ pages.remove(pageData);
+ pages.add(targetIndex, pageData);
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_MOVED, null,
+ 0, null));
+ }
+
+ public int getPageIndex(String id) {
+ return getPageIndex(getPageData(id));
+ }
+
+ public int getPageIndex(PageData page) {
+ return getPages().indexOf(page);
+ }
+
+ public boolean hasPageName(String pageName) {
+ for (PageData page : getPages()) {
+ String name = page.getName();
+ if (name != null && name.equals(pageName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public void addPageListener(IPageDataSetListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removePageListener(IPageDataSetListener listener) {
+ if (!processEventFlag) {
+ listeners.remove(listener);
+ } else {
+ removeListeners.add(listener);
+ }
+ }
+
+ private void fireEvent(final PageDataSetEvent pageEvent) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ fireEvent(pageEvent, listeners);
+ }
+ });
+ }
+
+ private void fireEvent(PageDataSetEvent pageEvent,
+ List<IPageDataSetListener> listeners) {
+ Iterator<IPageDataSetListener> itr = listeners.iterator();
+ IPageDataSetListener listener = null;
+
+ processEventFlag = true;
+ while (itr.hasNext()) {
+ listener = itr.next();
+ switch (pageEvent.getType()) {
+ case ALL_PAGES_RESETED:
+ listener.allPagesReseted(pageEvent);
+ break;
+ case PAGE_ADDED:
+ listener.pageAdded(pageEvent);
+ break;
+ case PAGE_REMOVED:
+ listener.pageRemoved(pageEvent);
+ break;
+ case PAGE_RENAMED:
+ listener.pageRenamed(pageEvent);
+ break;
+ default:
+ assert (false);
+ }
+ }
+ processEventFlag = false;
+
+ if (!removeListeners.isEmpty()) {
+ for (IPageDataSetListener removeListener : removeListeners) {
+ listeners.remove(removeListener);
+ }
+ removeListeners.clear();
+ }
+ }
+
+ public PageData getPageByIndex(int index) {
+ return getPages().get(index);
+ }
+
+ public PageData getPageByPath(String path) {
+ if (path == null) {
+ return null;
+ }
+
+ for (PageData page : getPages()) {
+ if (path.equals(page.getPagePath())) {
+ return page;
+ }
+ }
+
+ return null;
+ }
+
+ public String getPageName(int index) {
+ return getPageByIndex(index).getName();
+ }
+
+ public int getNumberOfPages() {
+ return getPages().size();
+ }
+
+ public Part getBaseRootPart() {
+ return baseRootPart;
+ }
+
+ public void setBaseRootPart(Part rootPart) {
+ baseRootPart = rootPart;
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.ALL_PAGES_RESETED,
+ null, 0, null));
+ }
+
+ /**
+ * Gets a root {@link Part} corresponding page.
+ *
+ * @param name
+ * a page name
+ * @return root {@link Part} if a root {@link Part} corresponding page is
+ * exist, and null otherwise
+ */
+ public Part getRootPart(String name) {
+ PageData page = getPageData(name);
+ if (page != null) {
+ return page.getRootPart();
+ } else {
+ return null;
+ }
+ }
+
+ public Part getPagePart(String name) {
+ PageData page = getPageData(name);
+ if (page != null) {
+ return page.getPagePart();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets a {@link PageData} corresponding page.
+ *
+ * @param index
+ * a page index
+ * @return {@link PageData} if a {@link PageData} corresponding page is
+ * exist, and null otherwise
+ */
+ public PageData getPageData(int index) {
+ if (index < 0 || index >= getPages().size()) {
+ return null;
+ }
+
+ return getPages().get(index);
+ }
+
+ /**
+ * Gets a {@link PageData} corresponding page.
+ *
+ * @param name
+ * a page name
+ * @return {@link PageData} if a {@link PageData} corresponding page is
+ * exist, and null otherwise
+ */
+ public PageData getPageData(String name) {
+ if (name == null) {
+ return null;
+ }
+
+ for (PageData page : getPages()) {
+ if (name.equals(page.getName())) {
+ return page;
+ }
+ }
+
+ return null;
+ }
+
+ public void removePage(int index) {
+ PageData page = getPages().get(index);
+
+ page.fireEvent(new PageDataEvent(PageDataEventType.PAGE_PREDELETE, page));
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_PREDELETE,
+ page, index, null));
+
+ pages.remove(index);
+
+ fireEvent(new PageDataSetEvent(PageDataSetEventType.PAGE_REMOVED, page,
+ index, null));
+ }
+
+ public void removePage(PageData page) {
+ int index = getPages().indexOf(page);
+ removePage(index);
+ }
+
+ public void removeAllPages() {
+ for (int i = pages.size() - 1; i >= 0; i--) {
+ removePage(i);
+ }
+ }
}