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