DESIGNER: CSS Selector UX update 16/18016/1
authorjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 14 Mar 2014 05:01:59 +0000 (14:01 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 14 Mar 2014 05:01:59 +0000 (14:01 +0900)
Make DOM element tree and class list

Change-Id: I8f1216b84338b5164e5a03f91307d168169416ed
Signed-off-by: jooyoul_lee <jy.exe.lee@samsung.com>
org.tizen.webuibuilder/res/html/ground.js
org.tizen.webuibuilder/src/org/tizen/webuibuilder/bridge/DesignerGoingBridge.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/viewer/DesignerEventDelegator.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/selector/CSSSelectorDialog.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/selector/SelectorElement.java

index fb790f3..05356d1 100644 (file)
@@ -395,3 +395,9 @@ function excludeWidgets(wids) {
                widget.css("opacity", "0.2");
        }
 }
+
+function getElementDom(id) {
+       var result = document.getElementById(id);
+
+       return result.outerHTML;
+}
index 24ec3f6..8319ba1 100644 (file)
@@ -524,4 +524,10 @@ public class DesignerGoingBridge extends GoingBridge {
         call("AniBridge.setVisible", new Jsonizable[] { new JsString(nodeId),
                 new JsBoolean(isVisible) });
     }
+
+    public String getElementDom(String id) {
+        Object obj = call("getElementDom", new Jsonizable[] { new JsString(id) });
+        return (String) obj;
+    }
+
 }
index 2da3589..5035995 100644 (file)
@@ -20,6 +20,7 @@
  *
  */
 
+
 package org.tizen.webuibuilder.gef.viewer;
 
 import java.util.List;
@@ -36,109 +37,110 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 import org.tizen.webuibuilder.gef.editparts.DesignerEditPart;
 import org.tizen.webuibuilder.gef.editparts.HoverViewerEditPart;
+import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.ui.quickstyle.QuickStyleConstants;
 import org.tizen.webuibuilder.ui.selector.CSSSelectorDialog;
 
