[jboss-svn-commits] JBL Code SVN: r21002 - in labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools: META-INF and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 10 17:21:26 EDT 2008
Author: john.graham at jboss.org
Date: 2008-07-10 17:21:26 -0400 (Thu, 10 Jul 2008)
New Revision: 21002
Added:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/VersionChooserDialog.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryContentProvider.java
Modified:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/AuthenticationPromptDialog.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java
Log:
Switch version action
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-07-10 21:21:26 UTC (rev 21002)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.6.0.200807091700
+Bundle-Version: 0.6.0.200807101720
Bundle-Activator: org.guvnor.tools.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-10 21:21:26 UTC (rev 21002)
@@ -111,12 +111,6 @@
label="%action.popup.switchversion"
menubarPath="org.guvnor.tools.popupmenu/group1">
</action>
- <action class="org.guvnor.tools.actions.CompareVersionAction"
- enablesFor="1"
- id="org.guvnor.tools.actions.compareversionaction"
- label="%action.popup.compareversion"
- menubarPath="org.guvnor.tools.popupmenu/group1">
- </action>
<action class="org.guvnor.tools.actions.ShowHistoryAction"
enablesFor="1"
id="org.guvnor.tools.actions.showhistoryaction"
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -23,7 +23,7 @@
private void decorateResource(IResource resource, IDecoration decoration) {
try {
- if (resource instanceof IFile) {
+ if (resource instanceof IFile) {
decoration.addOverlay(Activator.getImageDescriptor(Activator.IMG_GUVCONTROLLED),
IDecoration.TOP_RIGHT);
if (!GuvnorMetadataUtils.isGuvnorResourceCurrent(resource)) {
@@ -50,18 +50,13 @@
}
}
- public void addListener(ILabelProviderListener listener) {
- // TODO: Need to implement this?
- }
+ public void addListener(ILabelProviderListener listener) { }
public void dispose() { }
public boolean isLabelProperty(Object element, String property) {
- // TODO: Need to implement this?
return false;
}
- public void removeListener(ILabelProviderListener listener) {
- // TODO: Need to implement this?
- }
+ public void removeListener(ILabelProviderListener listener) { }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -3,10 +3,9 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.guvnor.tools.Activator;
@@ -18,6 +17,8 @@
private IFile selectedFile;
private GuvnorMetadataProps props;
+ private IWorkbenchPart targetPart;
+
/**
* Constructor for Action1.
*/
@@ -29,19 +30,20 @@
* @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ this.targetPart = targetPart;
}
/**
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
- Shell shell = new Shell();
- MessageDialog.openInformation(
- shell,
- "JBoss Guvnor Tools Plug-in",
- "Compare Verson was executed.");
+ if (selectedFile == null
+ || props == null
+ || targetPart == null) {
+ return;
+ }
}
-
+
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -87,7 +87,7 @@
verProps.load(ins);
ResourceHistoryView view = PlatformUtils.getResourceHistoryView();
if (view != null) {
- view.setEntries(verProps);
+ view.setEntries(repositoryLoc, fullPath, verProps);
}
}
} catch (Exception e) {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -1,23 +1,39 @@
package org.guvnor.tools.actions;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Properties;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.webdav.IResponse;
import org.guvnor.tools.Activator;
import org.guvnor.tools.utils.GuvnorMetadataProps;
import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
+import org.guvnor.tools.utils.VersionChooserDialog;
+import org.guvnor.tools.utils.webdav.IWebDavClient;
+import org.guvnor.tools.utils.webdav.ResourceProperties;
+import org.guvnor.tools.utils.webdav.WebDavClientFactory;
+import org.guvnor.tools.utils.webdav.WebDavException;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
public class SwitchVersionAction implements IObjectActionDelegate {
private IFile selectedFile;
private GuvnorMetadataProps props;
+ private IWorkbenchPart targetPart;
+
+ private IWebDavClient client;
+
/**
* Constructor for Action1.
*/
@@ -29,19 +45,78 @@
* @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ this.targetPart = targetPart;
}
/**
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
- Shell shell = new Shell();
- MessageDialog.openInformation(
- shell,
- "JBoss Guvnor Tools Plug-in",
- "Switch Version was executed.");
+ if (selectedFile == null
+ || props == null
+ || targetPart == null) {
+ return;
+ }
+ VersionChooserDialog dialog =
+ new VersionChooserDialog(targetPart.getSite().getShell(),
+ selectedFile.getName(),
+ getVersionEntries());
+ if (dialog.open() == VersionChooserDialog.OK) {
+ updateSelectedFile(dialog.getSelectedEntry().getRevision());
+ }
+ }
+
+ private void updateSelectedFile(String version) {
+ try {
+ InputStream ins = client.getResourceVersionInputStream(props.getFullpath(), version);
+ if (ins != null) {
+ selectedFile.setContents(ins, true, true, null);
+ client.closeResponse();
+ GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
+ ResourceProperties resProps = client.queryProperties(props.getFullpath());
+ client.closeResponse();
+ GuvnorMetadataProps mdProps = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
+ mdProps.setVersion(resProps.getLastModifiedDate());
+ GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
+ PlatformUtils.updateDecoration();
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
}
-
+ private ResourceHistoryEntry[] getVersionEntries() {
+ ResourceHistoryEntry[] entries = new ResourceHistoryEntry[0];
+ try {
+ client = WebDavServerCache.getWebDavClient(props.getRepository());
+ if (client == null) {
+ client = WebDavClientFactory.createClient(new URL(props.getRepository()));
+ WebDavServerCache.cacheWebDavClient(props.getRepository(), client);
+ }
+ InputStream ins = null;
+ try {
+ ins = client.getResourceVersions(props.getFullpath());
+ } catch (WebDavException wde) {
+ if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
+ // If not an authentication failure, we don't know what to do with it
+ throw wde;
+ }
+ boolean retry = PlatformUtils.getInstance().
+ authenticateForServer(props.getRepository(), client);
+ if (retry) {
+ ins = client.getResourceVersions(props.getFullpath());
+ }
+ }
+ if (ins != null) {
+ Properties verProps = new Properties();
+ verProps.load(ins);
+ entries = GuvnorMetadataUtils.parseHistoryProperties(verProps);
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ return entries;
+ }
+
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -3,8 +3,6 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
@@ -13,6 +11,7 @@
import org.guvnor.tools.Activator;
import org.guvnor.tools.utils.GuvnorMetadataProps;
import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
public class GuvnorWorkspaceFilePage extends PropertyPage implements IWorkbenchPropertyPage {
@@ -22,7 +21,7 @@
@Override
protected Control createContents(Composite parent) {
- Composite composite = createComposite(parent, 2);
+ Composite composite = PlatformUtils.createComposite(parent, 2);
IResource resource = (IResource)super.getElement().getAdapter(IResource.class);
if (resource != null) {
displayGuvnorProperties(composite, resource);
@@ -71,14 +70,4 @@
private void indicateNotGuvnorAssociated(Composite composite) {
new Label(composite, SWT.NONE).setText("(Not associated with Guvnor)");
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -14,7 +14,6 @@
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -27,6 +26,7 @@
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.TextPropertyDescriptor;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.PlatformUtils;
import org.guvnor.tools.views.model.TreeObject;
public class RepositoryElementPropsDialog extends TitleAreaDialog {
@@ -58,13 +58,13 @@
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
TabItem tab = new TabItem(folder, SWT.NONE);
tab.setText("Basic");
- Composite composite = createComposite(folder, 2);
+ Composite composite = PlatformUtils.createComposite(folder, 2);
tab.setControl(composite);
addElementProperties(composite);
tab = new TabItem(folder, SWT.NONE);
tab.setText("Security");
- composite = createComposite(folder, 2);
+ composite = PlatformUtils.createComposite(folder, 2);
tab.setControl(composite);
addSecurityProperties(composite);
@@ -109,7 +109,7 @@
new Label(composite, SWT.NONE).setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Composite pwgroup = createComposite(composite, 2);
+ Composite pwgroup = PlatformUtils.createComposite(composite, 2);
cbSavePassword = new Button(pwgroup, SWT.CHECK);
cbSavePassword.addSelectionListener(new SelectionListener() {
@@ -163,16 +163,6 @@
// Try to set a reasonable default size.
return new Point(INITIAL_WIDTH, INITIAL_HEIGHT);
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
public String getUsername() {
return username;
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/AuthenticationPromptDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/AuthenticationPromptDialog.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/AuthenticationPromptDialog.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -8,7 +8,6 @@
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -52,7 +51,7 @@
super.setMessage("Authentication required for repository: " + serverName);
super.setTitleImage(Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN).createImage());
- Composite composite = createComposite(parent, 2);
+ Composite composite = PlatformUtils.createComposite(parent, 2);
new Label(composite, SWT.NONE).setText("User Name: ");
unField = new Text(composite, SWT.SINGLE | SWT.BORDER);
unField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -73,7 +72,7 @@
new Label(composite, SWT.NONE).setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Composite pwgroup = createComposite(composite, 2);
+ Composite pwgroup = PlatformUtils.createComposite(composite, 2);
cbSavePassword = new Button(pwgroup, SWT.CHECK);
cbSavePassword.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) { }
@@ -104,16 +103,6 @@
return new Point(INITIAL_WIDTH, INITIAL_HEIGHT);
}
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
-
public String getUserName() {
return username;
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -5,6 +5,7 @@
private String repository;
private String fullpath;
private String version;
+ private String revision;
public GuvnorMetadataProps(String filename, String repository,
String fullpath, String version) {
@@ -12,6 +13,7 @@
this.repository = repository;
this.fullpath = fullpath;
this.version = version;
+// this.revision = revision;
}
public String getFilename() {
return filename;
@@ -37,4 +39,10 @@
public void setVersion(String version) {
this.version = version;
}
+ public String getRevision() {
+ return revision;
+ }
+ public void setRevision(String revision) {
+ this.revision = revision;
+ }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -4,7 +4,10 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
import java.util.Properties;
+import java.util.StringTokenizer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
@@ -15,6 +18,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.QualifiedName;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
/**
* A set of utilities for dealing with (local) Guvnor metadata.
@@ -161,4 +165,26 @@
private static QualifiedName generateQualifiedName(String attr) {
return new QualifiedName("org.guvnor.tools", attr);
}
+
+ public static ResourceHistoryEntry[] parseHistoryProperties(Properties entryProps) {
+ ResourceHistoryEntry[] entries = new ResourceHistoryEntry[entryProps.size()];
+ Enumeration<Object> en = entryProps.keys();
+ for (int i = 0; i < entryProps.size(); i++) {
+ String oneRevision = (String)en.nextElement();
+ String val = entryProps.getProperty(oneRevision);
+ StringTokenizer tokens = new StringTokenizer(val, ",");
+ String verDate = null;
+ String author = null;
+ String comment = null;
+ try {
+ verDate = tokens.nextToken();
+ author = tokens.nextToken();
+ comment = tokens.nextToken();
+ } catch (NoSuchElementException e) {
+ // Don't care if some fields are missing
+ }
+ entries[i] = new ResourceHistoryEntry(oneRevision, verDate, author, comment);
+ }
+ return entries;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -9,8 +9,14 @@
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IDecoratorManager;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IStorageEditorInput;
@@ -47,6 +53,16 @@
return instance;
}
+ public static Composite createComposite(Composite parent, int numColumns) {
+ Composite composite = new Composite(parent, SWT.NULL);
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ return composite;
+ }
+
/**
* Causes the platform to update Guvnor decoration notions.
*/
@@ -120,6 +136,43 @@
}
}
+ public static Table createResourceHistoryTable(Composite parent) {
+ int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL |
+ SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+
+ Table table = new Table(parent, style);
+
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.grabExcessVerticalSpace = true;
+ gridData.horizontalSpan = 3;
+ table.setLayoutData(gridData);
+
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+ column.setResizable(true);
+ column.setText("Revision");
+ column.setWidth(100);
+
+ column = new TableColumn(table, SWT.LEFT, 1);
+ column.setResizable(true);
+ column.setText("Date");
+ column.setWidth(175);
+
+ column = new TableColumn(table, SWT.LEFT, 2);
+ column.setResizable(true);
+ column.setText("Author");
+ column.setWidth(200);
+
+ column = new TableColumn(table, SWT.CENTER, 3);
+ column.setResizable(true);
+ column.setText("Comment");
+ column.setWidth(350);
+
+ return table;
+ }
+
public boolean authenticateForServer(String server, IWebDavClient client) throws Exception {
AuthPromptResults res = promptForAuthentication(server);
if (res != null) {
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/VersionChooserDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/VersionChooserDialog.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/VersionChooserDialog.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -0,0 +1,78 @@
+package org.guvnor.tools.utils;
+
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.views.ResourceHistoryContentProvider;
+import org.guvnor.tools.views.ResourceHistoryLabelProvider;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
+
+public class VersionChooserDialog extends TitleAreaDialog {
+
+ private static final int INITIAL_WIDTH = 790;
+ private static final int INITIAL_HEIGHT = 350;
+
+ private String fileName;
+ private ResourceHistoryEntry[] entries;
+
+ private ResourceHistoryEntry selectedEntry;
+
+ private TableViewer viewer;
+
+ public VersionChooserDialog(Shell parentShell, String fileName, ResourceHistoryEntry[] entries) {
+ super(parentShell);
+ super.setShellStyle(getShellStyle() | SWT.RESIZE);
+ this.entries = entries;
+ this.fileName = fileName;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ super.setTitle("Resource Versions");
+ super.setMessage("Choose a version for " + fileName);
+ super.setTitleImage(Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN).createImage());
+
+ viewer = new TableViewer(PlatformUtils.createResourceHistoryTable(parent));
+ viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ viewer.setContentProvider(new ResourceHistoryContentProvider(entries));
+ viewer.setLabelProvider(new ResourceHistoryLabelProvider());
+ viewer.setInput(this);
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ if (viewer.getSelection() instanceof IStructuredSelection) {
+ IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
+ if (sel.getFirstElement() instanceof ResourceHistoryEntry) {
+ selectedEntry = (ResourceHistoryEntry)sel.getFirstElement();
+ }
+ }
+ }
+ });
+
+ if (entries.length > 0) {
+ viewer.getTable().setSelection(0);
+ selectedEntry = entries[0];
+ }
+
+ return super.createDialogArea(parent);
+ }
+
+ @Override
+ protected Point getInitialSize() {
+ // Try to set a reasonable default size.
+ return new Point(INITIAL_WIDTH, INITIAL_HEIGHT);
+ }
+
+ public ResourceHistoryEntry getSelectedEntry() {
+ return selectedEntry;
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -8,7 +8,7 @@
import org.eclipse.webdav.http.client.IAuthenticator;
/**
- * Client methods for interacting with WebDav.
+ * Client methods for interacting with Guvnor through WebDav.
* @author jgraham
*/
public interface IWebDavClient {
@@ -33,7 +33,7 @@
public IContext createContext();
/**
- * Lists a directory (collection) in WebDav.
+ * Lists a directory (collection) in Guvnor through WebDav.
* @param path The directory (collection) to list
* @return An association of directory content names and their properties
* @throws Exception Various WebDav errors can occur (See IResponse for details)
@@ -49,7 +49,7 @@
public ResourceProperties queryProperties(String resource) throws Exception;
/**
- * Get the contents of a resource from a WebDav repository.
+ * Get the contents of a resource from Guvnor through WebDav.
* @param resource The address of the resource
* @return The contents of the resource
* @throws Exception Various WebDav errors can occur (See IResponse for details)
@@ -57,20 +57,38 @@
public String getResourceContents(String resource) throws Exception;
/**
- * Get the <code>InputStream</code> of a resource from a WebDav repository.
+ * Get the contents for a specific version of a resource from a Guvnor repository.
* @param resource The address of the resource
+ * @param version The version number of the resource
+ * @return The contents of the resource
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
+ */
+ public String getResourceVersionContents(String resource, String version) throws Exception;
+
+ /**
+ * Get the <code>InputStream</code> of a resource from Guvnor through WebDav.
+ * @param resource The address of the resource
* @return An code>InputStream</code> for the resource
* @throws Exception Various WebDav errors can occur (See IResponse for details)
*/
public InputStream getResourceInputStream(String resource) throws Exception;
/**
+ * Get the <code>InputStream</code> for a specific version of a resource from Guvnor through WebDav.
+ * @param resource The address of the resource
+ * @param version The version number of the resource
+ * @return An code>InputStream</code> for the resource
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
+ */
+ public InputStream getResourceVersionInputStream(String resource, String version) throws Exception;
+
+ /**
* Same as createResource(resource, is, true)
*/
public boolean createResource(String resource, InputStream is) throws Exception;
/**
- * Creates a file in the WebDav repository
+ * Creates a file in Guvnor through WebDav.
* @param resource The path and name of the resource
* @param is A stream to the file contents
* @param overwrite Whether to overwrite the file if it already exists
@@ -80,7 +98,7 @@
public boolean createResource(String resource, InputStream is, boolean overwrite) throws Exception;
/**
- * Write a file to the WebDav repository
+ * Write a file to Guvnor through WebDav.
* @param resource The path and name of the resource
* @param is A stream to the file contents
* @throws Exception Various WebDav errors can occur (See IResponse for details)
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -4,6 +4,7 @@
private boolean isDirectory;
private String creationDate;
private String lastModifiedDate;
+ private String revision;
private String base;
public String getBase() {
@@ -30,4 +31,10 @@
public void setLastModifiedDate(String lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
+ public String getRevision() {
+ return revision != null?revision:"";
+ }
+ public void setRevision(String revision) {
+ this.revision = revision;
+ }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -2,7 +2,10 @@
import java.io.InputStream;
import java.net.URL;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Properties;
+import java.util.StringTokenizer;
import org.eclipse.webdav.IContext;
import org.eclipse.webdav.ILocator;
@@ -81,9 +84,35 @@
throw new WebDavException("WebDav error: " + response.getStatusCode(),
response.getStatusCode());
}
- return StreamProcessingUtils.parseListing(path, response.getInputStream());
+ Map<String, ResourceProperties> res = StreamProcessingUtils.
+ parseListing(path, response.getInputStream());
+ addGuvnorResourceProperties(res, path);
+ return res;
}
+ private void addGuvnorResourceProperties(Map<String, ResourceProperties> props,
+ String path) throws Exception {
+ try {
+ String apiVer = changeToAPICall(path);
+ Properties guvProps = new Properties();
+ guvProps.load(getResourceInputStream(apiVer));
+ for (Iterator<String> it = props.keySet().iterator(); it.hasNext();) {
+ String oneKey = it.next();
+ String val = guvProps.getProperty(oneKey);
+ if (val != null) {
+ ResourceProperties resProps = props.get(oneKey);
+ StringTokenizer tokens = new StringTokenizer(val, ",");
+ String dateStamp = tokens.nextToken();
+ String revision = tokens.nextToken();
+ resProps.setLastModifiedDate(dateStamp);
+ resProps.setRevision(revision);
+ }
+ }
+ } catch (Exception e) {
+//TODO: Getting some server internal errors here. Why?
+ }
+ }
+
/*
* (non-Javadoc)
* @see org.guvnor.tools.utils.webdav.IWebDavClient#queryProperties(java.lang.String)
@@ -103,9 +132,36 @@
if (props.keySet().size() != 1) {
throw new Exception(props.keySet().size() + " entries found for " + resource);
}
- return props.get(props.keySet().iterator().next());
+ String filename = props.keySet().iterator().next();
+ ResourceProperties res = props.get(filename);
+ addGuvnorResourceProperties(res, filename, resource);
+ return res;
}
+ private void addGuvnorResourceProperties(ResourceProperties props,
+ String filename, String resource) throws Exception {
+ if (props == null) {
+ return;
+ }
+ try {
+ String path = resource.substring(0, resource.lastIndexOf('/'));
+ String apiVer = changeToAPICall(path);
+ Properties guvProps = new Properties();
+ guvProps.load(getResourceInputStream(apiVer));
+ String val = guvProps.getProperty(filename);
+ if (val != null) {
+ StringTokenizer tokens = new StringTokenizer(val, ",");
+ String dateStamp = tokens.nextToken();
+ String revision = tokens.nextToken();
+ props.setLastModifiedDate(dateStamp);
+ props.setRevision(revision);
+ }
+ } catch (Exception e) {
+//TODO: Getting some server internal errors here. Why?
+ System.out.println(e.getMessage());
+ }
+ }
+
/*
* (non-Javadoc)
* @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceContents(java.lang.String)
@@ -116,6 +172,15 @@
/*
* (non-Javadoc)
+ * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceVersionContents(java.lang.String, java.lang.String)
+ */
+ public String getResourceVersionContents(String resource, String version) throws Exception {
+ String apiVer = changeToAPICall(resource) + "?version=" + version;
+ return getResourceContents(apiVer);
+ }
+
+ /*
+ * (non-Javadoc)
* @see org.guvnor.tools.utils.webdav.IWebDavClient#getInputStream(java.lang.String)
*/
public InputStream getResourceInputStream(String resource) throws Exception {
@@ -130,6 +195,15 @@
/*
* (non-Javadoc)
+ * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceVersionInputStream(java.lang.String, java.lang.String)
+ */
+ public InputStream getResourceVersionInputStream(String resource, String version) throws Exception {
+ String apiVer = changeToAPICall(resource) + "?version=" + version;
+ return getResourceInputStream(apiVer);
+ }
+
+ /*
+ * (non-Javadoc)
* @see org.guvnor.tools.utils.webdav.IWebDavClient#createResource(java.lang.String, java.io.InputStream)
*/
public boolean createResource(String resource, InputStream is) throws Exception {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -56,8 +56,8 @@
private TreeViewer viewer;
private DrillDownAdapter drillDownAdapter;
- private Action deleteRepositoryLoc;
- private Action addRepositoryLoc;
+ private Action deleteRepositoryLocAction;
+ private Action addRepositoryLocAction;
private Action doubleClickAction;
class NameSorter extends ViewerSorter {
@@ -199,14 +199,14 @@
}
private void fillLocalPullDown(IMenuManager manager) {
- manager.add(deleteRepositoryLoc);
+ manager.add(deleteRepositoryLocAction);
manager.add(new Separator());
- manager.add(addRepositoryLoc);
+ manager.add(addRepositoryLocAction);
}
private void fillContextMenu(IMenuManager manager) {
- manager.add(deleteRepositoryLoc);
- manager.add(addRepositoryLoc);
+ manager.add(deleteRepositoryLocAction);
+ manager.add(addRepositoryLocAction);
manager.add(new Separator());
drillDownAdapter.addNavigationActions(manager);
// Other plug-ins can contribute there actions here
@@ -214,14 +214,14 @@
}
private void fillLocalToolBar(IToolBarManager manager) {
- manager.add(deleteRepositoryLoc);
- manager.add(addRepositoryLoc);
+ manager.add(deleteRepositoryLocAction);
+ manager.add(addRepositoryLocAction);
manager.add(new Separator());
drillDownAdapter.addNavigationActions(manager);
}
private void makeActions() {
- deleteRepositoryLoc = new Action() {
+ deleteRepositoryLocAction = new Action() {
public void run() {
ISelection selection = viewer.getSelection();
Object obj = ((IStructuredSelection)selection).getFirstElement();
@@ -235,12 +235,12 @@
}
}
};
- deleteRepositoryLoc.setText("Delete");
- deleteRepositoryLoc.setToolTipText("Delete Guvnor repository location");
- deleteRepositoryLoc.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ deleteRepositoryLocAction.setText("Delete");
+ deleteRepositoryLocAction.setToolTipText("Delete Guvnor repository location");
+ deleteRepositoryLocAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
- addRepositoryLoc = new Action() {
+ addRepositoryLocAction = new Action() {
public void run() {
NewRepLocationWizard wiz = new NewRepLocationWizard();
wiz.init(Activator.getDefault().getWorkbench(), null);
@@ -250,9 +250,9 @@
dialog.open();
}
};
- addRepositoryLoc.setText("Add");
- addRepositoryLoc.setToolTipText("Add a Guvnor respository location");
- addRepositoryLoc.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ addRepositoryLocAction.setText("Add");
+ addRepositoryLocAction.setToolTipText("Add a Guvnor respository location");
+ addRepositoryLocAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
doubleClickAction = new Action() {
public void run() {
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryContentProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryContentProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryContentProvider.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -0,0 +1,24 @@
+package org.guvnor.tools.views;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
+/**
+ * Structured content provider for resource history tables, etc.
+ * @author jgraham
+ *
+ */
+public class ResourceHistoryContentProvider implements IStructuredContentProvider {
+ private ResourceHistoryEntry[] entries;
+
+ public ResourceHistoryContentProvider(ResourceHistoryEntry[] entries) {
+ this.entries = entries;
+ }
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+ public void dispose() {
+ }
+ public Object[] getElements(Object parent) {
+ return entries;
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -1,82 +1,169 @@
package org.guvnor.tools.views;
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
+import java.net.URL;
import java.util.Properties;
-import java.util.StringTokenizer;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+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.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
+import org.eclipse.webdav.IResponse;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
+import org.guvnor.tools.utils.webdav.IWebDavClient;
+import org.guvnor.tools.utils.webdav.WebDavClientFactory;
+import org.guvnor.tools.utils.webdav.WebDavException;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
import org.guvnor.tools.views.model.ResourceHistoryEntry;
+/**
+ * View showing the versions of a given resource.
+ *
+ * @author jgraham
+ *
+ */
public class ResourceHistoryView extends ViewPart {
+ private Label repositoryLabel;
+ private Label resourceLabel;
+
private TableViewer viewer;
- private ResourceHistoryEntry[] entries;
+ private Action showVersionAction;
/**
* The constructor.
*/
- public ResourceHistoryView() {
- entries = new ResourceHistoryEntry[0];
- }
+ public ResourceHistoryView() { }
public void createPartControl(Composite parent) {
+
+ Composite composite = PlatformUtils.createComposite(parent, 1);
- viewer = new TableViewer(createTable(parent));
+ repositoryLabel = new Label(composite, SWT.NONE);
+ repositoryLabel.setText("Repository: ");
+ repositoryLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ resourceLabel = new Label(composite, SWT.NONE);
+ resourceLabel.setText("Resource: ");
+ resourceLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ viewer = new TableViewer(PlatformUtils.createResourceHistoryTable(composite));
viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
- viewer.setContentProvider(new ResourceHistoryViewContentProvider());
+ viewer.setContentProvider(new ResourceHistoryContentProvider(new ResourceHistoryEntry[0]));
viewer.setLabelProvider(new ResourceHistoryLabelProvider());
viewer.setInput(getViewSite());
+
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
}
-
- private Table createTable(Composite parent) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL |
- SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
- Table table = new Table(parent, style);
-
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.grabExcessVerticalSpace = true;
- gridData.horizontalSpan = 3;
- table.setLayoutData(gridData);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- TableColumn column = new TableColumn(table, SWT.LEFT, 0);
- column.setResizable(true);
- column.setText("Revision");
- column.setWidth(100);
-
- column = new TableColumn(table, SWT.LEFT, 1);
- column.setResizable(true);
- column.setText("Date");
- column.setWidth(175);
-
- column = new TableColumn(table, SWT.LEFT, 2);
- column.setResizable(true);
- column.setText("Author");
- column.setWidth(200);
-
- column = new TableColumn(table, SWT.CENTER, 3);
- column.setResizable(true);
- column.setText("Comment");
- column.setWidth(350);
-
- return table;
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ ResourceHistoryView.this.fillContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
}
-
+
+ private void fillContextMenu(IMenuManager manager) {
+ manager.add(showVersionAction);
+ manager.add(new Separator());
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ showResourceVersionContents();
+ }
+ });
+ }
+
+ private void makeActions() {
+ showVersionAction = new Action() {
+ public void run() {
+ showResourceVersionContents();
+ }
+ };
+ showVersionAction.setText("Open (read-only)");
+ showVersionAction.setToolTipText("Opens a read-only editor with the version contents");
+ showVersionAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(ISharedImages.IMG_OBJ_FILE));
+ }
+
+ private void showResourceVersionContents() {
+ String repository = repositoryLabel.getToolTipText();
+ String fullPath = resourceLabel.getToolTipText();
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if (obj instanceof ResourceHistoryEntry) {
+ ResourceHistoryEntry theEntry = (ResourceHistoryEntry)obj;
+ try {
+ IWebDavClient client = WebDavServerCache.getWebDavClient(repository);
+ if (client == null) {
+ client = WebDavClientFactory.createClient(new URL(repository));
+ WebDavServerCache.cacheWebDavClient(repository, client);
+ }
+ String contents = null;
+ try {
+ contents = client.getResourceVersionContents(fullPath, theEntry.getRevision());
+ } catch (WebDavException wde) {
+ if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
+ // If not an authentication failure, we don't know what to do with it
+ client.closeResponse();
+ throw wde;
+ }
+ boolean retry = PlatformUtils.getInstance().
+ authenticateForServer(repository, client);
+ if (retry) {
+ contents = client.getResourceVersionContents(fullPath, theEntry.getRevision());
+ }
+ }
+ client.closeResponse();
+ if (contents != null) {
+ String editorTitle = null;
+ int pos = fullPath.lastIndexOf("/");
+ if (pos != -1
+ && pos + 1 < fullPath.length()) {
+ editorTitle = fullPath.substring(pos + 1);
+ } else {
+ editorTitle = fullPath;
+ }
+ PlatformUtils.openEditor(contents, editorTitle + ", " + theEntry.getRevision());
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+ }
+
/**
* Passing the focus request to the viewer's control.
*/
@@ -84,38 +171,13 @@
viewer.getControl().setFocus();
}
- public void setEntries(Properties entryProps) {
- entries = new ResourceHistoryEntry[entryProps.size()];
- Enumeration<Object> en = entryProps.keys();
- int i = 0;
- while (en.hasMoreElements()) {
- String oneRevision = (String)en.nextElement();
- String val = entryProps.getProperty(oneRevision);
- StringTokenizer tokens = new StringTokenizer(val, ",");
- String verDate = null;
- String author = null;
- String comment = null;
- try {
- verDate = tokens.nextToken();
- author = tokens.nextToken();
- comment = tokens.nextToken();
- } catch (NoSuchElementException e) {
- // Don't care if some fields are missing
- }
- entries[i] = new ResourceHistoryEntry(oneRevision, verDate, author, comment);
- i++;
- }
- viewer.setContentProvider(new ResourceHistoryViewContentProvider());
+ public void setEntries(String repository, String fullPath, Properties entryProps) {
+ repositoryLabel.setText("Repository: " + repository);
+ repositoryLabel.setToolTipText(repository);
+ resourceLabel.setText("Resource: " + fullPath.substring(repository.length()));
+ resourceLabel.setToolTipText(fullPath);
+ ResourceHistoryEntry[] entries = GuvnorMetadataUtils.parseHistoryProperties(entryProps);
+ viewer.setContentProvider(new ResourceHistoryContentProvider(entries));
viewer.setInput(getViewSite());
}
-
- class ResourceHistoryViewContentProvider implements IStructuredContentProvider {
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
- public void dispose() {
- }
- public Object[] getElements(Object parent) {
- return entries;
- }
- }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -22,7 +22,8 @@
new TextPropertyDescriptor("location", "Location"),
new TextPropertyDescriptor("type", "Type"),
new TextPropertyDescriptor("creationdate", "Created"),
- new TextPropertyDescriptor("lastmodified", "Last Modified")
+ new TextPropertyDescriptor("lastmodified", "Last Modified"),
+ new TextPropertyDescriptor("revision", "Revision")
};
}
@@ -50,6 +51,9 @@
if (id.equals("lastmodified")) {
return node.getResourceProps().getLastModifiedDate();
}
+ if (id.equals("revision")) {
+ return node.getResourceProps().getRevision();
+ }
return "";
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -18,12 +18,12 @@
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.PlatformUtils;
public class GuvnorMainConfigPage extends WizardPage {
@@ -36,6 +36,8 @@
private Button cbSavePassword;
private boolean saveAuthInfo;
+ private Label warningLabel;
+
public GuvnorMainConfigPage(String pageName) {
super(pageName);
}
@@ -46,7 +48,7 @@
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 2);
+ Composite composite = PlatformUtils.createComposite(parent, 2);
new Label(composite, SWT.NONE).setText("Location: ");
serverField = new Text(composite, SWT.SINGLE | SWT.BORDER);
serverField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -97,13 +99,14 @@
new Label(composite, SWT.NONE).setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Composite pwgroup = createComposite(composite, 2);
+ Composite pwgroup = PlatformUtils.createComposite(composite, 2);
cbSavePassword = new Button(pwgroup, SWT.CHECK);
cbSavePassword.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) { }
public void widgetSelected(SelectionEvent e) {
saveAuthInfo = cbSavePassword.getSelection();
+ warningLabel.setEnabled(saveAuthInfo);
updateModel();
}
@@ -115,7 +118,8 @@
new Label(pwgroup, SWT.NONE).setText("Save user name and password");
new Label(composite, SWT.NONE).setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- new Label(composite, SWT.WRAP).setText("NOTE: Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read.");
+ warningLabel = new Label(composite, SWT.WRAP);
+ warningLabel.setText("NOTE: Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read.");
super.setControl(composite);
}
@@ -176,16 +180,6 @@
}
}
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
-
private void updateModel() {
GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
try {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -9,11 +9,11 @@
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.guvnor.tools.Activator;
import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.PlatformUtils;
import org.guvnor.tools.views.RepositoryContentProvider;
import org.guvnor.tools.views.RepositoryLabelProvider;
import org.guvnor.tools.views.model.TreeObject;
@@ -33,7 +33,7 @@
}
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
+ Composite composite = PlatformUtils.createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("Select folder:");
viewer = new TreeViewer(composite, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -100,16 +100,6 @@
}
super.setVisible(visible);
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
@SuppressWarnings("unchecked")
private void updateModel() {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -6,13 +6,13 @@
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.guvnor.tools.Activator;
import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.PlatformUtils;
public class SelectGuvnorRepPage extends WizardPage {
@@ -29,7 +29,7 @@
}
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
+ Composite composite = PlatformUtils.createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("This wizard allow you to check out resource from a Guvnor repository");
createRep = new Button(composite, SWT.RADIO);
@@ -82,16 +82,6 @@
}
}
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
-
private void updateModel() {
GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
if (createRep.getSelection()) {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -12,11 +12,11 @@
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.guvnor.tools.Activator;
import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.PlatformUtils;
import org.guvnor.tools.views.RepositoryContentProvider;
import org.guvnor.tools.views.RepositoryLabelProvider;
import org.guvnor.tools.views.model.TreeObject;
@@ -35,7 +35,7 @@
}
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
+ Composite composite = PlatformUtils.createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("Select resources:");
viewer = new TreeViewer(composite, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -102,16 +102,6 @@
}
super.setVisible(visible);
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
@SuppressWarnings("unchecked")
private void updateModel() {
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -12,11 +12,11 @@
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.guvnor.tools.utils.PlatformUtils;
public class SelectLocalTargetPage extends WizardPage {
@@ -31,7 +31,7 @@
}
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
+ Composite composite = PlatformUtils.createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("Select location:");
viewer = new TreeViewer(composite, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -48,16 +48,6 @@
viewer.setInput(ResourcesPlugin.getWorkspace());
super.setControl(composite);
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
private void updateModel() {
IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java 2008-07-10 19:27:42 UTC (rev 21001)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java 2008-07-10 21:21:26 UTC (rev 21002)
@@ -4,10 +4,10 @@
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
+import org.guvnor.tools.utils.PlatformUtils;
public class SelectResourceVersionPage extends WizardPage {
@@ -22,7 +22,7 @@
}
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
+ Composite composite = PlatformUtils.createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("Select version:");
versions = new List(composite, SWT.BORDER | SWT.MULTI);
@@ -39,14 +39,4 @@
versions.add("v20080705");
versions.setSelection(0);
}
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
}
More information about the jboss-svn-commits
mailing list