Author: fmancinelli
Date: 2007-11-02 11:06:48 +0100 (Fri, 02 Nov 2007)
New Revision: 5605

Added:
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/viewers/
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/viewers/XWikiPagePreviewViewer.java
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/views/XWikiPagePreviewView.java
Log:
XECLIPSE-30

* Refactored page preview logic in a separate reusable viewer.

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-11-02 09:00:49 UTC (rev 5604)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/editors/XWikiPageEditor.java
        2007-11-02 10:06:48 UTC (rev 5605)
@@ -3,14 +3,10 @@
 import org.eclipse.jface.action.Action;
 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.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;
@@ -20,103 +16,90 @@
 import org.xwiki.xeclipse.XWikiEclipseNotificationCenter;
 import org.xwiki.xeclipse.model.IXWikiConnection;
 import org.xwiki.xeclipse.model.IXWikiPage;
+import org.xwiki.xeclipse.viewers.XWikiPagePreviewViewer;
 
 public class XWikiPageEditor extends AbstractTextEditor
 {
-    public static final String ID = "org.xwiki.xeclipse.editors.XWikiPage";    
+    public static final String ID = "org.xwiki.xeclipse.editors.XWikiPage";
+
     private Form form;
-    private StackLayout stackLayout;
+
     private SashForm sashForm;
-    private Composite previewAreaComposite;
-    private Composite notConnectedLabelComposite;
-    private Browser browser;
-            
-    private class ShowPreviewAction extends Action {
-        public ShowPreviewAction() {           
-            super("Show preview", AS_CHECK_BOX);        
-            
setImageDescriptor(XWikiEclipsePlugin.getImageDescriptor(XWikiEclipseConstants.SHOW_EDITOR_PREVIEW_ICON));
+
+    private XWikiPagePreviewViewer previewViewer;
+
+    private class ShowPreviewAction extends Action
+    {
+        public ShowPreviewAction()
+        {
+            super("Show preview", AS_CHECK_BOX);
+            setImageDescriptor(XWikiEclipsePlugin
+                
.getImageDescriptor(XWikiEclipseConstants.SHOW_EDITOR_PREVIEW_ICON));
             setChecked(false);
         }
 
         @Override
-        public void run() {
-            if(isChecked()) {
+        public void run()
+        {
+            if (isChecked()) {
                 sashForm.setMaximizedControl(null);
-            }
-            else {
+            } else {
                 sashForm.setMaximizedControl(sashForm.getChildren()[0]);
-            }            
+            }
         }
     }
-    
+
     public XWikiPageEditor()
     {
-        super();        
+        super();
         setDocumentProvider(new XWikiPageDocumentProvider(this));
         setSourceViewerConfiguration(new SourceViewerConfiguration());
     }
 
     @Override
     public void createPartControl(Composite parent)
-    {               
-        IXWikiPage xwikiPage = 
((XWikiPageEditorInput)getEditorInput()).getXWikiPage();
-        
+    {
+        IXWikiPage xwikiPage = ((XWikiPageEditorInput) 
getEditorInput()).getXWikiPage();
+
         FormToolkit toolkit = new FormToolkit(parent.getDisplay());
-        form = toolkit.createForm(parent);                        
+        form = toolkit.createForm(parent);
         toolkit.decorateFormHeading(form);
-        form.getToolBarManager().add(new ShowPreviewAction());  
+        form.getToolBarManager().add(new ShowPreviewAction());
         form.updateToolBar();
         GridLayoutFactory.fillDefaults().applyTo(form.getBody());
-        
+
         sashForm = new SashForm(form.getBody(), SWT.VERTICAL | SWT.BORDER);
         toolkit.adapt(sashForm);
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, 
true).applyTo(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);        
-               
+
+        previewViewer = new XWikiPagePreviewViewer(sashForm);
+
         sashForm.setWeights(new int[] {50, 50});
         sashForm.setMaximizedControl(sashForm.getChildren()[0]);
-                
+
         updateEditor(xwikiPage);
-    }        
+    }
 
-    public void updateEditor(IXWikiPage page) {        
+    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.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();            
-        }
-        
-        XWikiEclipseNotificationCenter.getDefault().fireEvent(this, 
XWikiEclipseEvent.PAGE_UPDATED, page);
+
+        previewViewer.showPreview(page);
+  
+        XWikiEclipseNotificationCenter.getDefault().fireEvent(this,
+            XWikiEclipseEvent.PAGE_UPDATED, page);
     }
-    
-    
+
 }

Added: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/viewers/XWikiPagePreviewViewer.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/viewers/XWikiPagePreviewViewer.java
                         (rev 0)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/viewers/XWikiPagePreviewViewer.java
 2007-11-02 10:06:48 UTC (rev 5605)
@@ -0,0 +1,76 @@
+package org.xwiki.xeclipse.viewers;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.xwiki.xeclipse.model.IXWikiPage;
+
+public class XWikiPagePreviewViewer
+{
+    private Composite composite;
+
+    private StackLayout stackLayout;
+
+    private Browser browser;
+
+    private Composite notConnectedComposite;
+
+    private Composite noPageSelectedComposite;
+
+    public XWikiPagePreviewViewer(Composite parent)
+    {
+        composite = new Composite(parent, SWT.NONE);
+        stackLayout = new StackLayout();
+        composite.setLayout(stackLayout);
+
+        browser = new Browser(composite, SWT.NONE);
+
+        notConnectedComposite = new Composite(composite, SWT.NONE);
+        GridLayoutFactory.fillDefaults().margins(0, 
0).applyTo(notConnectedComposite);
+        
notConnectedComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+        Label label = new Label(notConnectedComposite, SWT.NONE);
+        GridDataFactory.fillDefaults().align(SWT.CENTER, 
SWT.CENTER).grab(true, true).applyTo(
+            label);
+        label.setText("No preview available if not connected.");
+        label.setFont(JFaceResources.getHeaderFont());
+        
label.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+        
label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+
+        noPageSelectedComposite = new Composite(composite, SWT.NONE);
+        noPageSelectedComposite
+            
.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+        GridLayoutFactory.fillDefaults().margins(0, 
0).applyTo(noPageSelectedComposite);
+        label = new Label(noPageSelectedComposite, SWT.NONE);
+        GridDataFactory.fillDefaults().align(SWT.CENTER, 
SWT.CENTER).grab(true, true).applyTo(
+            label);
+        label.setText("No page selected");
+        label.setFont(JFaceResources.getHeaderFont());
+        
label.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+        
label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+
+        stackLayout.topControl = noPageSelectedComposite;
+        composite.layout();
+    }
+
+    public void showPreview(IXWikiPage xwikiPage)
+    {
+        if (xwikiPage == null) {
+            stackLayout.topControl = noPageSelectedComposite;
+            composite.layout();
+        } else {
+            if (xwikiPage.getConnection().isConnected()) {
+                browser.setUrl(xwikiPage.getUrl());
+                stackLayout.topControl = browser;
+                composite.layout();
+            } else {
+                stackLayout.topControl = notConnectedComposite;
+                composite.layout();
+            }
+        }
+    }
+}

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiPagePreviewView.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiPagePreviewView.java
     2007-11-02 09:00:49 UTC (rev 5604)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/views/XWikiPagePreviewView.java
     2007-11-02 10:06:48 UTC (rev 5605)
@@ -1,14 +1,7 @@
 package org.xwiki.xeclipse.views;
 
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.part.ViewPart;
@@ -18,107 +11,65 @@
 import org.xwiki.xeclipse.editors.XWikiPageEditor;
 import org.xwiki.xeclipse.model.IXWikiPage;
 import org.xwiki.xeclipse.utils.XWikiEclipseUtil;
+import org.xwiki.xeclipse.viewers.XWikiPagePreviewViewer;
 
-public class XWikiPagePreviewView extends ViewPart implements 
ISelectionListener, IXWikiEclipseEventListener
+public class XWikiPagePreviewView extends ViewPart implements 
ISelectionListener,
+    IXWikiEclipseEventListener
 {
     public static final String ID = 
"org.xwiki.xeclipse.views.XWikiPagePreview";
-    private Composite composite;
-    private StackLayout stackLayout;
-    private Browser browser;
-    private Composite notConnectedComposite;
-    private Composite noPageSelectedComposite;
-    
+
+    private XWikiPagePreviewViewer previewViewer;
+
     @Override
     public void createPartControl(Composite parent)
     {
-        composite = new Composite(parent, SWT.NONE);
-        stackLayout = new StackLayout();
-        composite.setLayout(stackLayout);
-        
-        browser = new Browser(composite, SWT.NONE);
-        
-        notConnectedComposite = new Composite(composite, SWT.NONE);
-        GridLayoutFactory.fillDefaults().margins(0, 
0).applyTo(notConnectedComposite);
-        
notConnectedComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
        
-        Label label = new Label(notConnectedComposite, SWT.NONE);
-        GridDataFactory.fillDefaults().align(SWT.CENTER, 
SWT.CENTER).grab(true, true).applyTo(label);        
-        label.setText("No preview available if not connected.");        
-        label.setFont(JFaceResources.getHeaderFont());
-        
label.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
-        
label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
-        
-        noPageSelectedComposite = new Composite(composite, SWT.NONE);
-        
noPageSelectedComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
-        
GridLayoutFactory.fillDefaults().margins(0,0).applyTo(noPageSelectedComposite);
-        label = new Label(noPageSelectedComposite, SWT.NONE);
-        GridDataFactory.fillDefaults().align(SWT.CENTER, 
SWT.CENTER).grab(true, true).applyTo(label);
-        label.setText("No page selected");        
-        label.setFont(JFaceResources.getHeaderFont());
-        
label.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
-        
label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+        previewViewer = new XWikiPagePreviewViewer(parent);
 
-        stackLayout.topControl = noPageSelectedComposite;
-        composite.layout();
-        
         
getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
-        
XWikiEclipseNotificationCenter.getDefault().addListener(XWikiEclipseEvent.PAGE_UPDATED,
 this);
+        
XWikiEclipseNotificationCenter.getDefault().addListener(XWikiEclipseEvent.PAGE_UPDATED,
+            this);
     }
 
     @Override
     public void setFocus()
     {
         // TODO Auto-generated method stub
-        
+
     }
 
     @Override
     public void dispose()
     {
         
getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
-        
XWikiEclipseNotificationCenter.getDefault().removeListener(XWikiEclipseEvent.PAGE_UPDATED,
 this);
+        XWikiEclipseNotificationCenter.getDefault().removeListener(
+            XWikiEclipseEvent.PAGE_UPDATED, this);
         super.dispose();
     }
 
     public void selectionChanged(IWorkbenchPart part, ISelection selection)
-    {        
-        if(part instanceof XWikiPageEditor) {
+    {
+        if (part instanceof XWikiPageEditor) {
             return;
         }
-        
-        Object selectedObject = 
XWikiEclipseUtil.getSingleSelectedObjectInStructuredSelection(selection);
-        if(selectedObject instanceof IXWikiPage) {
+
+        Object selectedObject =
+            
XWikiEclipseUtil.getSingleSelectedObjectInStructuredSelection(selection);
+        if (selectedObject instanceof IXWikiPage) {
             IXWikiPage xwikiPage = (IXWikiPage) selectedObject;
-            showPreview(xwikiPage);            
+            previewViewer.showPreview(xwikiPage);
+        } else {
+            previewViewer.showPreview(null);
         }
-        else {            
-            stackLayout.topControl = noPageSelectedComposite;
-            composite.layout();
-        }
     }
 
     public void handleEvent(Object sender, XWikiEclipseEvent event, Object 
data)
     {
-        switch(event) {
+        switch (event) {
             case PAGE_UPDATED:
                 IXWikiPage xwikiPage = (IXWikiPage) data;
-                showPreview(xwikiPage);                
+                previewViewer.showPreview(xwikiPage);
                 break;
         }
-        
-    }
-    
-    private void showPreview(IXWikiPage xwikiPage) {
-        if(xwikiPage.getConnection().isConnected()) {
-            browser.setUrl(xwikiPage.getUrl());
-            stackLayout.topControl = browser;
-            composite.layout();
-        }
-        else {
-            stackLayout.topControl = notConnectedComposite;
-            composite.layout();
-        }
-    }
 
-
-
+    }
 }

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

Reply via email to