+
 public class DesignerEventDelegator extends HoverBrowserEventDelegator {
 
-       private DesignerBrowserViewer designEditPartViewer;
-
-       public DesignerEventDelegator(DesignerBrowserViewer viewer) {
-               super(viewer);
-               designEditPartViewer = viewer;
-       }
-
-       @Override
-       public void mouseDoubleClick(MouseEvent e) {
-               System.out.println("test double click!");
-               @SuppressWarnings("unchecked")
-               List<DesignerEditPart> selectionParts = designEditPartViewer
-                               .getSelectedEditParts();
-               if (selectionParts == null || selectionParts.isEmpty()) {
-                       return;
-               } // else : keep going
-               DesignerEditPart selectionDesignerPart = selectionParts.get(0);
-               // Part model = (Part) selectionDesignerPart.getModel();
-               // String partId = selectionDesignerPart.getId();
-               Control control = designEditPartViewer.getControl();
-               HoverViewerEditPart hpart = designEditPartViewer.getCurrentPage();
-               EditPartViewer viewer = hpart.getViewer();
-               Control control2 = viewer.getControl();
-               Rectangle rect = selectionDesignerPart.getFigure().getBounds();
-               org.eclipse.swt.graphics.Point p = control.toDisplay(rect.x, rect.y);
-
-               int x = p.x + rect.width, y = p.y;
-
-               Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
-                               .getShell();
-               CSSSelectorDialog selector = new CSSSelectorDialog(shell);
-               selector.setPosition(x, y);
-               String obj = (String)selector.open();
-               System.out.println(obj);
-
-               // DescriptorManager descriptorManager =
-               // (DescriptorManager)selectionDesignerPart.getViewer().getProperty("DescriptorManager");
-               // TODO : apply to all widgets
-               // if (model.getDescriptorId().equals("html.htmlblock")) {
-               // WidgetPosition pos =
-               // designEditPartViewer.getBrowser().getWidgetPosition(partId);
-               // if (pos == null) {
-               // return;
-               // } // else : keep going
-               // if (pos.contains(e.x, e.y)) {
-               // // TODO : do default action from part descriptor
-               // HTMLBlockPropertyModifier.getInstance(model).openEditor(model);
-               // } // else : do nothing
-               // }
-
-       }
-
-       @Override
-       public void keyReleased(KeyEvent e) {
-               if (e.keyCode == SWT.SPACE) {
-                       @SuppressWarnings("unchecked")
-                       List<DesignerEditPart> selectionParts = designEditPartViewer
-                                       .getSelectedEditParts();
-                       if (selectionParts == null || selectionParts.isEmpty()) {
-                               return;
-                       } // else : keep going
-                       DesignerEditPart selectionDesignerPart = selectionParts.get(0);
-                       Rectangle rect = selectionDesignerPart.getFigure().getBounds();
-                       Point pt = new Point(rect.x, rect.y);
-                       LocationRequest request = new LocationRequest(
-                                       QuickStyleConstants.REQ_LOCATION);
-                       request.setLocation(pt);
-                       selectionDesignerPart.showTargetFeedback(request);
-               }
-       }
-
-       private DesignerEditPart selectedEditPart = null;
-       private boolean openFlag = false;
-
-       @Override
-       public void mouseUp(MouseEvent e) {
-               super.mouseUp(e);
-               if ((e.stateMask & SWT.BUTTON1) != 0) {
-                       @SuppressWarnings("unchecked")
-                       List<DesignerEditPart> selectionParts = designEditPartViewer
-                                       .getSelectedEditParts();
-                       if (selectionParts == null || selectionParts.isEmpty()) {
-                               return;
-                       } // else : keep going
-
-                       DesignerEditPart selectionDesignerPart = selectionParts.get(0);
-
-                       if (selectedEditPart != selectionDesignerPart) {
-                               selectedEditPart = selectionDesignerPart;
-                               openFlag = false;
-                       } else if (!openFlag) {
-                               openFlag = true;
-                               Point pt = new Point(e.x, e.y);
-                               LocationRequest request = new LocationRequest(
-                                               QuickStyleConstants.REQ_LOCATION);
-                               request.setLocation(pt);
-                               selectionDesignerPart.showTargetFeedback(request);
-                       }
-               }
-       }
+    private DesignerBrowserViewer designEditPartViewer;
+
+    public DesignerEventDelegator(DesignerBrowserViewer viewer) {
+        super(viewer);
+        designEditPartViewer = viewer;
+    }
+
+    @Override
+    public void mouseDoubleClick(MouseEvent e) {
+        @SuppressWarnings("unchecked")
+        List<DesignerEditPart> selectionParts = designEditPartViewer.getSelectedEditParts();
+        if (selectionParts == null || selectionParts.isEmpty()) {
+            return;
+        } // else : keep going
+        DesignerEditPart selectionDesignerPart = selectionParts.get(0);
+        // Part model = (Part) selectionDesignerPart.getModel();
+        // String partId = selectionDesignerPart.getId();
+        Control control = designEditPartViewer.getControl();
+        HoverViewerEditPart hpart = designEditPartViewer.getCurrentPage();
+        EditPartViewer viewer = hpart.getViewer();
+        Rectangle rect = selectionDesignerPart.getFigure().getBounds();
+
+        Part part = (Part) selectionDesignerPart.getModel();
+        String id = part.getIdPropertyValue();
+
+        org.eclipse.swt.graphics.Point p = control.toDisplay(rect.x, rect.y);
+
+        int x = p.x + rect.width, y = p.y;
+
+        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+        CSSSelectorDialog selector = new CSSSelectorDialog(shell, id);
+        selector.setGoingBridge(designEditPartViewer.getGoingBridge());
+
+        selector.setPosition(x, y);
+        String obj = (String) selector.open();
+        System.out.println(obj);
+
+        // DescriptorManager descriptorManager =
+        // (DescriptorManager)selectionDesignerPart.getViewer().getProperty("DescriptorManager");
+        // TODO : apply to all widgets
+        // if (model.getDescriptorId().equals("html.htmlblock")) {
+        // WidgetPosition pos =
+        // designEditPartViewer.getBrowser().getWidgetPosition(partId);
+        // if (pos == null) {
+        // return;
+        // } // else : keep going
+        // if (pos.contains(e.x, e.y)) {
+        // // TODO : do default action from part descriptor
+        // HTMLBlockPropertyModifier.getInstance(model).openEditor(model);
+        // } // else : do nothing
+        // }
+
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+        if (e.keyCode == SWT.SPACE) {
+            @SuppressWarnings("unchecked")
+            List<DesignerEditPart> selectionParts = designEditPartViewer.getSelectedEditParts();
+            if (selectionParts == null || selectionParts.isEmpty()) {
+                return;
+            } // else : keep going
+            DesignerEditPart selectionDesignerPart = selectionParts.get(0);
+            Rectangle rect = selectionDesignerPart.getFigure().getBounds();
+            Point pt = new Point(rect.x, rect.y);
+            LocationRequest request = new LocationRequest(QuickStyleConstants.REQ_LOCATION);
+            request.setLocation(pt);
+            selectionDesignerPart.showTargetFeedback(request);
+        }
+    }
+
+    private DesignerEditPart selectedEditPart = null;
+    private boolean openFlag = false;
+
+    @Override
+    public void mouseUp(MouseEvent e) {
+        super.mouseUp(e);
+        if ((e.stateMask & SWT.BUTTON1) != 0) {
+            @SuppressWarnings("unchecked")
+            List<DesignerEditPart> selectionParts = designEditPartViewer.getSelectedEditParts();
+            if (selectionParts == null || selectionParts.isEmpty()) {
+                return;
+            } // else : keep going
+
+            DesignerEditPart selectionDesignerPart = selectionParts.get(0);
+
+            if (selectedEditPart != selectionDesignerPart) {
+                selectedEditPart = selectionDesignerPart;
+                openFlag = false;
+            } else if (!openFlag) {
+                openFlag = true;
+                Point pt = new Point(e.x, e.y);
+                LocationRequest request = new LocationRequest(QuickStyleConstants.REQ_LOCATION);
+                request.setLocation(pt);
+                selectionDesignerPart.showTargetFeedback(request);
+            }
+        }
+    }
 }
