Author: fmancinelli
Date: 2008-02-13 20:21:22 +0100 (Wed, 13 Feb 2008)
New Revision: 7702

Added:
   xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/.settings/
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/.settings/org.eclipse.jdt.core.prefs
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetSelection.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetWizard.java
Modified:
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/WorkingSet.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/dialogs/ManageWorkingSetsDialog.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiRemoteDAO.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/WorkingSetSelection.java
Log:
XECLIPSE-73

Added working set edition feature

Added: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/.settings/org.eclipse.jdt.core.prefs
                         (rev 0)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/.settings/org.eclipse.jdt.core.prefs
 2008-02-13 19:21:22 UTC (rev 7702)
@@ -0,0 +1,7 @@
+#Wed Feb 06 23:14:30 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/WorkingSet.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/WorkingSet.java
      2008-02-13 19:16:23 UTC (rev 7701)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/WorkingSet.java
      2008-02-13 19:21:22 UTC (rev 7702)
@@ -21,6 +21,7 @@
 package org.xwiki.eclipse;
 
 import java.io.Serializable;
+import java.util.Formatter;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -191,4 +192,21 @@
         this.name = name;
     }
 
+       @Override
+       public String toString()
+       {
+               StringBuffer sb = new StringBuffer();
+               Formatter f = new Formatter(sb);
+               f.format("%s: [", name);
+               for(String id : ids) {
+                       f.format("%s ", id);
+               }
+               f.format("]\n");
+               
+               return f.toString();
+               
+       }
+    
+    
+
 }

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/dialogs/ManageWorkingSetsDialog.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/dialogs/ManageWorkingSetsDialog.java
 2008-02-13 19:16:23 UTC (rev 7701)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/dialogs/ManageWorkingSetsDialog.java
 2008-02-13 19:21:22 UTC (rev 7702)
@@ -42,176 +42,229 @@
 import org.xwiki.eclipse.WorkingSet;
 import org.xwiki.eclipse.WorkingSetManager;
 import org.xwiki.eclipse.XWikiEclipseConstants;
