Author: fmancinelli
Date: 2007-11-07 16:59:47 +0100 (Wed, 07 Nov 2007)
New Revision: 5697
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set-banner.png
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set.png
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSet.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetFilter.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetManager.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/dialogs/ManageWorkingSetsDialog.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizard.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizardState.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/WorkingSetSelection.java
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiEclipseConstants.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/DiskCacheDAO.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizardState.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewPageWizardState.java
Log:
* Added "working-set" functionality to restrict the focus on a subset of xwiki
resources.
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set-banner.png
===================================================================
(Binary files differ)
Property changes on:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set-banner.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set.png
===================================================================
(Binary files differ)
Property changes on:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/icons/working-set.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
===================================================================
--- xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
2007-11-07 14:56:18 UTC (rev 5696)
+++ xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
2007-11-07 15:59:47 UTC (rev 5697)
@@ -184,6 +184,11 @@
id="org.xwiki.xeclipse.wizard.category.XWiki"
name="XWiki">
</category>
+ <wizard
+ class="org.xwiki.xeclipse.wizards.NewWorkingSetWizard"
+ id="WORKINGSET"
+ name="WorkingSet">
+ </wizard>
</extension>
</plugin>
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -39,6 +39,9 @@
* The plugin ID.
*/
public static final String PLUGIN_ID = "org.xwiki.eclipse";
+
+ public static final String CONNECTIONS_FILE_NAME = "connections.data";
+ public static final String WORKINGSETS_FILE_NAME = "workingsets.data";
/**
* The shared instance.
@@ -61,10 +64,15 @@
public void start(BundleContext context) throws Exception
{
super.start(context);
- File connections = new File(getStateLocation().toFile(),
"connections.data");
- if(connections.exists()) {
-
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().restoreConnections(connections);
+ File connectionsFile = new File(getStateLocation().toFile(),
CONNECTIONS_FILE_NAME);
+ if(connectionsFile.exists()) {
+
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().restoreConnections(connectionsFile);
}
+
+ File workingSetsFile = new File(getStateLocation().toFile(),
WORKINGSETS_FILE_NAME);
+ if(workingSetsFile.exists()) {
+
org.xwiki.xeclipse.WorkingSetManager.getDefault().restoreWorkingSets(workingSetsFile);
+ }
}
/**
@@ -82,10 +90,13 @@
}
}
- File connections = new File(getStateLocation().toFile(),
"connections.data");
+ File connections = new File(getStateLocation().toFile(),
CONNECTIONS_FILE_NAME);
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().saveConnections(connections);
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().dispose();
+ File workingSetsFile = new File(getStateLocation().toFile(),
WORKINGSETS_FILE_NAME);
+
org.xwiki.xeclipse.WorkingSetManager.getDefault().saveWorkingSets(workingSetsFile);
+
plugin = null;
super.stop(context);
}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSet.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSet.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSet.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,82 @@
+package org.xwiki.xeclipse;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.xwiki.xeclipse.model.IXWikiConnection;
+import org.xwiki.xeclipse.model.IXWikiPage;
+import org.xwiki.xeclipse.model.IXWikiSpace;
+
+public class WorkingSet implements Serializable
+{
+ private static final long serialVersionUID = 2374252363910602198L;
+ private String name;
+ private Set<String> ids;
+
+ public WorkingSet(String name)
+ {
+ this.name = name;
+ ids = new HashSet<String>();
+ }
+
+ public void add(IXWikiConnection xwikiConnection) {
+ ids.add(getId(xwikiConnection));
+ }
+
+ public void add(IXWikiSpace xwikiSpace) {
+ ids.add(getId(xwikiSpace));
+ }
+
+ public void add(IXWikiPage xwikiPage) {
+ ids.add(getId(xwikiPage));
+ }
+
+ public void remove(IXWikiConnection xwikiConnection) {
+ ids.remove(getId(xwikiConnection));
+ }
+
+ public void remove(IXWikiSpace xwikiSpace) {
+ ids.remove(getId(xwikiSpace));
+ }
+
+ public void remove(IXWikiPage xwikiPage) {
+ ids.remove(getId(xwikiPage));
+ }
+
+ public boolean contains(IXWikiConnection xwikiConnection) {
+ return ids.contains(getId(xwikiConnection));
+ }
+
+ public boolean contains(IXWikiSpace xwikiSpace) {
+ return ids.contains(getId(xwikiSpace));
+ }
+
+ public boolean contains(IXWikiPage xwikiPage) {
+ return ids.contains(getId(xwikiPage));
+ }
+
+
+ private String getId(IXWikiConnection xwikiConnection) {
+ return xwikiConnection.getId();
+ }
+
+ private String getId(IXWikiSpace xwikiSpace) {
+ return String.format("%s#%s", xwikiSpace.getConnection().getId(),
xwikiSpace.getKey());
+ }
+
+ private String getId(IXWikiPage xwikiPage) {
+ return String.format("%s#%s", xwikiPage.getConnection().getId(),
xwikiPage.getId());
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetFilter.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetFilter.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetFilter.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,37 @@
+package org.xwiki.xeclipse;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.xwiki.xeclipse.model.IXWikiConnection;
+import org.xwiki.xeclipse.model.IXWikiPage;
+import org.xwiki.xeclipse.model.IXWikiSpace;
+
+public class WorkingSetFilter extends ViewerFilter {
+ private WorkingSet workingSet;
+
+ public WorkingSetFilter(WorkingSet workingSet) {
+ this.workingSet = workingSet;
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element)
+ {
+ if(element instanceof IXWikiConnection) {
+ IXWikiConnection connection = (IXWikiConnection) element;
+ return workingSet.contains(connection);
+ }
+
+ if(element instanceof IXWikiSpace) {
+ IXWikiSpace space = (IXWikiSpace) element;
+ return workingSet.contains(space);
+ }
+
+ if(element instanceof IXWikiPage) {
+ IXWikiPage page = (IXWikiPage) element;
+ return workingSet.contains(page);
+ }
+
+ return false;
+ }
+
+}
\ No newline at end of file
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetManager.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetManager.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/WorkingSetManager.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,68 @@
+package org.xwiki.xeclipse;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
+
+public class WorkingSetManager
+{
+ private Set<WorkingSet> workingSets;
+
+ private static WorkingSetManager sharedInstance;
+
+ private WorkingSetManager()
+ {
+ workingSets = new HashSet<WorkingSet>();
+ }
+
+ private WorkingSetManager(Set<WorkingSet> workingSets)
+ {
+ this.workingSets = workingSets;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static WorkingSetManager getDefault()
+ {
+ if (sharedInstance == null) {
+ sharedInstance = new WorkingSetManager();
+ }
+
+ return sharedInstance;
+ }
+
+ public void add(WorkingSet workingSet)
+ {
+ workingSets.add(workingSet);
+ }
+
+ public void remove(WorkingSet workingSet)
+ {
+ workingSets.remove(workingSet);
+ }
+
+ public Set<WorkingSet> getWorkingSets()
+ {
+ return workingSets;
+ }
+
+ public void restoreWorkingSets(File inputFile) throws Exception
+ {
+ ObjectInputStream ois = new ObjectInputStream(new
FileInputStream(inputFile));
+ workingSets = (Set<WorkingSet>) ois.readObject();
+ ois.close();
+ }
+
+ public void saveWorkingSets(File outputFile) throws Exception
+ {
+ ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(outputFile));
+ oos.writeObject(workingSets);
+ oos.close();
+ }
+}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiEclipseConstants.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiEclipseConstants.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiEclipseConstants.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -14,10 +14,12 @@
public static final String CONNECTION_SETTINGS_BANNER =
"icons/connection-settings-banner.png";
public static final String SPACE_SETTINGS_BANNER =
"icons/space-settings-banner.png";
+ public static final String WORKING_SET_BANNER =
"icons/working-set-banner.png";
public static final String XWIKI_ICON = "icons/xwiki.png";
public static final String XWIKI_SPACE_ICON = "icons/xwiki-space.png";
public static final String XWIKI_PAGE_ICON = "icons/xwiki-page.png";
public static final String XWIKI_PAGE_CACHED_ICON =
"icons/xwiki-page-cached.png";
public static final String XWIKI_PAGE_CONFLICT_ICON =
"icons/xwiki-page-conflict.png";
+ public static final String WORKING_SET_ICON = "icons/working-set.png";
public static final String SHOW_EDITOR_PREVIEW_ICON =
"icons/show-editor-preview.gif";
}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/dialogs/ManageWorkingSetsDialog.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/dialogs/ManageWorkingSetsDialog.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/dialogs/ManageWorkingSetsDialog.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,198 @@
+package org.xwiki.xeclipse.dialogs;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
+import org.xwiki.xeclipse.WorkingSet;
+import org.xwiki.xeclipse.WorkingSetManager;
+import org.xwiki.xeclipse.XWikiEclipseConstants;
+import org.xwiki.xeclipse.wizards.NewWorkingSetWizard;
+
+public class ManageWorkingSetsDialog extends Dialog
+{
+ public ManageWorkingSetsDialog(Shell parentShell)
+ {
+ super(parentShell);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ }
+
+ @Override
+ protected void configureShell(Shell shell)
+ {
+ super.configureShell(shell);
+
+ 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);
+
+ 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 inputChanged(Viewer viewer, Object oldInput, Object
newInput)
+ {
+ }
+
+ public Object[] getElements(Object inputElement)
+ {
+ return
WorkingSetManager.getDefault().getWorkingSets().toArray();
+ }
+ });
+
+ tableViewer.setLabelProvider(new LabelProvider()
+ {
+
+ @Override
+ public String getText(Object element)
+ {
+ if (element instanceof WorkingSet) {
+ WorkingSet workingSet = (WorkingSet) element;
+
+ return workingSet.getName();
+ }
+
+ return super.getText(element);
+ }
+
+ @Override
+ public Image getImage(Object element)
+ {
+ if (element instanceof WorkingSet) {
+ return XWikiEclipsePlugin.getImageDescriptor(
+ XWikiEclipseConstants.WORKING_SET_ICON).createImage();
+ }
+
+ return super.getImage(element);
+ }
+
+ });
+ 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);
+
+ Button button = new Button(buttonBar, SWT.PUSH);
+ button.setText("New...");
+ button.addSelectionListener(new SelectionListener()
+ {
+
+ public void widgetDefaultSelected(SelectionEvent e)
+ {
+ }
+
+ 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();
+ }
+
+ }
+
+ });
+
+ 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 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();
+ }
+ }
+ }
+
+ }
+
+ });
+
+ 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/xeclipse/model/impl/DiskCacheDAO.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/DiskCacheDAO.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/DiskCacheDAO.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -244,7 +244,7 @@
Set<String> pageIds =
indexAggregate.getSpaceToPagesIndex().get(spaceKey);
if (pageIds != null) {
for (String pageId : pageIds) {
- String dataFileName =
indexAggregate.pageToDataFileNameIndex.get(pageId);
+ String dataFileName =
indexAggregate.pageToDataFileNameIndex.get(pageId);
ObjectInputStream ois =
new ObjectInputStream(new FileInputStream(new
File(cacheDir, dataFileName)));
Map map = (Map) ois.readObject();
@@ -309,7 +309,7 @@
if (pagesInSpace == null) {
pagesInSpace = new HashSet<String>();
indexAggregate.getSpaceToPagesIndex().put(page.getSpace(),
pagesInSpace);
- }
+ }
pagesInSpace.add(page.getId());
} catch (Exception e) {
throw new XWikiDAOException(e);
@@ -418,7 +418,7 @@
indexAggregate.getDirtyPagesIndex().remove(id);
indexAggregate.getConflictPagesIndex().remove(id);
Set<String> pages = indexAggregate.getSpaceToPagesIndex().get(space);
- if(pages != null) {
+ if (pages != null) {
pages.remove(id);
}
indexAggregate.getPageToSpaceIndex().remove(id);
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -25,6 +25,9 @@
import org.eclipse.core.expressions.ExpressionInfo;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.DoubleClickEvent;
@@ -38,6 +41,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IActionBars;
import org.eclipse.ui.ISources;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchPage;
@@ -48,11 +52,16 @@
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.part.ViewPart;
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
import org.xwiki.xeclipse.IXWikiEclipseEventListener;
+import org.xwiki.xeclipse.WorkingSet;
+import org.xwiki.xeclipse.WorkingSetFilter;
+import org.xwiki.xeclipse.WorkingSetManager;
import org.xwiki.xeclipse.XWikiConnectionManager;
import org.xwiki.xeclipse.XWikiEclipseConstants;
import org.xwiki.xeclipse.XWikiEclipseEvent;
import org.xwiki.xeclipse.XWikiEclipseNotificationCenter;
+import org.xwiki.xeclipse.dialogs.ManageWorkingSetsDialog;
import org.xwiki.xeclipse.editors.XWikiPageEditor;
import org.xwiki.xeclipse.editors.XWikiPageEditorInput;
import org.xwiki.xeclipse.handlers.ConnectHandler;
@@ -76,6 +85,41 @@
private IHandlerActivation deleteCommandActivation;
+ private WorkingSet currentWorkingSet;
+
+ private class SelectWorkingSetAction extends Action
+ {
+ private WorkingSet workingSet;
+
+ private TreeViewer treeViewer;
+
+ public SelectWorkingSetAction(WorkingSet workingSet, TreeViewer
treeViewer)
+ {
+ super(null, Action.AS_CHECK_BOX);
+ setText(workingSet != null ? workingSet.getName() : "No working
set");
+ setChecked(workingSet == currentWorkingSet);
+ this.workingSet = workingSet;
+ this.treeViewer = treeViewer;
+
+ if (workingSet != null) {
+ setImageDescriptor(XWikiEclipsePlugin
+
.getImageDescriptor(XWikiEclipseConstants.WORKING_SET_ICON));
+ }
+
+ }
+
+ @Override
+ public void run()
+ {
+ currentWorkingSet = workingSet;
+ treeViewer.resetFilters();
+ if (workingSet != null) {
+ treeViewer.addFilter(new WorkingSetFilter(workingSet));
+ }
+ }
+
+ }
+
@Override
public void createPartControl(Composite parent)
{
@@ -115,9 +159,61 @@
}
});
+ contributeToActionBars();
hookContextMenu();
}
+ private void contributeToActionBars()
+ {
+ IActionBars actionBars = getViewSite().getActionBars();
+ IMenuManager viewMenuManager = actionBars.getMenuManager();
+ MenuManager workingSetMenuManager = new MenuManager("Working sets",
"workingSet");
+ workingSetMenuManager.add(new Action()
+ {
+ });
+ workingSetMenuManager.setRemoveAllWhenShown(true);
+ workingSetMenuManager.addMenuListener(new IMenuListener()
+ {
+ public void menuAboutToShow(IMenuManager manager)
+ {
+ manager.add(new SelectWorkingSetAction(null, treeViewer));
+
+ for (WorkingSet workingSet :
WorkingSetManager.getDefault().getWorkingSets()) {
+
+ manager.add(new SelectWorkingSetAction(workingSet,
treeViewer));
+ }
+
+ manager.add(new Separator());
+
+ manager.add(new Action("Manage working sets...")
+ {
+ @Override
+ public void run()
+ {
+ ManageWorkingSetsDialog dialog =
+ new ManageWorkingSetsDialog(getSite().getShell());
+ dialog.open();
+
+ /*
+ * If the current working set has been deleted then
set the current working
+ * set to null
+ */
+ if
(!WorkingSetManager.getDefault().getWorkingSets().contains(
+ currentWorkingSet)) {
+ currentWorkingSet = null;
+ treeViewer.resetFilters();
+ }
+ }
+
+ });
+
+ }
+ });
+
+ viewMenuManager.add(workingSetMenuManager);
+
+ }
+
private void hookContextMenu()
{
MenuManager menuManager = new MenuManager("#Popup");
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -79,7 +79,11 @@
}
try {
- IXWikiConnection connection =
XWikiConnectionFactory.createCachedConnection(newConnectionWizardState.getServerUrl(),
newConnectionWizardState.getUserName(), new
File(XWikiEclipsePlugin.getDefault().getStateLocation().toFile(), "cache"));
+ IXWikiConnection connection =
+ XWikiConnectionFactory
+
.createCachedConnection(newConnectionWizardState.getServerUrl(),
+ newConnectionWizardState.getUserName(), new
File(XWikiEclipsePlugin
+ .getDefault().getStateLocation().toFile(),
"cache"));
XWikiConnectionManager.getDefault().addConnection(connection,
newConnectionWizardState.getPassword());
connection.connect(newConnectionWizardState.getPassword());
} catch (Exception e) {
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizardState.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizardState.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizardState.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -23,61 +23,75 @@
public class NewConnectionWizardState
{
private String serverUrl;
+
private String userName;
+
private String password;
+
private boolean useProxy;
+
private String proxyHost;
+
private String proxyPort;
-
+
public String getServerUrl()
{
return serverUrl;
}
+
public void setServerUrl(String serverUrl)
{
this.serverUrl = serverUrl;
}
+
public String getUserName()
{
return userName;
}
+
public void setUserName(String userName)
{
this.userName = userName;
}
+
public String getPassword()
{
return password;
}
+
public void setPassword(String password)
{
this.password = password;
}
+
public boolean isUseProxy()
{
return useProxy;
}
+
public void setUseProxy(boolean useProxy)
{
this.useProxy = useProxy;
}
+
public String getProxyHost()
{
return proxyHost;
}
+
public void setProxyHost(String proxyHost)
{
this.proxyHost = proxyHost;
}
+
public String getProxyPort()
{
return proxyPort;
}
+
public void setProxyPort(String proxyPort)
{
this.proxyPort = proxyPort;
}
-
-
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewPageWizardState.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewPageWizardState.java
2007-11-07 14:56:18 UTC (rev 5696)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewPageWizardState.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -23,7 +23,7 @@
public class NewPageWizardState
{
private String title;
-
+
public String getTitle()
{
return title;
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizard.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizard.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizard.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,74 @@
+/*
+ * 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.xeclipse.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.xeclipse.WorkingSetManager;
+
+public class NewWorkingSetWizard extends Wizard implements INewWizard
+{
+ private NewWorkingSetWizardState newWorkingSetWizardState;
+
+ public NewWorkingSetWizard()
+ {
+ super();
+ newWorkingSetWizardState = new NewWorkingSetWizardState();
+ }
+
+
+
+ @Override
+ public boolean performFinish()
+ {
+
WorkingSetManager.getDefault().add(newWorkingSetWizardState.getWorkingSet());
+
+ return true;
+ }
+
+ @Override
+ public void addPages()
+ {
+ addPage(new WorkingSetSelection("Working set selection"));
+ }
+
+ @Override
+ public boolean canFinish()
+ {
+ if(newWorkingSetWizardState.getWorkingSet().getName() == null ||
newWorkingSetWizardState.getWorkingSet().getName().length() == 0) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection)
+ {
+ }
+
+ public NewWorkingSetWizardState getNewWorkingSetState()
+ {
+ return newWorkingSetWizardState;
+ }
+
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizardState.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizardState.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewWorkingSetWizardState.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,20 @@
+package org.xwiki.xeclipse.wizards;
+
+import org.xwiki.xeclipse.WorkingSet;
+
+public class NewWorkingSetWizardState
+{
+ private WorkingSet workingSet;
+
+ public NewWorkingSetWizardState()
+ {
+ workingSet = new WorkingSet(null);
+ }
+
+ public WorkingSet getWorkingSet()
+ {
+ return workingSet;
+ }
+
+
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/WorkingSetSelection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/WorkingSetSelection.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/WorkingSetSelection.java
2007-11-07 15:59:47 UTC (rev 5697)
@@ -0,0 +1,205 @@
+package org.xwiki.xeclipse.wizards;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+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.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+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.ui.model.WorkbenchLabelProvider;
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
+import org.xwiki.xeclipse.WorkingSet;
+import org.xwiki.xeclipse.WorkingSetFilter;
+import org.xwiki.xeclipse.XWikiConnectionManager;
+import org.xwiki.xeclipse.XWikiEclipseConstants;
+import org.xwiki.xeclipse.model.IXWikiConnection;
+import org.xwiki.xeclipse.model.IXWikiPage;
+import org.xwiki.xeclipse.model.IXWikiSpace;
+import org.xwiki.xeclipse.views.XWikiExplorerContentProvider;
+
+public class WorkingSetSelection extends WizardPage
+{
+ private NewWorkingSetWizardState newWorkingSetWizardState;
+
+ private TreeViewer previewTreeViewer;
+
+ private WorkingSetFilter workingSetFilter;
+
+ protected WorkingSetSelection(String pageName)
+ {
+ super(pageName);
+ setTitle("New working set");
+ setImageDescriptor(XWikiEclipsePlugin
+ .getImageDescriptor(XWikiEclipseConstants.WORKING_SET_BANNER));
+ }
+
+
+
+ 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(newWorkingSetWizardState.getWorkingSet(),
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(newWorkingSetWizardState.getWorkingSet(),
items[i].getData(),
+ checked);
+ }
+ }
+
+ public void createControl(Composite parent)
+ {
+ newWorkingSetWizardState = ((NewWorkingSetWizard)
getWizard()).getNewWorkingSetState();
+ 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)
+ {
+
newWorkingSetWizardState.getWorkingSet().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 TreeViewer treeViewer = new TreeViewer(group, SWT.CHECK);
+ 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(newWorkingSetWizardState.getWorkingSet(),
item.getData(),
+ checked);
+
+ if (workingSetFilter != null) {
+ previewTreeViewer.removeFilter(workingSetFilter);
+ }
+
+ workingSetFilter =
+ new
WorkingSetFilter(newWorkingSetWizardState.getWorkingSet());
+ previewTreeViewer.addFilter(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(newWorkingSetWizardState.getWorkingSet());
+ previewTreeViewer.addFilter(workingSetFilter);
+
+ sashForm.setWeights(new int[] {50, 50});
+
+ 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);
+ }
+ }
+
+ }
+
+}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications