Author: fmancinelli
Date: 2007-11-01 00:30:04 +0100 (Thu, 01 Nov 2007)
New Revision: 5589

Modified:
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
   
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/XWikiPageEditorInput.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/IXWikiPage.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
Log:
XECLIPSE-30

* Added editors and preview
* Minor refactorings and changes to the UI

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:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/META-INF/MANIFEST.MF
 2007-10-31 23:30:04 UTC (rev 5589)
@@ -17,6 +17,7 @@
  org.eclipse.ui.editors,
  org.eclipse.ui.workbench.texteditor,
  org.eclipse.core.expressions,
- org.eclipse.ui.ide
+ org.eclipse.ui.ide,
+ org.eclipse.ui.forms
 Eclipse-LazyStart: true
 Export-Package: org.xwiki.plugins.eclipse.model

Modified: 
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
      2007-10-31 18:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageDocumentProvider.java
      2007-10-31 23:30:04 UTC (rev 5589)
@@ -18,14 +18,20 @@
 
 public class XWikiPageDocumentProvider extends StorageDocumentProvider
 {
+    private XWikiPageEditor xwikiPageEditor;
 
+    public XWikiPageDocumentProvider(XWikiPageEditor xwikiPageEditor)
+    {
+        this.xwikiPageEditor = xwikiPageEditor;
+    }
+
     @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());
+            document.set(input.getXWikiPage().getContent());            
         }
 
         return document;
@@ -54,6 +60,8 @@
 
         try {            
             xwikiPage.save();
+            document.set(input.getXWikiPage().getContent());
+            xwikiPageEditor.updateEditor(input.getXWikiPage());
         } catch (XWikiConnectionException e) {
             throw new CoreException(new Status(IStatus.ERROR, 
XWikiEclipsePlugin.PLUGIN_ID, "Unable to save", e));            
         }

Modified: 
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
        2007-10-31 18:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
        2007-10-31 23:30:04 UTC (rev 5589)
@@ -1,17 +1,94 @@
 package org.xwiki.xeclipse.editors;
 
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.text.source.SourceViewerConfiguration;
-import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.Form;
+import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.texteditor.AbstractTextEditor;
+import org.xwiki.xeclipse.model.IXWikiConnection;
+import org.xwiki.xeclipse.model.IXWikiPage;
 
 public class XWikiPageEditor extends AbstractTextEditor
 {
     public static final String ID = "org.xwiki.xeclipse.editors.XWikiPage";    
+    private Form form;
+    private StackLayout stackLayout;
+    private Composite previewAreaComposite;
+    private Composite notConnectedLabelComposite;
+    private Browser browser;
 
     public XWikiPageEditor()
     {
         super();        
-        setDocumentProvider(new XWikiPageDocumentProvider());
+        setDocumentProvider(new XWikiPageDocumentProvider(this));
         setSourceViewerConfiguration(new SourceViewerConfiguration());
     }
+
+    @Override
+    public void createPartControl(Composite parent)
+    {               
+        IXWikiPage xwikiPage = 
((XWikiPageEditorInput)getEditorInput()).getXWikiPage();
+        
+        FormToolkit toolkit = new FormToolkit(parent.getDisplay());
+        form = toolkit.createForm(parent);                
+        toolkit.decorateFormHeading(form);
+        GridLayoutFactory.fillDefaults().applyTo(form.getBody());
+        
+        SashForm sashForm = new SashForm(form.getBody(), SWT.VERTICAL | 
SWT.BORDER);
+        toolkit.adapt(sashForm);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(sashForm);
+        
+        super.createPartControl(sashForm);
+        
+        previewAreaComposite = toolkit.createComposite(sashForm, SWT.NONE);
+        stackLayout = new StackLayout();
+        previewAreaComposite.setLayout(stackLayout);
+        
+        
+        notConnectedLabelComposite = 
toolkit.createComposite(previewAreaComposite, SWT.NONE);
+        GridLayoutFactory.fillDefaults().applyTo(notConnectedLabelComposite);
+        Label label = toolkit.createLabel(notConnectedLabelComposite, "No 
preview available if not connected.");
+        GridDataFactory.fillDefaults().align(SWT.CENTER, 
SWT.CENTER).grab(true, true).applyTo(label);
+        label.setFont(JFaceResources.getHeaderFont());
+        
label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+        
+        browser = new Browser(previewAreaComposite, SWT.NONE);        
+               
+        sashForm.setWeights(new int[] {50, 50});
+        
+        updateEditor(xwikiPage);
+    }
+    
+    public void updateEditor(IXWikiPage page) {        
+        String id = page.getId();
+        IXWikiConnection connection = page.getConnection();
+        String userName = connection.getUserName();
+        String serverUrl = connection.getServerUrl();
+        boolean connected = connection.isConnected();
+        int version = page.getVersion();
+        
+        form.setText(String.format("%s version %d [%s]", id, version, 
connected ? "online" : "cached", id));
+        form.setMessage(String.format("[EMAIL PROTECTED]", userName, 
serverUrl));
+        
+        if(connected) {
+            stackLayout.topControl = browser;
+            browser.setUrl(page.getUrl());
+            previewAreaComposite.layout();
+        }
+        else {
+            stackLayout.topControl = notConnectedLabelComposite;
+            previewAreaComposite.layout();
+            
+        }
+    }
+    
+    
 }

Modified: 
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
   2007-10-31 18:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditorInput.java
   2007-10-31 23:30:04 UTC (rev 5589)
@@ -25,7 +25,7 @@
 
     public String getName()
     {
-        return xwikiPage.getTitle();
+        return xwikiPage.getId();
     }
 
     public IPersistableElement getPersistable()

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/IXWikiPage.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/IXWikiPage.java
       2007-10-31 18:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/IXWikiPage.java
       2007-10-31 23:30:04 UTC (rev 5589)
@@ -60,4 +60,9 @@
      * @throws XWikiConnectionException
      */
     public void save() throws XWikiConnectionException;
+    
+    /**
+     * @return The connection where this page has been fetched from.
+     */
+    public IXWikiConnection getConnection();
 }

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:15:37 UTC (rev 5588)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPage.java
   2007-10-31 23:30:04 UTC (rev 5589)
@@ -4,6 +4,7 @@
 import java.util.Map;
 
 import org.codehaus.swizzle.confluence.Page;
+import org.xwiki.xeclipse.model.IXWikiConnection;
 import org.xwiki.xeclipse.model.IXWikiPage;
 import org.xwiki.xeclipse.model.XWikiConnectionException;
 
@@ -195,7 +196,11 @@
         }
         catch(Exception e) {
             e.printStackTrace();
-        }
+        }        
     }
+    
+    public IXWikiConnection getConnection() {
+        return connection;
+    }
 
 }

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

Reply via email to