+import org.xwiki.eclipse.wizards.EditWorkingSetWizard;
 import org.xwiki.eclipse.wizards.NewWorkingSetWizard;
 import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
 
 public class ManageWorkingSetsDialog extends Dialog
 {
-    public ManageWorkingSetsDialog(Shell parentShell)
-    {
-        super(parentShell);
-        setShellStyle(getShellStyle() | SWT.RESIZE);
-    }
+       public ManageWorkingSetsDialog(Shell parentShell)
+       {
+               super(parentShell);
+               setShellStyle(getShellStyle() | SWT.RESIZE);
+       }
 
-    @Override
-    protected void configureShell(Shell shell)
-    {
-        super.configureShell(shell);
+       @Override
+       protected void configureShell(Shell shell)
+       {
+               super.configureShell(shell);
 
-        shell.setText("Manage working sets");
-        shell.setSize(600, 300);
+               shell.setText("Manage working sets");
+               shell.setSize(600, 300);
 
-    }
+       }
 
-    @Override
-    protected Control createDialogArea(Composite parent)
-    {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(
-            composite);
-        GridLayoutFactory.fillDefaults().margins(10, 
10).numColumns(2).applyTo(composite);
+       @Override
+       protected Control createDialogArea(Composite parent)
+       {
+               Composite composite = new Composite(parent, SWT.NONE);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(composite);
+               GridLayoutFactory.fillDefaults().margins(10, 
10).numColumns(2).applyTo(
+                               composite);
 
-        final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER);
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(
-            tableViewer.getControl());
-        tableViewer.setContentProvider(new IStructuredContentProvider()
-        {
+               final TableViewer tableViewer = new TableViewer(composite, 
SWT.BORDER);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(tableViewer.getControl());
+               tableViewer.setContentProvider(new IStructuredContentProvider()
+               {
 
-            public void dispose()
-            {
-            }
+                       public void dispose()
+                       {
+                       }
 
-            public void inputChanged(Viewer viewer, Object oldInput, Object 
newInput)
-            {
-            }
+                       public void inputChanged(Viewer viewer, Object oldInput,
+                                       Object newInput)
+                       {
+                       }
 
-            public Object[] getElements(Object inputElement)
-            {
-                return 
WorkingSetManager.getDefault().getWorkingSets().toArray();
-            }
-        });
+                       public Object[] getElements(Object inputElement)
+                       {
+                               return 
WorkingSetManager.getDefault().getWorkingSets()
+                                               .toArray();
+                       }
+               });
 
-        tableViewer.setLabelProvider(new LabelProvider()
-        {
+               tableViewer.setLabelProvider(new LabelProvider()
+               {
 
-            @Override
-            public String getText(Object element)
-            {
-                if (element instanceof WorkingSet) {
-                    WorkingSet workingSet = (WorkingSet) element;
+                       @Override
+                       public String getText(Object element)
+                       {
+                               if (element instanceof WorkingSet)
+                               {
+                                       WorkingSet workingSet = (WorkingSet) 
element;
 
-                    return workingSet.getName();
-                }
+                                       return workingSet.getName();
+                               }
 
-                return super.getText(element);
-            }
+                               return super.getText(element);
+                       }
 
-            @Override
-            public Image getImage(Object element)
-            {
-                if (element instanceof WorkingSet) {
-                    return XWikiEclipsePlugin.getImageDescriptor(
-                        XWikiEclipseConstants.WORKING_SET_ICON).createImage();
-                }
+                       @Override
+                       public Image getImage(Object element)
+                       {
+                               if (element instanceof WorkingSet)
+                               {
+                                       return 
XWikiEclipsePlugin.getImageDescriptor(
+                                                       
XWikiEclipseConstants.WORKING_SET_ICON)
+                                                       .createImage();
+                               }
 
-                return super.getImage(element);
-            }
+                               return super.getImage(element);
+                       }
 
-        });
-        tableViewer.setInput(WorkingSetManager.getDefault().getWorkingSets());
+               });
+               
tableViewer.setInput(WorkingSetManager.getDefault().getWorkingSets());
 
-        Composite buttonBar = new Composite(composite, SWT.NONE);
-        GridLayoutFactory.fillDefaults().applyTo(buttonBar);
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(false, 
true).applyTo(
-            buttonBar);
+               Composite buttonBar = new Composite(composite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(buttonBar);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(false,
+                               true).applyTo(buttonBar);
 
-        Button button = new Button(buttonBar, SWT.PUSH);
-        button.setText("New...");
-        button.addSelectionListener(new SelectionListener()
-        {
+               Button button = new Button(buttonBar, SWT.PUSH);
+               button.setText("New...");
+               button.addSelectionListener(new SelectionListener()
+               {
 
-            public void widgetDefaultSelected(SelectionEvent e)
-            {
-            }
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                       }
 
-            public void widgetSelected(SelectionEvent event)
-            {
-                try {
-                    NewWorkingSetWizard wizard = new NewWorkingSetWizard();
+                       public void widgetSelected(SelectionEvent event)
+                       {
+                               try
+                               {
+                                       NewWorkingSetWizard wizard = new 
NewWorkingSetWizard();
 
-                    WizardDialog dialog = new WizardDialog(getShell(), wizard);
-                    dialog.create();
-                    dialog.open();
-                    tableViewer.refresh();
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
+                                       WizardDialog dialog = new 
WizardDialog(getShell(), wizard);
+                                       dialog.create();
+                                       dialog.open();
+                                       tableViewer.refresh();
+                               } catch (Exception e)
+                               {
+                                       e.printStackTrace();
+                               }
 
-            }
+                       }
 
-        });
+               });
 
-        button = new Button(buttonBar, SWT.PUSH);
-        button.setText("Remove");
-        button.addSelectionListener(new SelectionListener()
-        {
+               button = new Button(buttonBar, SWT.PUSH);
+               button.setText("Remove");
+               button.addSelectionListener(new SelectionListener()
+               {
 
-            public void widgetDefaultSelected(SelectionEvent e)
-            {
-                // TODO Auto-generated method stub
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
 
-            }
+                       }
 
-            public void widgetSelected(SelectionEvent e)
-            {
-                IStructuredSelection selection =
-                    (IStructuredSelection) tableViewer.getSelection();
-                if (!selection.isEmpty()) {
-                    Object selectedObject = selection.getFirstElement();
-                    if (selectedObject instanceof WorkingSet) {
-                        WorkingSet workingSet = (WorkingSet) selectedObject;
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               IStructuredSelection selection = 
(IStructuredSelection) tableViewer
+                                               .getSelection();
+                               if (!selection.isEmpty())
+                               {
+                                       Object selectedObject = 
selection.getFirstElement();
+                                       if (selectedObject instanceof 
WorkingSet)
+                                       {
+                                               WorkingSet workingSet = 
(WorkingSet) selectedObject;
 
-                        MessageBox messageBox =
-                            new MessageBox(getShell(), SWT.YES | SWT.NO | 
SWT.ICON_QUESTION);
-                        messageBox.setMessage(String.format(
-                            "Do you really want to remove the working set 
'%s'?", workingSet
-                                .getName()));
-                        int result = messageBox.open();
-                        if (result == SWT.YES) {
-                            WorkingSetManager.getDefault().remove(workingSet);
-                            tableViewer.refresh();
-                        }
-                    }
-                }
+                                               MessageBox messageBox = new 
MessageBox(getShell(),
+                                                               SWT.YES | 
SWT.NO | SWT.ICON_QUESTION);
+                                               messageBox
+                                                               
.setMessage(String
+                                                                               
.format(
+                                                                               
                "Do you really want to remove the working set '%s'?",
+                                                                               
                workingSet.getName()));
+                                               int result = messageBox.open();
+                                               if (result == SWT.YES)
+                                               {
+                                                       
WorkingSetManager.getDefault().remove(workingSet);
+                                                       tableViewer.refresh();
+                                               }
+                                       }
+                               }
 
-            }
+                       }
 
-        });
+               });
 
-        return composite;
-    }
+               button = new Button(buttonBar, SWT.PUSH);
+               button.setText("Edit...");
+               button.addSelectionListener(new SelectionListener()
+               {
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                       }
 
-    @Override
-    protected void createButtonsForButtonBar(Composite parent)
-    {
-        Button button =
-            createButton(parent, IDialogConstants.CLOSE_ID, 
IDialogConstants.CLOSE_LABEL, true);
-        button.addSelectionListener(new SelectionListener()
-        {
+                       public void widgetSelected(SelectionEvent event)
+                       {
+                               IStructuredSelection selection = 
(IStructuredSelection) tableViewer
+                                               .getSelection();
+                               if (!selection.isEmpty())
+                               {
+                                       Object selectedObject = 
selection.getFirstElement();
+                                       if (selectedObject instanceof 
WorkingSet)
+                                       {
+                                               WorkingSet workingSet = 
(WorkingSet) selectedObject;
 
-            public void widgetDefaultSelected(SelectionEvent e)
-            {
-                // TODO Auto-generated method stub
+                                               try
+                                               {
+                                                       EditWorkingSetWizard 
wizard = new EditWorkingSetWizard(
+                                                                       
workingSet);
 
-            }
+                                                       WizardDialog dialog = 
new WizardDialog(getShell(),
+                                                                       wizard);
+                                                       dialog.create();
+                                                       dialog.open();
+                                                       tableViewer.refresh();
+                                               } catch (Exception e)
+                                               {
+                                                       e.printStackTrace();
+                                               }
 
-            public void widgetSelected(SelectionEvent e)
-            {
-                close();
-            }
+                                       }
+                               }
+                       }
+               });
 
-        });
+               return composite;
+       }
 
