Author: fmancinelli
Date: 2007-10-31 19:14:28 +0100 (Wed, 31 Oct 2007)
New Revision: 5587
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageDocumentProvider.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorContributor.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorInput.java
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
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/xeclipse/XWikiConnectionManager.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/AdapterFactory.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/XWikiConnectionAdapter.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/RemoveConnectionHandler.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
Log:
XECLIPSE-30
* Fixed nasty bugs in the model save operation that caused version misalignment
between cached and remote versions after synchronization.
* Added refactored editors
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
2007-10-31 18:14:28 UTC (rev 5587)
@@ -15,8 +15,8 @@
org.eclipse.jface.text,
org.eclipse.core.resources,
org.eclipse.ui.editors,
- org.eclipse.ui.ide,
org.eclipse.ui.workbench.texteditor,
- org.eclipse.core.expressions
+ org.eclipse.core.expressions,
+ org.eclipse.ui.ide
Eclipse-LazyStart: true
Export-Package: org.xwiki.plugins.eclipse.model
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
===================================================================
--- xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
2007-10-31 18:06:19 UTC (rev 5586)
+++ xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/plugin.xml
2007-10-31 18:14:28 UTC (rev 5587)
@@ -12,6 +12,13 @@
class="org.xwiki.plugins.eclipse.editors.XWikiEditor"
id="org.xwiki.plugins.eclipse.editors.XWikiEditor">
</editor>
+ <editor
+ class="org.xwiki.xeclipse.editors.XWikiPageEditor"
+
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
+ icon="icons/xwiki.png"
+ id="org.xwiki.xeclipse.editors.XWikiPage"
+ name="XWiki page editor">
+ </editor>
</extension>
<extension
point="org.eclipse.ui.views">
@@ -100,6 +107,9 @@
type="org.eclipse.ui.model.IWorkbenchAdapter">
</adapter>
<adapter
+ type="org.eclipse.ui.model.IWorkbenchAdapter2">
+ </adapter>
+ <adapter
type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter">
</adapter>
</factory>
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -75,7 +75,7 @@
public void removeConnection(IXWikiConnection xwikiConnection)
{
- xwikiConnections.remove(xwikiConnection);
+ xwikiConnections.remove(xwikiConnection);
fireConnectionRemoved(xwikiConnection);
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/AdapterFactory.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/AdapterFactory.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/AdapterFactory.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -22,6 +22,7 @@
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.model.IWorkbenchAdapter2;
import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
import org.xwiki.xeclipse.model.IXWikiConnection;
import org.xwiki.xeclipse.model.IXWikiPage;
@@ -64,6 +65,10 @@
return xwikiConnectionAdapter;
}
+ if (adapterType == IWorkbenchAdapter2.class && adaptableObject
instanceof IXWikiConnection) {
+ return xwikiConnectionAdapter;
+ }
+
if (adapterType == IDeferredWorkbenchAdapter.class
&& adaptableObject instanceof IXWikiSpace) {
return xwikiSpaceAdapter;
@@ -87,7 +92,7 @@
*/
public Class[] getAdapterList()
{
- return new Class[] {IDeferredWorkbenchAdapter.class,
IWorkbenchAdapter.class};
+ return new Class[] {IDeferredWorkbenchAdapter.class,
IWorkbenchAdapter.class, IWorkbenchAdapter2.class};
}
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/XWikiConnectionAdapter.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/XWikiConnectionAdapter.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/adapters/XWikiConnectionAdapter.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -25,6 +25,10 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.ui.model.IWorkbenchAdapter2;
import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
import org.eclipse.ui.progress.IElementCollector;
import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
@@ -36,7 +40,7 @@
/**
* The adapter for XWiki connections
*/
-public class XWikiConnectionAdapter implements IDeferredWorkbenchAdapter
+public class XWikiConnectionAdapter implements IDeferredWorkbenchAdapter,
IWorkbenchAdapter2
{
/**
* [EMAIL PROTECTED]
@@ -82,9 +86,8 @@
IXWikiConnection xwikiConnection = (IXWikiConnection) object;
return String
- .format("[EMAIL PROTECTED] %s", xwikiConnection.getUserName(),
- xwikiConnection.getServerUrl(),
xwikiConnection.isConnected() ? "[Connected]"
- : "[Disconnected]");
+ .format("[EMAIL PROTECTED]", xwikiConnection.getUserName(),
+ xwikiConnection.getServerUrl());
}
return null;
@@ -132,4 +135,30 @@
{
return true;
}
+
+ public RGB getBackground(Object element)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public FontData getFont(Object element)
+ {
+ if (element instanceof IXWikiConnection) {
+ IXWikiConnection xwikiConnection = (IXWikiConnection) element;
+
+ if (xwikiConnection.isConnected()) {
+ return
JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT)
+ .getFontData()[0];
+ }
+ }
+
+ return null;
+ }
+
+ public RGB getForeground(Object element)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageDocumentProvider.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageDocumentProvider.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageDocumentProvider.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -0,0 +1,62 @@
+package org.xwiki.xeclipse.editors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentPartitioner;
+import org.eclipse.jface.text.rules.FastPartitioner;
+import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.ui.editors.text.StorageDocumentProvider;
+import org.eclipse.ui.texteditor.AbstractDocumentProvider;
+import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
+import org.xwiki.xeclipse.model.IXWikiPage;
+import org.xwiki.xeclipse.model.XWikiConnectionException;
+
+public class XWikiPageDocumentProvider extends StorageDocumentProvider
+{
+
+ @Override
+ protected IDocument createDocument(Object element) throws CoreException
+ {
+ IDocument document = new Document();
+ if (element instanceof XWikiPageEditorInput) {
+ XWikiPageEditorInput input = (XWikiPageEditorInput) element;
+ document.set(input.getXWikiPage().getContent());
+ }
+
+ return document;
+ }
+
+ @Override
+ public boolean isModifiable(Object element)
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isReadOnly(Object element)
+ {
+ return false;
+ }
+
+ @Override
+ protected void doSaveDocument(IProgressMonitor monitor, Object element,
IDocument document,
+ boolean overwrite) throws CoreException
+ {
+ XWikiPageEditorInput input = (XWikiPageEditorInput) element;
+ IXWikiPage xwikiPage = input.getXWikiPage();
+
+ xwikiPage.setContent(document.get());
+
+ try {
+ xwikiPage.save();
+ } catch (XWikiConnectionException e) {
+ throw new CoreException(new Status(IStatus.ERROR,
XWikiEclipsePlugin.PLUGIN_ID, "Unable to save", e));
+ }
+ }
+
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -0,0 +1,17 @@
+package org.xwiki.xeclipse.editors;
+
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.texteditor.AbstractTextEditor;
+
+public class XWikiPageEditor extends AbstractTextEditor
+{
+ public static final String ID = "org.xwiki.xeclipse.editors.XWikiPage";
+
+ public XWikiPageEditor()
+ {
+ super();
+ setDocumentProvider(new XWikiPageDocumentProvider());
+ setSourceViewerConfiguration(new SourceViewerConfiguration());
+ }
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorContributor.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorContributor.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorContributor.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -0,0 +1,50 @@
+package org.xwiki.xeclipse.editors;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.texteditor.BasicTextEditorActionContributor;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+
+public class XWikiPageEditorContributor extends
BasicTextEditorActionContributor
+{
+ public XWikiPageEditorContributor()
+ {
+ super();
+ }
+
+ @Override
+ public void setActiveEditor(IEditorPart part)
+ {
+ super.setActiveEditor(part);
+
+ if (!(part instanceof ITextEditor)) {
+ return;
+ }
+
+ IActionBars actionBars = getActionBars();
+
+ if (actionBars == null) {
+ return;
+ }
+
+ ITextEditor editor = (ITextEditor) part;
+
+ actionBars.setGlobalActionHandler(ActionFactory.SAVE.getId(),
getAction(editor,
+ ITextEditorActionConstants.SAVE));
+
+ IAction action = getAction(editor, ITextEditorActionConstants.CUT);
+ actionBars.setGlobalActionHandler(action.getActionDefinitionId(),
action);
+
+ action = getAction(editor, ITextEditorActionConstants.COPY);
+ actionBars.setGlobalActionHandler(action.getActionDefinitionId(),
action);
+
+ action = getAction(editor, ITextEditorActionConstants.PASTE);
+ actionBars.setGlobalActionHandler(action.getActionDefinitionId(),
action);
+
+ actionBars.updateActionBars();
+ }
+
+}
Added:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorInput.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorInput.java
(rev 0)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorInput.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -0,0 +1,76 @@
+package org.xwiki.xeclipse.editors;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+import org.xwiki.xeclipse.model.IXWikiPage;
+
+public class XWikiPageEditorInput implements IEditorInput
+{
+ private IXWikiPage xwikiPage;
+
+ public XWikiPageEditorInput(IXWikiPage page) {
+ this.xwikiPage = page;
+ }
+
+ public boolean exists()
+ {
+ return false;
+ }
+
+ public ImageDescriptor getImageDescriptor()
+ {
+ return null;
+ }
+
+ public String getName()
+ {
+ return xwikiPage.getTitle();
+ }
+
+ public IPersistableElement getPersistable()
+ {
+ return null;
+ }
+
+ public String getToolTipText()
+ {
+ return xwikiPage.getTitle();
+ }
+
+ public Object getAdapter(Class adapter)
+ {
+ return null;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if(super.equals(obj)) {
+ return true;
+ }
+
+ if(!(obj instanceof XWikiPageEditorInput)) {
+ return false;
+ }
+
+ XWikiPageEditorInput other = (XWikiPageEditorInput) obj;
+
+ return xwikiPage.getId().equals(other.xwikiPage.getId());
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return xwikiPage.getId().hashCode();
+ }
+
+ public IXWikiPage getXWikiPage()
+ {
+ return xwikiPage;
+ }
+
+ public void setXWikiPage(IXWikiPage xwikiPage) {
+ this.xwikiPage = xwikiPage;
+ }
+}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/RemoveConnectionHandler.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/RemoveConnectionHandler.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/RemoveConnectionHandler.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -44,9 +44,7 @@
IXWikiConnection xwikiConnection = (IXWikiConnection)
selectedObject;
try {
- if (xwikiConnection.isConnected()) {
- xwikiConnection.disconnect();
- }
+ xwikiConnection.dispose();
} catch (XWikiConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -77,7 +77,12 @@
}
}
- abstract void savePage(Page page) throws XWikiConnectionException;
+ /**
+ * @param page The page to be saved.
+ * @return The page after that has been saved with all the information
updated (version, etc.).
+ * @throws XWikiConnectionException
+ */
+ abstract Page savePage(Page page) throws XWikiConnectionException;
abstract boolean isPageDirty(String pageId);
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -5,6 +5,7 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -50,9 +51,9 @@
protected void init() throws XWikiConnectionException
{
super.init();
-
+
try {
- cacheDAO = new DiskCacheDAO(new File(cacheDir, getId()));
+ cacheDAO = new DiskCacheDAO(new File(cacheDir, getId()));
} catch (Exception e) {
throw new XWikiConnectionException(e);
}
@@ -95,22 +96,22 @@
* @throws XWikiDAOException
* @throws XWikiConnectionException
*/
- void synchronize(String pageId) throws XWikiDAOException,
XWikiConnectionException
+ Page synchronize(String pageId) throws XWikiDAOException,
XWikiConnectionException
{
assertNotDisposed();
- // If we are not connected then do nothing.
- if (!isConnected()) {
- return;
- }
-
// Get the cached and remote version of the page. If there is no
cached version then there
// is nothing to synchronize so just return.
Page cachedPage = cacheDAO.getPage(pageId);
if (cachedPage == null) {
- return;
+ return null;
}
+ // If we are not connected then do nothing.
+ if (!isConnected()) {
+ return cachedPage;
+ }
+
// Get the remote page
Page remotePage = remoteDAO.getPage(pageId);
@@ -125,7 +126,7 @@
cacheDAO.setDirty(pageId, false);
cacheDAO.setConflict(pageId, false);
- return;
+ return remotePage;
}
// This is case 2.x
@@ -160,6 +161,8 @@
cacheDAO.setConflict(pageId, false);
}
}
+
+ return remotePage;
}
/**
@@ -170,7 +173,11 @@
*/
void synchronizeAll() throws XWikiDAOException, XWikiConnectionException
{
- Set<String> dirtyPages = cacheDAO.getDirtyPages();
+ /* This is necessary in order to avoid concurrent modification to the
dirtyPages set when synchronizing.
+ * In fact, in synchronize we remove elements from
cacheDAO.getDirtyPages() and we cannot use it
+ * directly for iterating.
+ */
+ Set<String> dirtyPages = new HashSet<String>(cacheDAO.getDirtyPages());
for (String pageId : dirtyPages) {
synchronize(pageId);
}
@@ -202,7 +209,7 @@
}
}
- remoteDAO = null;
+ remoteDAO = null;
throw new XWikiConnectionException(e);
}
@@ -375,13 +382,13 @@
}
/**
+ * [EMAIL PROTECTED]
+ *
* Save the page locally, propagating the changes to the remote XWiki
instance if working in
* "online" mode.
*
- * @param page The page to be saved.
- * @throws XWikiConnectionException
*/
- void savePage(Page page) throws XWikiConnectionException
+ Page savePage(Page page) throws XWikiConnectionException
{
assertNotDisposed();
@@ -390,7 +397,7 @@
cacheDAO.setDirty(page.getId(), true);
// Synchronize the page immediately.
- synchronize(page.getId());
+ return synchronize(page.getId());
} catch (Exception e) {
throw new XWikiConnectionException(e);
}
@@ -420,7 +427,7 @@
return cacheDAO.isInConflict(pageId);
}
-
+
private synchronized void writeObject(java.io.ObjectOutputStream s) throws
IOException
{
s.defaultWriteObject();
@@ -432,8 +439,8 @@
s.defaultReadObject();
try {
init();
- } catch (XWikiConnectionException e) {
- e.printStackTrace();
+ } catch (XWikiConnectionException e) {
+ e.printStackTrace();
}
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -95,7 +95,8 @@
public void save() throws XWikiConnectionException
{
- connection.savePage(page);
+ Page updatedPage = connection.savePage(page);
+ this.page = updatedPage;
}
public void setContent(String content)
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
2007-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -198,18 +198,15 @@
}
/**
- * Save the page locally, propagating the changes to the remote XWiki
instance if working in
- * "online" mode.
- *
- * @param page The page to be saved.
- * @throws XWikiConnectionException
+ * [EMAIL PROTECTED]
*/
- void savePage(Page page) throws XWikiConnectionException
+ Page savePage(Page page) throws XWikiConnectionException
{
assertNotDisposed();
try {
- remoteDAO.storePage(page);
+ remoteDAO.storePage(page);
+ return remoteDAO.getPage(page.getId());
} catch (Exception e) {
throw new XWikiConnectionException(e);
}
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-10-31 18:06:19 UTC (rev 5586)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiExplorerView.java
2007-10-31 18:14:28 UTC (rev 5587)
@@ -27,6 +27,8 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
@@ -34,7 +36,9 @@
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.ISources;
import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.model.WorkbenchLabelProvider;
@@ -42,11 +46,14 @@
import org.xwiki.xeclipse.IXWikiConnectionManagerListener;
import org.xwiki.xeclipse.XWikiConnectionManager;
import org.xwiki.xeclipse.XWikiEclipseConstants;
+import org.xwiki.xeclipse.editors.XWikiPageEditor;
+import org.xwiki.xeclipse.editors.XWikiPageEditorInput;
import org.xwiki.xeclipse.handlers.ConnectHandler;
import org.xwiki.xeclipse.handlers.DisconnectHandler;
import org.xwiki.xeclipse.handlers.RemoveConnectionHandler;
import org.xwiki.xeclipse.model.IXWikiConnection;
import org.xwiki.xeclipse.model.IXWikiConnectionListener;
+import org.xwiki.xeclipse.model.IXWikiPage;
import org.xwiki.xeclipse.utils.XWikiEclipseUtil;
public class XWikiExplorerView extends ViewPart implements
IXWikiConnectionManagerListener,
@@ -65,7 +72,26 @@
treeViewer.setLabelProvider(new WorkbenchLabelProvider());
getSite().setSelectionProvider(treeViewer);
treeViewer.setInput(XWikiConnectionManager.getDefault());
+
+ treeViewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event)
+ {
+ IWorkbenchPage page =
+
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ Object selectedObject =
XWikiEclipseUtil.getSingleSelectedObjectInStructuredSelection(treeViewer.getSelection());
+ if(selectedObject instanceof IXWikiPage) {
+ IXWikiPage xwikiPage = (IXWikiPage) selectedObject;
+ XWikiPageEditorInput editorInput = new
XWikiPageEditorInput(xwikiPage);
+ try {
+ page.openEditor(editorInput, XWikiPageEditor.ID);
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+
hookContextMenu();
}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications