Author: fmancinelli
Date: 2008-02-13 21:03:34 +0100 (Wed, 13 Feb 2008)
New Revision: 7704

Modified:
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/editors/XWikiPageDocumentProvider.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/viewers/XWikiPagePreviewViewer.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/views/XWikiPagePreviewView.java
Log:
XECLIPSE-77
XECLIPSE-78

Added functionalities to the preview view (URL bar + open in external browser)

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/editors/XWikiPageDocumentProvider.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/editors/XWikiPageDocumentProvider.java
       2008-02-13 20:00:17 UTC (rev 7703)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/editors/XWikiPageDocumentProvider.java
       2008-02-13 20:03:34 UTC (rev 7704)
@@ -157,7 +157,11 @@
                                                                                
        conflictData.getLocalContent(),
                                                                                
        conflictData.getRemoteContent()));
                                        
-                                        
MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Warning", 
"Content has been merged, please review changes and save them to make them 
effective");
+                                        MessageDialog
+                                                       .openWarning(
+                                                                       
Display.getDefault().getActiveShell(),
+                                                                       
"Warning",
+                                                                       
"Content has been merged, please review changes and save them to make them 
effective");
                                        break;
                                default:
                                        
xwikiPage.setContent(conflictData.getLocalContent());

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/viewers/XWikiPagePreviewViewer.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/viewers/XWikiPagePreviewViewer.java
  2008-02-13 20:00:17 UTC (rev 7703)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/viewers/XWikiPagePreviewViewer.java
  2008-02-13 20:03:34 UTC (rev 7704)
@@ -27,6 +27,7 @@
 import org.eclipse.swt.browser.Browser;
 import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.xwiki.eclipse.model.IXWikiPage;
 
@@ -41,6 +42,8 @@
     private Composite notConnectedComposite;
 
     private Composite noPageSelectedComposite;
+    
+    private IXWikiPage xwikiPage;
 
     public XWikiPagePreviewViewer(Composite parent)
     {
@@ -79,6 +82,8 @@
 
     public void showPreview(IXWikiPage xwikiPage)
     {
+       this.xwikiPage = xwikiPage;
+       
         if (xwikiPage == null) {
             stackLayout.topControl = noPageSelectedComposite;
             composite.layout();
@@ -93,4 +98,25 @@
             }
         }
     }
+    
+    public void showURL(String url) {
+       browser.setUrl(url);
+        stackLayout.topControl = browser;
+        composite.layout();
+    }
+
+       public IXWikiPage getXwikiPage()
+       {
+               return xwikiPage;
+       }
+
+       public Browser getBrowser()
+       {
+               return browser;
+       }
+       
+       public Control getControl() {
+               return composite;
+       }
+    
 }

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/views/XWikiPagePreviewView.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/views/XWikiPagePreviewView.java
      2008-02-13 20:00:17 UTC (rev 7703)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/views/XWikiPagePreviewView.java
      2008-02-13 20:03:34 UTC (rev 7704)
@@ -20,10 +20,32 @@
  */
 package org.xwiki.eclipse.views;
 
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.browser.IWebBrowser;
+import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
 import org.eclipse.ui.part.ViewPart;
 import org.xwiki.eclipse.IXWikiEclipseEventListener;
 import org.xwiki.eclipse.XWikiEclipseEvent;
@@ -32,64 +54,138 @@
 import org.xwiki.eclipse.model.IXWikiPage;
 import org.xwiki.eclipse.utils.XWikiEclipseUtil;
 import org.xwiki.eclipse.viewers.XWikiPagePreviewViewer;
+import org.xwiki.plugins.eclipse.views.navigator.XWikiNavigator;
 
-public class XWikiPagePreviewView extends ViewPart implements 
ISelectionListener,
-    IXWikiEclipseEventListener
+public class XWikiPagePreviewView extends ViewPart implements
+               ISelectionListener, IXWikiEclipseEventListener
 {
-    public static final String ID = "org.xwiki.eclipse.views.XWikiPagePreview";
+       public static final String ID = 
"org.xwiki.eclipse.views.XWikiPagePreview";
+       private Text url;
 
-    private XWikiPagePreviewViewer previewViewer;
+       private XWikiPagePreviewViewer previewViewer;
 
-    @Override
-    public void createPartControl(Composite parent)
-    {
-        previewViewer = new XWikiPagePreviewViewer(parent);
+       @Override
+       public void createPartControl(Composite parent)
+       {
+               Composite composite = new Composite(parent, SWT.NONE);
+               GridLayoutFactory.fillDefaults().applyTo(composite);
 
-        
getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
-        
XWikiEclipseNotificationCenter.getDefault().addListener(XWikiEclipseEvent.PAGE_UPDATED,
-            this);
-    }
+               Composite bar = new Composite(composite, SWT.NONE);
+               GridLayoutFactory.fillDefaults().numColumns(2).applyTo(bar);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               false).applyTo(bar);
 
-    @Override
-    public void setFocus()
-    {
-        // TODO Auto-generated method stub
+               url = new Text(bar, SWT.BORDER);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(url);
+               url.addSelectionListener(new SelectionListener() {
 
-    }
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               previewViewer.showURL(url.getText());
+                               
+                       }
 
-    @Override
-    public void dispose()
-    {
-        
getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
-        XWikiEclipseNotificationCenter.getDefault().removeListener(
-            XWikiEclipseEvent.PAGE_UPDATED, this);
-        super.dispose();
-    }
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
+                               
+                       }
+                       
+               });
+               
+               Button openInExternalBrowser = new Button(bar, SWT.PUSH);
+               openInExternalBrowser.setText("Open external browser");
+               openInExternalBrowser.addSelectionListener(new 
SelectionListener()
+               {
 
-    public void selectionChanged(IWorkbenchPart part, ISelection selection)
-    {
-        if (part instanceof XWikiPageEditor) {
-            return;
-        }
+                       public void widgetDefaultSelected(SelectionEvent e)
+                       {
+                               // TODO Auto-generated method stub
 
-        Object selectedObject =
-            
XWikiEclipseUtil.getSingleSelectedObjectInStructuredSelection(selection);
-        if (selectedObject instanceof IXWikiPage) {
-            IXWikiPage xwikiPage = (IXWikiPage) selectedObject;
-            previewViewer.showPreview(xwikiPage);
-        } else {
-            previewViewer.showPreview(null);
-        }
-    }
+                       }
 
-    public void handleEvent(Object sender, XWikiEclipseEvent event, Object 
data)
-    {
-        switch (event) {
-            case PAGE_UPDATED:
-                IXWikiPage xwikiPage = (IXWikiPage) data;
-                previewViewer.showPreview(xwikiPage);
-                break;
-        }
+                       public void widgetSelected(SelectionEvent e)
+                       {
+                               IWorkbenchBrowserSupport browserSupport = 
PlatformUI
+                                               
.getWorkbench().getBrowserSupport();
 
-    }
+                               IWebBrowser browser;
+                               try
+                               {
+                                       browser = 
browserSupport.createBrowser("xeclipse");
+                                       System.out.format("Opening browser on: 
%s\n", url.getText());
+                                       browser.openURL(new URL(url.getText()));
+                               } catch (Exception e1)
+                               {
+                                       
MessageDialog.openWarning(Display.getDefault()
+                                                       .getActiveShell(), 
"Warning", String.format(
+                                                       "Unable to open 
external browser\n%s", e1));
+                                       e1.printStackTrace();
+                               }
+                       }
+
+               });
+
+               previewViewer = new XWikiPagePreviewViewer(composite);
+               GridDataFactory.fillDefaults().align(SWT.FILL, 
SWT.FILL).grab(true,
+                               true).applyTo(previewViewer.getControl());
+
+               getSite().getWorkbenchWindow().getSelectionService()
+                               .addPostSelectionListener(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);
+               super.dispose();
+       }
+
+       public void selectionChanged(IWorkbenchPart part, ISelection selection)
+       {
+               if (part instanceof XWikiPageEditor)
+               {
+                       return;
+               }
+
+               Object selectedObject = XWikiEclipseUtil
+                               
.getSingleSelectedObjectInStructuredSelection(selection);
+               if (selectedObject instanceof IXWikiPage)
+               {
+                       IXWikiPage xwikiPage = (IXWikiPage) selectedObject;
+                       previewViewer.showPreview(xwikiPage);
+                       url.setText(xwikiPage.getUrl());
+               } else
+               {
+                       previewViewer.showPreview(null);
+                       url.setText("");
+               }
+       }
+
+       public void handleEvent(Object sender, XWikiEclipseEvent event, Object 
data)
+       {
+               switch (event)
+               {
+               case PAGE_UPDATED:
+                       IXWikiPage xwikiPage = (IXWikiPage) data;
+                       previewViewer.showPreview(xwikiPage);
+                       url.setText(xwikiPage.getUrl());
+
+                       break;
+               }
+
+       }
 }

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

Reply via email to