-    }
+       @Override
+       protected void createButtonsForButtonBar(Composite parent)
+       {
+               Button button = createButton(parent, IDialogConstants.CLOSE_ID,
+                               IDialogConstants.CLOSE_LABEL, true);
+               button.addSelectionListener(new SelectionListener()
+               {
 
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
+
+                       }
+
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               close();
+                       }
+
+               });
+
+       }
+
 }

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiRemoteDAO.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiRemoteDAO.java
       2008-02-13 19:16:23 UTC (rev 7701)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiRemoteDAO.java
       2008-02-13 19:21:22 UTC (rev 7702)
@@ -72,7 +72,7 @@
                     swizzleXWiki.setConvertor(new IdentityObjectConvertor());
                 }
             }
-
+                        
         } catch (Exception e) {
             throw new XWikiDAOException(e);
         }
@@ -84,7 +84,7 @@
      * 
      * @throws XWikiDAOException
      */
-    public void close() throws XWikiDAOException
+    public synchronized void close() throws XWikiDAOException
     {
         try {
             swizzleXWiki.logout();
@@ -98,10 +98,11 @@
      * @throws XWikiDAOException
      */
     @SuppressWarnings("unchecked")
-    public List<SpaceSummary> getSpaces() throws XWikiDAOException
+    public synchronized List<SpaceSummary> getSpaces() throws XWikiDAOException
     {
-        try {
-            return swizzleXWiki.getSpaces();
+        try {          
+               List<SpaceSummary> spaces = swizzleXWiki.getSpaces();           
+            return spaces;
         } catch (Exception e) {
             throw new XWikiDAOException(e);
         }
@@ -112,7 +113,7 @@
      * @return The information about the remote space.
      * @throws XWikiDAOException
      */
-    public Space getSpace(String key) throws XWikiDAOException
+    public synchronized Space getSpace(String key) throws XWikiDAOException
     {
         try {
             return swizzleXWiki.getSpace(key);
@@ -127,7 +128,7 @@
      * @throws XWikiDAOException
      */
     @SuppressWarnings("unchecked")
-    public List<PageSummary> getPages(String spaceKey) throws XWikiDAOException
+    public synchronized List<PageSummary> getPages(String spaceKey) throws 
XWikiDAOException
     {
         try {
             return swizzleXWiki.getPages(spaceKey);
@@ -141,7 +142,7 @@
      * @return All the page information for the page identified by the given 
id.
      * @throws XWikiDAOException
      */
-    public Page getPage(String id) throws XWikiDAOException
+    public synchronized Page getPage(String id) throws XWikiDAOException
     {
         try {
             return swizzleXWiki.getPage(id);
@@ -156,7 +157,7 @@
      * @param page The page information to be stored.
      * @throws XWikiDAOException
      */
-    public void storePage(Page page) throws XWikiDAOException
+    public synchronized void storePage(Page page) throws XWikiDAOException
     {
         try {
             swizzleXWiki.storePage(page);
@@ -165,7 +166,7 @@
         }
     }
 
-    public Space createSpace(String key, String name, String description)
+    public synchronized Space createSpace(String key, String name, String 
description)
         throws XWikiDAOException
     {
         Space space = new Space();
@@ -183,7 +184,7 @@
         return space;
     }
 
-    public Page createPage(String spaceKey, String title, String content)
+    public synchronized Page createPage(String spaceKey, String title, String 
content)
         throws XWikiDAOException
     {
         Page page = new Page();
@@ -201,7 +202,7 @@
         return page;
     }
 
-    public void removePage(String id) throws XWikiDAOException
+    public synchronized void removePage(String id) throws XWikiDAOException
     {
         try {
             swizzleXWiki.removePage(id);
@@ -212,7 +213,7 @@
 
     }
 
-    public void removeSpace(String key) throws XWikiDAOException
+    public synchronized void removeSpace(String key) throws XWikiDAOException
     {
         try {
             swizzleXWiki.removeSpace(key);

Added: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetSelection.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetSelection.java
                         (rev 0)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetSelection.java
 2008-02-13 19:21:22 UTC (rev 7702)
@@ -0,0 +1,415 @@
+/*
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ */
+package org.xwiki.eclipse.wizards;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.xwiki.eclipse.WorkingSet;
+import org.xwiki.eclipse.WorkingSetFilter;
+import org.xwiki.eclipse.XWikiConnectionManager;
+import org.xwiki.eclipse.XWikiEclipseConstants;
+import org.xwiki.eclipse.model.IXWikiConnection;
+import org.xwiki.eclipse.model.IXWikiPage;
+import org.xwiki.eclipse.model.IXWikiSpace;
+import org.xwiki.eclipse.views.XWikiExplorerContentProvider;
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
+
+
+public class EditWorkingSetSelection extends WizardPage
+{
+       private WorkingSet workingSet;
+       private TreeViewer treeViewer;
+       private TreeViewer previewTreeViewer;
+       private WorkingSetFilter workingSetFilter;
+       
+       class TV extends TreeViewer {
+               private WorkingSet workingSet;
+
+               public TV(Composite parent, int style, WorkingSet workingset)
+               {
+                       super(parent, style);
+                       this.workingSet = workingset;
+               }
+                               
+               @Override
+               public void add(Object parentElementOrTreePath, Object[] 
childElements)
+               {
+                       TreeItem item;
+                       
+                       super.add(parentElementOrTreePath, childElements);
+                       
+                       for(Object c : childElements) {
+                               item = (TreeItem) findItem(c);
+                               setChecked(item, c);
+                       }                                                       
        
+               }
+               
+               @Override
+               protected Item newItem(Widget parent, int flags, int ix)
+               {
+                       if(parent instanceof TreeItem) {
+                               setChecked((TreeItem)parent, parent.getData());
+                       }
+                       return super.newItem(parent, flags, ix);
+               }
+               
+               private void setChecked(TreeItem item, Object o) {
+                       if(o instanceof IXWikiSpace) {
+                               IXWikiSpace xwikiSpace = (IXWikiSpace) o;
+                               
item.setChecked(workingSet.contains(xwikiSpace));                               
                                
+                       }
+                       else if(o instanceof IXWikiPage) {
+                               IXWikiPage xwikiPage = (IXWikiPage) o;
+                               item.setChecked(workingSet.contains(xwikiPage));
+                       }
+                       else if(o instanceof IXWikiConnection) {
+                               IXWikiConnection xwikiConnection = 
(IXWikiConnection) o;
+                               
item.setChecked(workingSet.contains(xwikiConnection));
+                       }
+               }
+               
+               
+       }
+
+
+       protected EditWorkingSetSelection(String pageName, WorkingSet 
workingSet)
+       {
+               super(pageName);
+               setTitle(String.format("Edit working set %s", 
workingSet.getName()));
+               setImageDescriptor(XWikiEclipsePlugin
+                               
.getImageDescriptor(XWikiEclipseConstants.WORKING_SET_BANNER));
+
+               this.workingSet = workingSet;
+       }
+       
+       private void checkPath(TreeItem item, boolean checked, boolean grayed)
+    {
+        if (item == null) {
+            return;
+        }
+
+        if (grayed) {
+            checked = true;
+        } else {
+            int index = 0;
+            TreeItem[] items = item.getItems();
+            while (index < items.length) {
+                TreeItem child = items[index];
+                if (child.getGrayed() || checked != child.getChecked()) {
+                    checked = grayed = true;
+                    break;
+                }
+                index++;
+            }
+        }
+
+        item.setChecked(checked);
+        item.setGrayed(grayed);
+        updateWorkingSet(workingSet, item.getData(), checked);
+        checkPath(item.getParentItem(), checked, grayed);
+    }
+
+    private void checkItems(TreeItem item, boolean checked)
+    {
+        item.setGrayed(false);
+        item.setChecked(checked);
+        TreeItem[] items = item.getItems();
+        for (int i = 0; i < items.length; i++) {
+            checkItems(items[i], checked);
+            updateWorkingSet(workingSet, items[i].getData(),
+                checked);
+        }
+    }
+
+       public void createControl(Composite parent) {           
+        Composite composite = new Composite(parent, SWT.NONE);
+        GridLayoutFactory.fillDefaults().applyTo(composite);
+
+        Group group = new Group(composite, SWT.NONE);
+        GridLayoutFactory.fillDefaults().numColumns(2).margins(5, 
5).applyTo(group);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
false).applyTo(group);
+
+        Label label = new Label(group, SWT.NONE);
+        label.setText("Working set name:");
+
+        final Text workingSetNameText = new Text(group, SWT.BORDER);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
false).applyTo(
+            workingSetNameText);
+        workingSetNameText.addModifyListener(new ModifyListener()
+        {
+            public void modifyText(ModifyEvent e)
+            {
+                workingSet.setName(workingSetNameText.getText());
+                getContainer().updateButtons();
+            }
+        });
+
+        SashForm sashForm = new SashForm(composite, SWT.HORIZONTAL);
+        GridLayoutFactory.fillDefaults().numColumns(2).applyTo(sashForm);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(
+            sashForm);
+
+        group = new Group(sashForm, SWT.NONE);
+        GridLayoutFactory.fillDefaults().margins(5, 5).applyTo(group);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(group);
+        group.setText("Working set content selection");
+
+        final TV treeViewer = new TV(group, SWT.CHECK, workingSet);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(
+            treeViewer.getControl());
+        treeViewer.setComparator(new ViewerComparator());
+        treeViewer.setContentProvider(new 
XWikiExplorerContentProvider(treeViewer));
+        treeViewer.setLabelProvider(new WorkbenchLabelProvider());        
+        treeViewer.setInput(XWikiConnectionManager.getDefault());
+        treeViewer.getTree().addListener(SWT.Selection, new Listener()
+        {
+            public void handleEvent(Event event)
+            {
+                if (event.detail == SWT.CHECK) {
+                    TreeItem item = (TreeItem) event.item;
+                    boolean checked = item.getChecked();
+                    checkItems(item, checked);
+                    checkPath(item.getParentItem(), checked, false);
+
+                    updateWorkingSet(workingSet, item.getData(),
+                        checked);
+                    
+                    workingSetFilter =
+                        new WorkingSetFilter(workingSet);
+                    previewTreeViewer.setFilters(new ViewerFilter[] 
{workingSetFilter});
+                }
+            }
+        });
+        
+                
+        
+        group = new Group(sashForm, SWT.NONE);
+        GridLayoutFactory.fillDefaults().margins(5, 5).applyTo(group);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(group);
+        group.setText("Selected working set preview");
+
+        previewTreeViewer = new TreeViewer(group, SWT.NONE);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(
+            previewTreeViewer.getControl());
+        previewTreeViewer.setComparator(new ViewerComparator());
+        previewTreeViewer.setContentProvider(new 
XWikiExplorerContentProvider(previewTreeViewer));
+        previewTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
+        previewTreeViewer.setInput(XWikiConnectionManager.getDefault());
+
+        workingSetFilter = new WorkingSetFilter(workingSet);
+        previewTreeViewer.addFilter(workingSetFilter);
+
+        sashForm.setWeights(new int[] {50, 50});
+
+        label = new Label(composite, SWT.BORDER | SWT.WRAP);
+        label
+            .setText("To select all pages in a space, first expand the space 
node and then click on the checkbox next to it.");
+        
label.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY));
+
+        setControl(composite);
+
+       }
+       
+       public void createControl2(Composite parent)
+       {
+               Composite composite = new Composite(parent, SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(composite);
+
+               Composite labelComposite = new Composite(composite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().numColumns(2).margins(5, 
5).applyTo(
+                               labelComposite);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               false).applyTo(labelComposite);
+
+               Label label = new Label(labelComposite, SWT.NONE);
+               label.setText("Working set name:");
+
+               final Text workingSetNameText = new Text(labelComposite, 
SWT.BORDER);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               false).applyTo(workingSetNameText);
+               workingSetNameText.addModifyListener(new ModifyListener()
+               {
+                       public void modifyText(ModifyEvent e)
+                       {
+                               
workingSet.setName(workingSetNameText.getText());
+                               getContainer().updateButtons();
+                       }
+               });
+
+               /** 
****************************************************************** */
+
+               Composite mainComposite = new Composite(composite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().numColumns(3).margins(5, 
5).applyTo(
+                               mainComposite);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(mainComposite);
+
+               Group group = new Group(mainComposite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(group);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(group);
+               group.setText("Working set content selection");
+
+               treeViewer = new TreeViewer(group, SWT.MULTI);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(treeViewer.getControl());
+               treeViewer.setComparator(new ViewerComparator());
+               treeViewer.setContentProvider(new XWikiExplorerContentProvider(
+                               treeViewer));
+               treeViewer.setLabelProvider(new WorkbenchLabelProvider());
+               treeViewer.setInput(XWikiConnectionManager.getDefault());
+               
+
+               Composite buttonComposite = new Composite(mainComposite, 
SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(buttonComposite);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(false,
+                               true).applyTo(buttonComposite);
+
+               Button button = new Button(buttonComposite, SWT.PUSH);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               false).applyTo(button);
+               button.setText("Add ->");
+               button.addSelectionListener(new SelectionListener()
+               {
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
+                       }
+
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               IStructuredSelection selection = 
(IStructuredSelection) treeViewer
+                                               .getSelection();
+                               if (!selection.isEmpty())
+                               {
+                                       for (Object element : 
selection.toArray())
+                                       {
+                                               if (element instanceof 
IXWikiPage)
+                                               {
+                                                       IXWikiPage page = 
(IXWikiPage) element;                                                 
+                                                       workingSet.add(page);
+                                               }
+                                       }
+                               }
+                       }
+               });
+
+               button = new Button(buttonComposite, SWT.PUSH);
+               button.addSelectionListener(new SelectionListener()
+               {
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
+                       }
+
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               IStructuredSelection selection = 
(IStructuredSelection) treeViewer
+                                               .getSelection();
+                               if (!selection.isEmpty())
+                               {
+                                       for (Object element : 
selection.toArray())
+                                       {
+                                               System.out.format("Removing 
%s\n", element);
+                                       }
+                               }
+                       }
+               });
+
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               false).applyTo(button);
+               button.setText("<- Remove");
+
+               group = new Group(mainComposite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(group);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(group);
+               group.setText("Working set preview");
+
+               previewTreeViewer = new TreeViewer(group, SWT.MULTI);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(previewTreeViewer.getControl());
+               previewTreeViewer.setComparator(new ViewerComparator());
+               previewTreeViewer.setContentProvider(new 
XWikiExplorerContentProvider(
+                               previewTreeViewer));
+               previewTreeViewer.setLabelProvider(new 
WorkbenchLabelProvider());
+               previewTreeViewer.setInput(XWikiConnectionManager.getDefault());
+
+               
+               
+               setControl(composite);
+       }
+
+       private void updateWorkingSet(WorkingSet workingSet, Object object, 
boolean add)
+    {
+        if (object instanceof IXWikiConnection) {
+            IXWikiConnection connection = (IXWikiConnection) object;
+            if (add) {
+                workingSet.add(connection);
+            } else {
+                workingSet.remove(connection);
+            }
+        }
+
+        if (object instanceof IXWikiSpace) {
+            IXWikiSpace space = (IXWikiSpace) object;
+            if (add) {
+                workingSet.add(space);
+            } else {
+                workingSet.remove(space);
+            }
+        }
+
+        if (object instanceof IXWikiPage) {
+            IXWikiPage page = (IXWikiPage) object;
+            if (add) {
+                workingSet.add(page);
+            } else {
+                workingSet.remove(page);
+            }
+        }        
+    }
+
+
+}

Added: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetWizard.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetWizard.java
                            (rev 0)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/EditWorkingSetWizard.java
    2008-02-13 19:21:22 UTC (rev 7702)
@@ -0,0 +1,60 @@
+/*
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ */
+package org.xwiki.eclipse.wizards;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.xwiki.eclipse.WorkingSet;
+
+public class EditWorkingSetWizard extends Wizard implements INewWizard
+{      
+       private WorkingSet workingSet;
+
+       public EditWorkingSetWizard(WorkingSet workingSet)
+       {
+               super();                
+               this.workingSet = workingSet;
+       }
+
+       @Override
+       public boolean performFinish()
+       {
+               return true;
+       }
+
+       @Override
+       public void addPages()
+       {
+               addPage(new EditWorkingSetSelection("Working set selection", 
workingSet));
+       }
+
+       @Override
+       public boolean canFinish()
+       {
+               return true;
+       }
+
+       public void init(IWorkbench workbench, IStructuredSelection selection)
+       {
+       }       
+}

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/WorkingSetSelection.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/WorkingSetSelection.java
     2008-02-13 19:16:23 UTC (rev 7701)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/wizards/WorkingSetSelection.java
     2008-02-13 19:21:22 UTC (rev 7702)
@@ -24,6 +24,7 @@
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.SashForm;
@@ -157,14 +158,10 @@
 
                     updateWorkingSet(newWorkingSetWizardState.getWorkingSet(), 
item.getData(),
                         checked);
-
-                    if (workingSetFilter != null) {
-                        previewTreeViewer.removeFilter(workingSetFilter);
-                    }
-
+                    
                     workingSetFilter =
                         new 
WorkingSetFilter(newWorkingSetWizardState.getWorkingSet());
-                    previewTreeViewer.addFilter(workingSetFilter);
+                    previewTreeViewer.setFilters(new ViewerFilter[] 
{workingSetFilter});
                 }
             }
         });

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to