\ No newline at end of file
index a19ba82..6bc6a00 100644 (file)
@@ -1,5 +1,12 @@
+
+
 package org.tizen.webuibuilder.ui.selector;
 
+import java.io.StringBufferInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.events.MouseEvent;
@@ -20,318 +27,426 @@ import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.swt.widgets.TreeColumn;
 import org.eclipse.swt.widgets.TreeItem;
-import org.tizen.webuibuilder.ui.selector.BaseMessageBox;
-import org.tizen.webuibuilder.ui.selector.SelectorElement;
+import org.tizen.webuibuilder.bridge.DesignerGoingBridge;
+import org.tizen.webuibuilder.bridge.GoingBridge;
+import org.tizen.webuibuilder.model.html.io.HtmlReader;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
 
 public class CSSSelectorDialog extends BaseMessageBox {
 
-       private Label label = null;
-       private Button domRadio = null;
-       private Button classRadio = null;
-       private Combo combo = null;
-       private Tree tree = null;
-       private Table table = null;
-       private Composite bodyComposite = null;
-
-       private Button okButton = null;
-       private Button cancelButton = null;
-
-       public CSSSelectorDialog(Shell parentShell) {
-               super(parentShell);
-       }
-
-       @Override
-       protected boolean run() {
-               shell.setLayout(new FormLayout());
-               shell.setSize(340, 365);
-
-               label = new Label(shell, SWT.TRANSPARENT);
-               FormData data = new FormData();
-               data.top = new FormAttachment(0, 11);
-               data.left = new FormAttachment(0, 12);
-               data.height = 15;
-               data.width = 150;
-               label.setLayoutData(data);
-               label.setText("ID : ");
-
-               domRadio = new Button(shell, SWT.RADIO);
-               data = new FormData();
-               data.top = new FormAttachment(label, 10);
-               data.left = new FormAttachment(0, 9);
-               data.height = 20;
-               data.width = 80;
-               domRadio.setLayoutData(data);
-               domRadio.setText("DOM");
-               domRadio.setSelection(true);
-               domRadio.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               StackLayout layout = (StackLayout) bodyComposite.getLayout();
-                               layout.topControl = tree;
-                               bodyComposite.layout();
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               classRadio = new Button(shell, SWT.RADIO);
-               data = new FormData();
-               data.top = new FormAttachment(label, 10);
-               data.left = new FormAttachment(domRadio, 9);
-               data.height = 20;
-               data.width = 80;
-               classRadio.setLayoutData(data);
-               classRadio.setText("Class");
-               classRadio.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               StackLayout layout = (StackLayout) bodyComposite.getLayout();
-                               layout.topControl = table;
-                               bodyComposite.layout();
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               combo = new Combo(shell, SWT.READ_ONLY);
-               data = new FormData();
-               data.top = new FormAttachment(label, 10);
-               data.left = new FormAttachment(classRadio, 20);
-               data.height = 20;
-               data.width = 128;
-               combo.setLayoutData(data);
-               combo.add("None");
-               combo.add("test1");
-               combo.select(0);
-
-               bodyComposite = new Composite(shell, SWT.SINGLE);
-               bodyComposite.setLayout(new StackLayout());
-               data = new FormData();
-               data.top = new FormAttachment(domRadio, 10);
-               data.left = new FormAttachment(0, 9);
-               data.height = 200;
-               data.width = 300;
-               bodyComposite.setLayoutData(data);
-
-               tree = new Tree(bodyComposite, SWT.SINGLE | SWT.BORDER);
-               tree.setHeaderVisible(true);
-               tree.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               tree.addMouseListener(new MouseListener() {
-
-                       @Override
-                       public void mouseUp(MouseEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-
-                       @Override
-                       public void mouseDown(MouseEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-
-                       @Override
-                       public void mouseDoubleClick(MouseEvent e) {
-                               result = updateTree();
-                               shell.dispose();
-                       }
-               });
-
-               table = new Table(bodyComposite, SWT.SINGLE | SWT.BORDER);
-               table.setHeaderVisible(false);
-               table.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               table.addMouseListener(new MouseListener() {
-
-                       @Override
-                       public void mouseUp(MouseEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-
-                       @Override
-                       public void mouseDown(MouseEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-
-                       @Override
-                       public void mouseDoubleClick(MouseEvent e) {
-                               result = updateTable();
-                               shell.dispose();
-                       }
-               });
-
-               ((StackLayout) (bodyComposite.getLayout())).topControl = tree;
-
-               cancelButton = new Button(shell, SWT.PUSH);
-               data = new FormData();
-               data.top = new FormAttachment(bodyComposite, 20);
-               data.right = new FormAttachment(100, -9);
-               data.height = 25;
-               data.width = 80;
-               cancelButton.setLayoutData(data);
-               cancelButton.setText("Cancel");
-               cancelButton.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               shell.dispose();
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               okButton = new Button(shell, SWT.PUSH);
-               data = new FormData();
-               data.top = new FormAttachment(bodyComposite, 20);
-               data.right = new FormAttachment(cancelButton, -9);
-               data.height = 25;
-               data.width = 80;
-               okButton.setLayoutData(data);
-               okButton.setText("Ok");
-
-               okButton.addSelectionListener(new SelectionListener() {
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               // DesignerGoingBridge dtr = new DesignerGoingBridge(
-                               // new ImageBufferedBrowser(false, false));
-                               // dtr.getElementDom();
-
-                               result = updateTree();
-                               shell.dispose();
-                       }
-
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                               // TODO Auto-generated method stub
-
-                       }
-               });
-
-               createTree();
-               createTable();
-               return true;
-       }
-
-       public void setPosition(int x, int y) {
-               shell.setLocation(x, y);
-       }
-
-       protected void createTree() {
-
-               // create element from JSON format
-               // example
-               SelectorElement se1 = new SelectorElement(null, "span", "ui-btn-inner",
-                               null);
-               SelectorElement se2 = new SelectorElement(null, "span", "ui-btn-text",
-                               se1);
-
-               TreeColumn tc = new TreeColumn(tree, SWT.NONE);
-               tc.setText("button1");
-               tc.setWidth(100);
-
-               TreeItem tr2 = new TreeItem(tree, SWT.NONE);
-               tr2.setText(se1.getTagName());
-               tr2.setData(se1);
-
-               TreeItem tr3 = new TreeItem(tr2, SWT.NONE);
-               tr3.setText(se2.getTagName());
-               tr3.setData(se2);
-       }
-
-       protected void createTable() {
-               SelectorElement se1 = new SelectorElement(null, "span", "ui-btn-inner",
-                               null);
-               SelectorElement se2 = new SelectorElement(null, "span", "ui-btn-text",
-                               se1);
-
-               TableColumn tc = new TableColumn(table, SWT.NONE);
-               tc.setText("button1");
-               tc.setWidth(100);
-
-               TableItem tr2 = new TableItem(table, SWT.NONE);
-               tr2.setText(se1.getClassName());
-               tr2.setData(se1);
-
-               TableItem tr3 = new TableItem(table, SWT.NONE);
-               tr3.setText(se2.getClassName());
-               tr3.setData(se2);
-       }
-
-       protected String updateTree() {
-               TreeItem[] trs = tree.getSelection();
-               if (null == trs || trs.length <= 0) {
-                       System.out.println("selection is bull");
-                       return null;
-               }
-               TreeItem selected = trs[0];
-
-               SelectorElement se = (SelectorElement) selected.getData();
-
-               StringBuffer strBuf = new StringBuffer();
-               strBuf.append("DOM|").append(se.getId()).append("|")
-                               .append(se.getDepth());
-
-               strBuf.append("|").append(combo.getText());
-               return strBuf.toString();
-       }
-
-       protected String updateTable() {
-               TableItem[] trs = table.getSelection();
-               if (null == trs || trs.length <= 0) {
-                       System.out.println("selection is bull");
-                       return null;
-               }
-               TableItem selected = trs[0];
-
-               SelectorElement se = (SelectorElement) selected.getData();
-
-               StringBuffer strBuf = new StringBuffer();
-               strBuf.append("CLASS|").append(se.getId()).append("|")
-                               .append(se.getClassName());
-
-               strBuf.append("|").append(combo.getText());
-               return strBuf.toString();
-       }
+    private Label label = null;
+    private Button domRadio = null;
+    private Button classRadio = null;
+    private Combo combo = null;
+    private Tree tree = null;
+    private Table table = null;
+    private Composite bodyComposite = null;
+    private DesignerGoingBridge goingBridge = null;
+
+    private Element rootNode = null;
+    private SelectorElement rootElement = null;
+    private HashMap<String, SelectorElement> elementMap = null;
+
+    private Button okButton = null;
+    private Button cancelButton = null;
+
+    private String id = null;
+
+    public CSSSelectorDialog(Shell parentShell, String id) {
+        super(parentShell);
+        this.id = id;
+    }
+
+    @Override
+    protected boolean run() {
+        shell.setLayout(new FormLayout());
+        shell.setSize(340, 365);
+
+        label = new Label(shell, SWT.TRANSPARENT);
+        FormData data = new FormData();
+        data.top = new FormAttachment(0, 11);
+        data.left = new FormAttachment(0, 12);
+        data.height = 15;
+        data.width = 150;
+        label.setLayoutData(data);
+        label.setText("ID : ");
+
+        domRadio = new Button(shell, SWT.RADIO);
+        data = new FormData();
+        data.top = new FormAttachment(label, 10);
+        data.left = new FormAttachment(0, 9);
+        data.height = 20;
+        data.width = 80;
+        domRadio.setLayoutData(data);
+        domRadio.setText("DOM");
+        domRadio.setSelection(true);
+        domRadio.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                StackLayout layout = (StackLayout) bodyComposite.getLayout();
+                layout.topControl = tree;
+                bodyComposite.layout();
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        classRadio = new Button(shell, SWT.RADIO);
+        data = new FormData();
+        data.top = new FormAttachment(label, 10);
+        data.left = new FormAttachment(domRadio, 9);
+        data.height = 20;
+        data.width = 80;
+        classRadio.setLayoutData(data);
+        classRadio.setText("Class");
+        classRadio.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                StackLayout layout = (StackLayout) bodyComposite.getLayout();
+                layout.topControl = table;
+                bodyComposite.layout();
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        combo = new Combo(shell, SWT.READ_ONLY);
+        data = new FormData();
+        data.top = new FormAttachment(label, 10);
+        data.left = new FormAttachment(classRadio, 20);
+        data.height = 20;
+        data.width = 110;
+        combo.setLayoutData(data);
+
+        combo.add("none");
+        combo.add(":hover");
+        combo.add(":focus");
+        combo.add(":active");
+        combo.add(":link");
+        combo.add(":visited");
+        combo.add(":first-child");
+
+        combo.select(0);
+
+        bodyComposite = new Composite(shell, SWT.SINGLE);
+        bodyComposite.setLayout(new StackLayout());
+        data = new FormData();
+        data.top = new FormAttachment(domRadio, 10);
+        data.left = new FormAttachment(0, 9);
+        data.height = 200;
+        data.width = 300;
+        bodyComposite.setLayoutData(data);
+
+        tree = new Tree(bodyComposite, SWT.SINGLE | SWT.BORDER);
+        tree.setHeaderVisible(true);
+        tree.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        tree.addMouseListener(new MouseListener() {
+
+            @Override
+            public void mouseUp(MouseEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void mouseDoubleClick(MouseEvent e) {
+                result = updateTree();
+                shell.dispose();
+            }
+        });
+
+        table = new Table(bodyComposite, SWT.SINGLE | SWT.BORDER);
+        table.setHeaderVisible(false);
+        table.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        table.addMouseListener(new MouseListener() {
+
+            @Override
+            public void mouseUp(MouseEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void mouseDown(MouseEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void mouseDoubleClick(MouseEvent e) {
+                result = updateTable();
+                shell.dispose();
+            }
+        });
+
+        ((StackLayout) (bodyComposite.getLayout())).topControl = tree;
+
+        cancelButton = new Button(shell, SWT.PUSH);
+        data = new FormData();
+        data.top = new FormAttachment(bodyComposite, 20);
+        data.right = new FormAttachment(100, -30);
+        data.height = 25;
+        data.width = 80;
+        cancelButton.setLayoutData(data);
+        cancelButton.setText("Cancel");
+        cancelButton.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                shell.dispose();
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+
+        okButton = new Button(shell, SWT.PUSH);
+        data = new FormData();
+        data.top = new FormAttachment(bodyComposite, 20);
+        data.right = new FormAttachment(cancelButton, -9);
+        data.height = 25;
+        data.width = 80;
+        okButton.setLayoutData(data);
+        okButton.setText("Ok");
+
+        okButton.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+
+                if (domRadio.getSelection()) {
+                    result = updateTree();
+                } else {
+                    result = updateTable();
+                }
+                shell.dispose();
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+        createElementTree();
+        createTree();
+        createTable();
+        return true;
+    }
+
+    public void setPosition(int x, int y) {
+        shell.setLocation(x, y);
+    }
+
+    private void createElementTree() {
+        // create element from JSON format
+        if (null == goingBridge) {
+            return;
+        }
+
+        String source = goingBridge.getElementDom(id);
+        if (null == source || source.isEmpty()) {
+            return;
+        }
+        StringBufferInputStream stream = new StringBufferInputStream(source);
+        Document document = HtmlReader.parseHtml(stream);
+        // Element elem = document.getElementById(id);
+
+        NodeList nodeList = document.getChildNodes();
+        NodeList frameNodes = nodeList.item(0).getChildNodes();
+
+        NodeList children = frameNodes.item(1).getChildNodes();
+
+        Node node = children.item(0);
+        if (node.getNodeType() != Node.ELEMENT_NODE) {
+            return;
+        }
+        rootNode = (Element) node;
+        rootElement = new SelectorElement();
+        elementMap = new HashMap<String, SelectorElement>();
+
+        rootElement.setId(rootNode.getAttribute("id"));
+        rootElement.setClassName(rootNode.getAttribute("class"));
+        rootElement.setTagName(rootNode.getTagName());
+        putElementMap(rootElement);
+
+        makeElement(rootNode, rootElement);
+    }
+
+    private void putElementMap(SelectorElement element) {
+        if (null != element.getClassName() && !element.getClassName().isEmpty()) {
+            String className = element.getClassName();
+            String[] splitName = className.split(" ");
+
+            for (int i = 0; i < splitName.length; i++) {
+                String name = splitName[i];
+                if (null != name && !name.isEmpty()) {
+                    if (null == elementMap.get(name)) {
+                        elementMap.put(name, element);
+                    }
+                }
+            }
+        }
+    }
+
+    protected void createTree() {
+        TreeColumn tc = new TreeColumn(tree, SWT.NONE);
+        tc.setText(id);
+        tc.setWidth(100);
+
+        TreeItem rootTi = new TreeItem(tree, SWT.NONE);
+        if (null == rootElement) {
+            return;
+        }
+
+        rootTi.setText(rootElement.getTagName());
+        rootTi.setData(rootElement);
+
+        makeTree(rootElement, rootTi);
+    }
+
+    private void makeTree(SelectorElement element, TreeItem parent) {
+
+        if (element.hasChild()) {
+            for (int i = 0; i < element.getChildren().size(); i++) {
+                SelectorElement child = element.getChildren().get(i);
+                TreeItem ti = new TreeItem(parent, SWT.NONE);
+                ti.setText(child.getTagName());
+                ti.setData(child);
+                makeTree(child, ti);
+                parent.setExpanded(true);
+            }
+        }
+    }
+
+    private void makeElement(Element node, SelectorElement treeElement) {
+        if (node.hasChildNodes()) {
+            for (int i = 0; i < node.getChildNodes().getLength(); i++) {
+                Node child = node.getChildNodes().item(i);
+
+                if (child.getNodeType() == Node.ELEMENT_NODE) {
+                    Element childNode = (Element) child;
+                    SelectorElement selectorElement = new SelectorElement();
+                    selectorElement.setId(childNode.getAttribute("id"));
+                    selectorElement.setClassName(childNode.getAttribute("class"));
+                    selectorElement.setTagName(childNode.getTagName());
+                    selectorElement.setParent(treeElement);
+                    treeElement.getChildren().add(selectorElement);
+                    putElementMap(selectorElement);
+
+                    makeElement(childNode, selectorElement);
+                }
+            }
+        }
+    }
+
+    protected void createTable() {
+
+        List<String> classKeys = new ArrayList<String>();
+        classKeys.addAll(elementMap.keySet());
+
+        TableColumn tc = new TableColumn(table, SWT.NONE);
+        tc.setText(id);
+        tc.setWidth(100);
+
+        for (int i = 0; i < classKeys.size(); i++) {
+            String key = classKeys.get(i);
+            SelectorElement selectorElement = elementMap.get(key);
+
+            TableItem tr2 = new TableItem(table, SWT.NONE);
+            tr2.setText(key);
+            tr2.setData(selectorElement);
+        }
+    }
+
+    protected String updateTree() {
+        TreeItem[] trs = tree.getSelection();
+        if (null == trs || trs.length <= 0) {
+            System.out.println("selection is bull");
+            return null;
+        }
+        TreeItem selected = trs[0];
+
+        SelectorElement se = (SelectorElement) selected.getData();
+
+        StringBuffer strBuf = new StringBuffer();
+        strBuf.append("DOM|").append(se.getId()).append("|").append(se.getDepth());
+
+        strBuf.append("|").append(combo.getText());
+        return strBuf.toString();
+    }
+
+    protected String updateTable() {
+        TableItem[] trs = table.getSelection();
+        if (null == trs || trs.length <= 0) {
+            System.out.println("selection is null");
+            return null;
+        }
+        TableItem selected = trs[0];
+
+        SelectorElement se = (SelectorElement) selected.getData();
+
+        StringBuffer strBuf = new StringBuffer();
+        strBuf.append("CLASS|").append(se.getId()).append("|").append(selected.getText());
+
+        strBuf.append("|").append(combo.getText());
+        return strBuf.toString();
+    }
+
+    public GoingBridge getGoingBridge() {
+        return goingBridge;
+    }
+
+    public void setGoingBridge(DesignerGoingBridge goingBridge) {
+        this.goingBridge = goingBridge;
+    }
 }
index 6e79365..f0f0ab1 100644 (file)
@@ -1,74 +1,89 @@
+
+
 package org.tizen.webuibuilder.ui.selector;
 
 import java.util.ArrayList;
 import java.util.List;
 
+
 public class SelectorElement {
-       private String id = null;
-       private String tagName = null;
-       private String className = null;
-       private List<SelectorElement> children = null;
-       private SelectorElement parent = null;
-
-       public SelectorElement() {
-               children = new ArrayList<SelectorElement>();
-       }
-
-       public SelectorElement(String id, String tag, String cls, SelectorElement parent) {
-               this();
-               this.parent = parent;
-               this.id = id;
-               this.tagName = tag;
-               this.className = cls;
-       }
-
-       public String getTagName() {
-               return tagName;
-       }
-
-       public void setTagName(String tagName) {
-               this.tagName = tagName;
-       }
-
-       public String getClassName() {
-               return className;
-       }
-
-       public void setClassName(String className) {
-               this.className = className;
-       }
-
-       public List<SelectorElement> getChildren() {
-               return children;
-       }
-
-       public String getId() {
-               return id;
-       }
-
-       public void setId(String id) {
-               this.id = id;
-       }
-
-       public SelectorElement getParent() {
-               return parent;
-       }
-
-       public void setParent(SelectorElement parent) {
-               this.parent = parent;
-       }
-
-       public String getDepth() {
-               StringBuffer buffer = new StringBuffer();
-               getParentString(buffer);
-
-               return buffer.toString();
-       }
-
-       private void getParentString(StringBuffer buffer) {
-               if (null != parent) {
-                       parent.getParentString(buffer);
-               }
-               buffer.append(">").append(this.tagName);
-       }
+    private String id = null;
+    private String tagName = null;
+    private String className = null;
+    private List<SelectorElement> children = null;
+    private SelectorElement parent = null;
+
+    public SelectorElement() {
+        children = new ArrayList<SelectorElement>();
+    }
+
+    public SelectorElement(String id, String tag, String cls, SelectorElement parent) {
+        this();
+        this.parent = parent;
+        this.id = id;
+        this.tagName = tag;
+        this.className = cls;
+    }
+
+    public String getTagName() {
+        return tagName;
+    }
+
+    public void setTagName(String tagName) {
+        this.tagName = tagName;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public List<SelectorElement> getChildren() {
+        return children;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public SelectorElement getParent() {
+        return parent;
+    }
+
+    public void setParent(SelectorElement parent) {
+        this.parent = parent;
+    }
+
+    public String getDepth() {
+        StringBuffer buffer = new StringBuffer();
+        getParentString(buffer);
+
+        return buffer.toString();
+    }
+
+    private void getParentString(StringBuffer buffer) {
+        boolean isTop = true;
+        if (null != parent) {
+            isTop = false;
+            parent.getParentString(buffer);
+        }
+        if (!isTop) {
+            buffer.append(">").append(this.tagName);
+        }
+    }
+
+    public boolean hasChild() {
+        if (null == children || children.isEmpty()) {
+            return false;
+        } else {
+            return true;
+        }
+    }
 }