[jboss-svn-commits] JBL Code SVN: r20986 - in labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools: META-INF and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 9 17:11:42 EDT 2008


Author: john.graham at jboss.org
Date: 2008-07-09 17:11:42 -0400 (Wed, 09 Jul 2008)
New Revision: 20986

Added:
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryLabelProvider.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/ResourceHistoryEntry.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.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/actions/AddAction.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/actions/UpdateAction.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/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/WebDavClient.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.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/TreeParent.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.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/WizardUtils.java
Log:
Initial version history support; add action implemented

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF	2008-07-09 21:11:42 UTC (rev 20986)
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.6.0.200807071811
+Bundle-Version: 0.6.0.200807091700
 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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml	2008-07-09 21:11:42 UTC (rev 20986)
@@ -79,12 +79,18 @@
   	<objectContribution objectClass="org.guvnor.tools.views.model.TreeObject"
                         adaptable="true"
                         id="org.guvnor.tools.view.model.actions">
-    	<action label="%action.properties"
+        <action label="%action.properties"
                 tooltip="%action.properties.tooltip"
                 class="org.guvnor.tools.actions.RepositoryElementPropsAction"
                 menubarPath="additions"
                 id="org.guvnor.tools.view.model.actions.properties">
-         </action>
+        </action>
+        <action class="org.guvnor.tools.actions.ShowHistoryAction"
+                enablesFor="1"
+                id="org.guvnor.tools.actions.showhistoryaction"
+                label="%action.popup.showhistory"
+                menubarPath="additions">
+        </action>
   	</objectContribution>
     <objectContribution id="org.guvnor.tools.contribution1"
                         objectClass="org.eclipse.core.resources.IFile">

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -3,20 +3,22 @@
 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.jface.wizard.WizardDialog;
 import org.eclipse.ui.IActionDelegate;
 import org.eclipse.ui.IObjectActionDelegate;
 import org.eclipse.ui.IWorkbenchPart;
 import org.guvnor.tools.Activator;
 import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
+import org.guvnor.tools.wizards.AddResourceWizard;
 
 public class AddAction implements IObjectActionDelegate {
 	
-	private IFile selectedFile;
-
+	private IStructuredSelection sel;
+	private IWorkbenchPart targetPart;
+	
 	/**
 	 * Constructor for Action1.
 	 */
@@ -28,34 +30,37 @@
 	 * @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",
-			"Show History was executed.");
+		assert(targetPart != null && sel != null);
+		AddResourceWizard wiz = new AddResourceWizard();
+		wiz.init(Activator.getDefault().getWorkbench(), sel);
+		WizardDialog dialog = new WizardDialog(targetPart.getSite().getShell(), wiz);
+	    dialog.create();
+	    if (dialog.open() == WizardDialog.OK) {
+	    	PlatformUtils.refreshRepositoryView();
+	    }
 	}
-
+	
 	/**
 	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
 	 */
 	public void selectionChanged(IAction action, ISelection selection) {
 		// Reset state to default
-		selectedFile = null;
+		sel = null;
 		action.setEnabled(false);
 		// See if we should enable for the selection
 		try {
 			if (selection instanceof IStructuredSelection) {
-				IStructuredSelection sel = (IStructuredSelection)selection;
+				sel = (IStructuredSelection)selection;
 				if (sel.getFirstElement() instanceof IFile) {
 					IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata((IFile)sel.getFirstElement());
 					if (mdFile == null) {
-						selectedFile = (IFile)sel.getFirstElement();
 						action.setEnabled(true);
 					}
 				}

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -54,7 +54,8 @@
 		try {
 			if (selection instanceof IStructuredSelection) {
 				IStructuredSelection sel = (IStructuredSelection)selection;
-				if (sel.getFirstElement() instanceof IFile) {
+				if (sel.getFirstElement() instanceof IFile
+				   && sel.size() == 1) {
 					props = GuvnorMetadataUtils.getGuvnorMetadata((IFile)sel.getFirstElement());
 					if (props != null) {
 						selectedFile = (IFile)sel.getFirstElement();

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -1,21 +1,33 @@
 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.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.ResourceHistoryView;
+import org.guvnor.tools.views.model.TreeObject;
 
 public class ShowHistoryAction implements IObjectActionDelegate {
 	
 	private IFile selectedFile;
+	private TreeObject selectedNode;
 	private GuvnorMetadataProps props;
 	
 	/**
@@ -35,35 +47,89 @@
 	 * @see IActionDelegate#run(IAction)
 	 */
 	public void run(IAction action) {
-		Shell shell = new Shell();
-		MessageDialog.openInformation(
-			shell,
-			"JBoss Guvnor Tools Plug-in",
-			"Show History was executed.");
+		String repositoryLoc = null;
+		String fullPath = null;
+		
+		if (selectedNode != null) {
+			repositoryLoc = selectedNode.getGuvnorRepository().getLocation();
+			fullPath = selectedNode.getFullPath();
+		} else {
+			if (selectedFile == null
+		       || props == null) {
+				return;
+			}
+			repositoryLoc = props.getRepository();
+			fullPath = props.getFullpath();
+		}
+		
+		try {
+			IWebDavClient client = WebDavServerCache.getWebDavClient(repositoryLoc);
+			if (client == null) {
+				client = WebDavClientFactory.createClient(new URL(repositoryLoc));
+				WebDavServerCache.cacheWebDavClient(repositoryLoc, client);
+			}
+			InputStream ins = null;
+			try {
+				ins = client.getResourceVersions(fullPath);
+			} 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(repositoryLoc, client); 
+				if (retry) {
+					ins = client.getResourceVersions(fullPath);
+				}
+			}
+			if (ins != null) {
+				Properties verProps = new Properties();
+				verProps.load(ins);
+				ResourceHistoryView view = PlatformUtils.getResourceHistoryView();
+				if (view != null) {
+					view.setEntries(verProps);
+				}
+			}
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
 	}
 
 	/**
 	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
-	 */
+	 */	
 	public void selectionChanged(IAction action, ISelection selection) {
 		// Reset state to default
 		selectedFile = null;
+		selectedNode = null;
 		props = null;
 		action.setEnabled(false);
-		// See if we should enable for the selection
-		try {
-			if (selection instanceof IStructuredSelection) {
-				IStructuredSelection sel = (IStructuredSelection)selection;
-				if (sel.getFirstElement() instanceof IFile) {
-					props = GuvnorMetadataUtils.getGuvnorMetadata((IFile)sel.getFirstElement());
-					if (props != null) {
-						selectedFile = (IFile)sel.getFirstElement();
-						action.setEnabled(true);
-					}
+		
+		if (!(selection instanceof IStructuredSelection)) {
+			return;
+		}
+		
+		IStructuredSelection sel = (IStructuredSelection)selection;
+		if (sel.size() != 1) {
+			return;
+		}
+		
+		if (sel.getFirstElement() instanceof IFile) {
+			try {
+				props = GuvnorMetadataUtils.getGuvnorMetadata((IFile)sel.getFirstElement());
+				if (props != null) {
+					selectedFile = (IFile)sel.getFirstElement();
+					action.setEnabled(true);
 				}
-			} 
-		} catch (Exception e) {
-			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+			} catch (Exception e) {
+				Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+			}
 		}
+		if (sel.getFirstElement() instanceof TreeObject) {
+			if (((TreeObject)sel.getFirstElement()).getNodeType() == TreeObject.Type.RESOURCE) {
+				selectedNode = (TreeObject)sel.getFirstElement();
+				action.setEnabled(true);
+			}
+		}
 	}
 }

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -54,7 +54,8 @@
 		try {
 			if (selection instanceof IStructuredSelection) {
 				IStructuredSelection sel = (IStructuredSelection)selection;
-				if (sel.getFirstElement() instanceof IFile) {
+				if (sel.getFirstElement() instanceof IFile
+				   && sel.size() == 1) {
 					props = GuvnorMetadataUtils.getGuvnorMetadata((IFile)sel.getFirstElement());
 					if (props != null) {
 						selectedFile = (IFile)sel.getFirstElement();

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -57,7 +57,7 @@
 			}
 			InputStream ins = null;
 			try {
-				ins = client.getInputStream(props.getFullpath());
+				ins = client.getResourceInputStream(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
@@ -66,7 +66,7 @@
 				boolean retry = PlatformUtils.getInstance().
 									authenticateForServer(props.getRepository(), client); 
 				if (retry) {
-					ins = client.getInputStream(props.getFullpath());
+					ins = client.getResourceInputStream(props.getFullpath());
 				}
 			}
 			if (ins != null) {

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/AuthenticationPromptDialog.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -38,6 +38,8 @@
 	private String password;
 	private boolean saveInfo;
 	
+	private Label warningLabel;
+	
 	public AuthenticationPromptDialog(Shell parentShell, String serverName) {
 		super(parentShell);
 		super.setShellStyle(getShellStyle() | SWT.RESIZE);
@@ -78,6 +80,7 @@
 
 			public void widgetSelected(SelectionEvent e) {
 				saveInfo = cbSavePassword.getSelection();
+				warningLabel.setEnabled(saveInfo);
 			}
 			
 		});
@@ -89,7 +92,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.");
 		
 		return super.createDialogArea(parent);
 	}

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -23,6 +23,9 @@
 import org.guvnor.tools.utils.webdav.WebDavClientFactory;
 import org.guvnor.tools.utils.webdav.WebDavServerCache;
 import org.guvnor.tools.utils.webdav.WebDavSessionAuthenticator;
+import org.guvnor.tools.views.IGuvnorConstants;
+import org.guvnor.tools.views.RepositoryView;
+import org.guvnor.tools.views.ResourceHistoryView;
 
 /**
  * A set of utilities for interacting with the Eclipse platform.
@@ -44,11 +47,54 @@
 		return instance;
 	}
 	
+	/**
+	 * Causes the platform to update Guvnor decoration notions.
+	 */
 	public static void updateDecoration() {
 		IDecoratorManager manager = Activator.getDefault().getWorkbench().getDecoratorManager();
 		manager.update(GuvnorDecorator.DECORATOR_ID);
 	}
+	
 	/**
+	 * Causes the Repository view to refresh, if it is open.
+	 */
+	public static void refreshRepositoryView() {
+		IWorkbenchWindow activeWindow = Activator.getDefault().
+											getWorkbench().getActiveWorkbenchWindow();
+		// If there is no active workbench window, then there can be no Repository view
+		if (activeWindow == null) {
+			return;
+		}
+		// If there is no active workbench page, then there can be no Repository view
+		IWorkbenchPage page = activeWindow.getActivePage();
+		if (page == null) {
+			return;
+		}
+		RepositoryView view = (RepositoryView)page.findView(IGuvnorConstants.REPVIEW_ID);
+		if (view != null) {
+			view.refresh();
+		}
+	}
+	
+	/**
+	 * Tries to find the Resource History view, attempting to open it if necessary.
+	 */
+	public static ResourceHistoryView getResourceHistoryView() throws Exception {
+		IWorkbenchWindow activeWindow = Activator.getDefault().
+											getWorkbench().getActiveWorkbenchWindow();
+		// If there is no active workbench window, then there can be no Repository History view
+		if (activeWindow == null) {
+			return null;
+		}
+		// If there is no active workbench page, then there can be no Repository History view
+		IWorkbenchPage page = activeWindow.getActivePage();
+		if (page == null) {
+			return null;
+		}
+		return (ResourceHistoryView)page.showView(IGuvnorConstants.RESHISTORYVIEW_ID);
+	}
+	
+	/**
 	 * Opens a read-only, in-memory editor.
 	 * @param contents The contents for the editor
 	 * @param name The name of the file. Will be used to determine
@@ -83,7 +129,6 @@
 				WebDavSessionAuthenticator authen = new WebDavSessionAuthenticator();
 				authen.addAuthenticationInfo(new URL(server), "", "basic", res.getAuthInfo());
 				client.setSessionAuthenticator(authen);
-				client.setSessionAuthentication(true);
 			}
 			return true;
 		} else {
@@ -109,7 +154,6 @@
 			WebDavSessionAuthenticator authen = new WebDavSessionAuthenticator();
 			authen.addAuthenticationInfo(new URL(server), "", "basic", info);
 			client.setSessionAuthenticator(authen);
-			client.setSessionAuthentication(true);
 		}
 	}
 	

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -14,25 +14,13 @@
 public interface IWebDavClient {
 	/**
 	 * Tell the client to use the supplied authenticator, instead
-	 * of one tied to the platform key ring.
+	 * of one tied to the platform key ring. If the authenticator is
+	 * null, the client defaults back to the platform key ring authenticator.
 	 * @param sessionAuthen The authenticator
 	 */
 	public void setSessionAuthenticator(IAuthenticator sessionAuthen);
 	
 	/**
-	 * Answers whether a session-oriented authenticator is in use or not.
-	 */
-	public boolean isUsingSessionAuthenication();
-	
-	/**
-	 * Tell the client to use a session authenticator or not.
-	 * @param useSession true to use session authentication, false for default authentication
-	 * @return false if a session authenticator is not registered but the request is
-	 *         to use session authentication.
-	 */
-	public boolean setSessionAuthentication(boolean useSession);
-	
-	/**
 	 * Provides access to the underlying RemoteDAVClient.
 	 * @return The client associated with the current repository connection.
 	 */
@@ -74,9 +62,24 @@
 	 * @return An code>InputStream</code> for the resource
 	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
 	 */
-	public InputStream getInputStream(String resource) throws Exception;
+	public InputStream getResourceInputStream(String resource) throws Exception;
 	
 	/**
+	 * Same as createResource(resource, is, true)
+	 */
+	public boolean createResource(String resource, InputStream is) throws Exception;
+
+	/**
+	 * Creates a file in the WebDav repository
+	 * @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
+	 * @return false if the file exists and overwrite = false
+	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
+	 */
+	public boolean createResource(String resource, InputStream is, boolean overwrite) throws Exception;
+	
+	/**
 	 * Write a file to the WebDav repository
 	 * @param resource The path and name of the resource
 	 * @param is A stream to the file contents
@@ -85,6 +88,14 @@
 	public void putResource(String resource, InputStream is) throws Exception;
 	
 	/**
+	 * Gets all the version information for a resource
+	 * @param resource The file to get version information about
+	 * @return A stream to the version properties
+	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
+	 */
+	public InputStream getResourceVersions(String resource) throws Exception;
+	
+	/**
 	 * <b>Must</b> be called after server operation methods to ensure
 	 * resource clean up.
 	 */

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -18,12 +18,11 @@
  *
  */
 public class WebDavClient implements IWebDavClient {
+	
 	private RemoteDAVClient client;
 	
-	private WebDavAuthenticator authen;
-	private IAuthenticator sessionAuthen;
-	private HttpClient hClient;
-	private boolean usingSessionAuthen;
+	private WebDavAuthenticator platformAuthenticator;
+	private HttpClient httpClient;
 	
 	private IResponse response;
 	
@@ -32,10 +31,10 @@
 	 * @param serverUrl The WebDav repository location (server)
 	 */
 	/** package */ WebDavClient(URL serverUrl) {
-		authen =  new WebDavAuthenticator(serverUrl);
-		hClient = new HttpClient();
-		hClient.setAuthenticator(authen);
-		client = new RemoteDAVClient(new WebDAVFactory(), hClient);
+		platformAuthenticator =  new WebDavAuthenticator(serverUrl);
+		httpClient = new HttpClient();
+		httpClient.setAuthenticator(platformAuthenticator);
+		client = new RemoteDAVClient(new WebDAVFactory(), httpClient);
 	}
 	
 	/*
@@ -43,29 +42,10 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#setSessionAuthenticator(org.eclipse.webdav.http.client.IAuthenticator)
 	 */
 	public void setSessionAuthenticator(IAuthenticator sessionAuthen) {
-		this.sessionAuthen = sessionAuthen;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#isUsingSessionAuthenication()
-	 */
-	public boolean isUsingSessionAuthenication() {
-		return usingSessionAuthen;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#setSessionAuthentication(boolean)
-	 */
-	public boolean setSessionAuthentication(boolean useSession) {
-		// We can't use session authenticator, if a session authenticator isn't present
-		if (useSession && sessionAuthen == null) {
-			usingSessionAuthen = false;
-			return false;
+		if (sessionAuthen != null) {
+			httpClient.setAuthenticator(sessionAuthen);
 		} else {
-			usingSessionAuthen = useSession;
-			return true;
+			httpClient.setAuthenticator(platformAuthenticator);
 		}
 	}
 	
@@ -82,7 +62,10 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#createContext()
 	 */
 	public IContext createContext() {
-		return WebDAVFactory.contextFactory.newContext();
+		IContext context = WebDAVFactory.contextFactory.newContext();
+		// Need to make sure the USER-AGENT header is present for Guvnor
+		context.put("USER-AGENT", "guvnor");
+		return context;
 	}
 	
 	/*
@@ -90,28 +73,15 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#listDirectory(java.lang.String)
 	 */
 	public Map<String, ResourceProperties> listDirectory(String path) throws Exception {
-		if (isUsingSessionAuthenication()) {
-			if (sessionAuthen != null) {
-				hClient.setAuthenticator(sessionAuthen);
-			} else {
-				setSessionAuthentication(false);
-			}
+		IContext context = createContext();
+		context.put("Depth", "1");
+		ILocator locator = WebDAVFactory.locatorFactory.newLocator(path);
+		response = client.propfind(locator, context, null);
+		if (response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
+			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
+								     response.getStatusCode());
 		}
-		try {
-			IContext context = createContext();
-			context.put("Depth", "1");
-			ILocator locator = WebDAVFactory.locatorFactory.newLocator(path);
-			response = client.propfind(locator, context, null);
-			if (response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
-				throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-									     response.getStatusCode());
-			}
-			return StreamProcessingUtils.parseListing(path, response.getInputStream());
-		} finally {
-			if (isUsingSessionAuthenication()) {
-				hClient.setAuthenticator(authen);
-			}
-		}
+		return StreamProcessingUtils.parseListing(path, response.getInputStream());
 	}
 	
 	/*
@@ -119,33 +89,21 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#queryProperties(java.lang.String)
 	 */
 	public ResourceProperties queryProperties(String resource) throws Exception {
-		if (isUsingSessionAuthenication()) {
-			if (sessionAuthen != null) {
-				hClient.setAuthenticator(sessionAuthen);
-			} else {
-				setSessionAuthentication(false);
-			}
+		IContext context = createContext();
+		context.put("Depth", "1");
+		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+		response = client.propfind(locator, context, null);
+		if (response.getStatusCode() != IResponse.SC_MULTI_STATUS
+		   && response.getStatusCode() != IResponse.SC_OK) {
+			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
+								     response.getStatusCode());
 		}
-		try {
-			IContext context = createContext();
-			context.put("Depth", "1");
-			ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
-			response = client.propfind(locator, context, null);
-			if (response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
-				throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-									     response.getStatusCode());
-			}
-			Map<String, ResourceProperties> props = 
-				StreamProcessingUtils.parseListing("", response.getInputStream());
-			if (props.keySet().size() != 1) {
-				throw new Exception(props.keySet().size() + " entries found for " + resource);
-			}
-			return props.get(props.keySet().iterator().next());
-		} finally {
-			if (isUsingSessionAuthenication()) {
-				hClient.setAuthenticator(authen);
-			}
+		Map<String, ResourceProperties> props = 
+			StreamProcessingUtils.parseListing("", response.getInputStream());
+		if (props.keySet().size() != 1) {
+			throw new Exception(props.keySet().size() + " entries found for " + resource);
 		}
+		return props.get(props.keySet().iterator().next());
 	}
 	
 	/*
@@ -153,21 +111,14 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceContents(java.lang.String)
 	 */
 	public String getResourceContents(String resource) throws Exception {
-		return StreamProcessingUtils.getStreamContents(getInputStream(resource));
+		return StreamProcessingUtils.getStreamContents(getResourceInputStream(resource));
 	}
 	
 	/*
 	 * (non-Javadoc)
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getInputStream(java.lang.String)
 	 */
-	public InputStream getInputStream(String resource) throws Exception {
-		if (isUsingSessionAuthenication()) {
-			if (sessionAuthen != null) {
-				hClient.setAuthenticator(sessionAuthen);
-			} else {
-				setSessionAuthentication(false);
-			}
-		}
+	public InputStream getResourceInputStream(String resource) throws Exception {
 		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
 		IResponse response = client.get(locator, createContext());
 		if (response.getStatusCode() != IResponse.SC_OK) {
@@ -179,16 +130,48 @@
 	
 	/*
 	 * (non-Javadoc)
-	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#putResource(java.lang.String, java.io.InputStream)
+	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#createResource(java.lang.String, java.io.InputStream)
 	 */
-	public void putResource(String resource, InputStream is) throws Exception {
-		if (isUsingSessionAuthenication()) {
-			if (sessionAuthen != null) {
-				hClient.setAuthenticator(sessionAuthen);
-			} else {
-				setSessionAuthentication(false);
+	public boolean createResource(String resource, InputStream is) throws Exception {
+		return createResource(resource, is, true);
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#createResource(java.lang.String, java.io.InputStream, boolean)
+	 */
+	public boolean createResource(String resource, InputStream is, boolean overwrite) throws Exception {
+		boolean res = true;
+		if (!overwrite) {
+			try {
+				if (queryProperties(resource) != null) {
+					res = false;
+				}
+			} catch (Exception e) {
+				if (response.getStatusCode() != IResponse.SC_NOT_FOUND) {
+					closeResponse();
+					throw e;
+				}
 			}
+			closeResponse();
 		}
+		if (res) {
+			ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+			IResponse response = client.put(locator, createContext(), is);
+			if (response.getStatusCode() != IResponse.SC_OK
+		       && response.getStatusCode() != IResponse.SC_CREATED) {
+				throw new WebDavException("WebDav error: " + response.getStatusCode(), 
+									     response.getStatusCode());
+			}
+		}
+		return res;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#putResource(java.lang.String, java.io.InputStream)
+	 */
+	public void putResource(String resource, InputStream is) throws Exception {
 		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
 		IResponse response = client.put(locator, createContext(), is);
 		if (response.getStatusCode() != IResponse.SC_OK
@@ -200,6 +183,19 @@
 	
 	/*
 	 * (non-Javadoc)
+	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceVersions(java.lang.String)
+	 */
+	public InputStream getResourceVersions(String resource) throws Exception {
+		String apiVer = changeToAPICall(resource) + "?version=all";
+		return getResourceInputStream(apiVer);
+	}
+	
+	private String changeToAPICall(String path) {
+		return path.replaceFirst("/webdav/", "/api/");
+	}
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#closeResponse()
 	 */
 	public void closeResponse() throws Exception {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -21,14 +21,28 @@
 	
 	private String repUrl;
 	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+	 */
 	public void inputChanged(Viewer v, Object oldInput, Object newInput) {
 		if (v instanceof AbstractTreeViewer) {
 			viewer = (AbstractTreeViewer)v;
 		    manager = new DeferredTreeContentManager(this, viewer);
 		}
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+	 */
 	public void dispose() {
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+	 */
 	public Object[] getElements(Object parent) {
 		if (parent.equals(viewer)) {
 			if (invisibleRoot == null) initialize();
@@ -36,12 +50,22 @@
 		}
 		return getChildren(parent);
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+	 */
 	public Object getParent(Object child) {
 		if (child instanceof TreeObject) {
 			return ((TreeObject)child).getParent();
 		}
 		return null;
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+	 */
 	public Object [] getChildren(Object parent) {
 		if (parent == invisibleRoot) {
 			return ((TreeParent)invisibleRoot).getChildren();
@@ -50,6 +74,11 @@
 		}
 		return new Object[0];
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+	 */
 	public boolean hasChildren(Object parent) {
 		if (parent instanceof TreeParent) {
 			return manager.mayHaveChildren(parent);

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -95,7 +95,11 @@
 		
 		addDragDropSupport();
 	}
-
+	
+	public void refresh() {
+		viewer.refresh();
+	}
+	
 	private void addDragDropSupport() {
 		// TODO: Support drag and drop of multiple files, directories, etc.
 		Transfer[] transfers = new Transfer[] { FileTransfer.getInstance()};
@@ -307,17 +311,6 @@
 		return res;
 	}
 	
-//	private void putResource(TreeParent node, String name, InputStream is) throws Exception {
-//		GuvnorRepository rep = node.getGuvnorRepository();
-//		WebDavClient webdav = WebDavServerCache.getWebDavClient(rep.getLocation());
-//		if (webdav == null) {
-//			webdav = new WebDavClient(new URL(rep.getLocation()), 
-//					                 rep.getUsername(), rep.getPassword());
-//			WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
-//		}
-//		webdav.putResource(node.getFullPath(), name, is);
-//	}
-	
 	/*
 	 * (non-Javadoc)
 	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()

Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryLabelProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryLabelProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryLabelProvider.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -0,0 +1,57 @@
+package org.guvnor.tools.views;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
+/**
+ * Label provider for the Resource History view.
+ * @author jgraham
+ *
+ */
+public class ResourceHistoryLabelProvider implements ITableLabelProvider {
+
+	public Image getColumnImage(Object element, int columnIndex) {
+		return null;
+	}
+
+	public String getColumnText(Object element, int columnIndex) {
+		if (!(element instanceof ResourceHistoryEntry)) {
+			return element.toString();
+		}
+		ResourceHistoryEntry entry = (ResourceHistoryEntry) element;
+		String res = null;
+		switch (columnIndex) {
+		case 0:
+			res = entry.getRevision();
+			break;
+		case 1:
+			res = entry.getDate();
+			break;
+		case 2:
+			res = entry.getAuthor();
+			break;
+		case 3:
+			res = entry.getComment();
+			break;
+		default:
+			res = entry.toString();
+			break;
+		}
+		return res;
+
+	}
+
+	public void addListener(ILabelProviderListener listener) {
+	}
+
+	public void dispose() {
+	}
+
+	public boolean isLabelProperty(Object element, String property) {
+		return false;
+	}
+
+	public void removeListener(ILabelProviderListener listener) {
+	}
+}

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -1,231 +1,121 @@
 package org.guvnor.tools.views;
 
 
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
 import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.ui.part.ViewPart;
+import org.guvnor.tools.views.model.ResourceHistoryEntry;
 
 public class ResourceHistoryView extends ViewPart {
 	
 	private TableViewer viewer;
-	private Text 		verNotes;
-	private Text		verOwner;
 	
-	private Action action1;
-	private Action action2;
-	private Action doubleClickAction;
-
-	class ViewContentProvider implements IStructuredContentProvider {
-		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-		}
-		public void dispose() {
-		}
-		public Object[] getElements(Object parent) {
-			return new Object[] { };
-//			return new String[] { "v20080522", "v20080516", "v20080424" };
-		}
-	}
-	class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
-		public String getColumnText(Object obj, int index) {
-			return getText(obj);
-		}
-		public Image getColumnImage(Object obj, int index) {
-			return getImage(obj);
-		}
-		public Image getImage(Object obj) {
-			return PlatformUI.getWorkbench().
-					getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
-		}
-	}
-	class NameSorter extends ViewerSorter {
-	}
-
+	private ResourceHistoryEntry[] entries;
+	
 	/**
 	 * The constructor.
 	 */
 	public ResourceHistoryView() {
+		entries = new ResourceHistoryEntry[0];
 	}
 	
-	private void updateDetails(String selection) {
-		//TODO: Need a model for version entries, comments, etc.
-//		if (selection.equals("v20080522")) {
-//			verNotes.setText("Remove dead code");
-//			verOwner.setText("jgraham");
-//		}
-//		if (selection.equals("v20080516")) {
-//			verNotes.setText("Add new branch");
-//			verOwner.setText("tyler");
-//		}
-//		if (selection.equals("v20080424")) {
-//			verNotes.setText("Inital check in");
-//			verOwner.setText("ygm");
-//		}
-	}
-	
 	public void createPartControl(Composite parent) {
 		
-		Composite composite = createComposite(parent, 1);
-		
-		viewer = new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		viewer = new TableViewer(createTable(parent));
 		viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
-		viewer.setContentProvider(new ViewContentProvider());
-		viewer.setLabelProvider(new ViewLabelProvider());
-		viewer.setSorter(new NameSorter());
-		viewer.setInput(getViewSite());
 		
-		viewer.getTable().addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) { }
-
-			public void widgetSelected(SelectionEvent e) {
-				updateDetails(viewer.getTable().getSelection()[0].getText());
-			}
-		});
-		
-		SashForm sash = new SashForm(composite, SWT.HORIZONTAL);
-		sash.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		verNotes = new Text(sash, SWT.BORDER | SWT.MULTI);
-		verNotes.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		verOwner = new Text(sash, SWT.BORDER | SWT.MULTI);
-		verOwner.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		sash.setWeights(new int[]{70, 30});
-		
-		makeActions();
-		hookContextMenu();
-		hookDoubleClickAction();
-		contributeToActionBars();
-		
-		if (viewer.getTable().getItemCount() > 0) {
-			viewer.getTable().setSelection(0);
-			updateDetails(viewer.getTable().getSelection()[0].getText());
-		}
+		viewer.setContentProvider(new ResourceHistoryViewContentProvider());
+		viewer.setLabelProvider(new ResourceHistoryLabelProvider());
+		viewer.setInput(getViewSite());
 	}
 	
-	private Composite createComposite(Composite parent, int numColumns) {
-		Composite composite = new Composite(parent, SWT.NULL);
+	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);
 		
-		GridLayout layout = new GridLayout();
-		layout.numColumns = numColumns;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		return composite;
-	}
-	
-	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);
-	}
+		GridData gridData = new GridData(GridData.FILL_BOTH);
+		gridData.grabExcessVerticalSpace = true;
+		gridData.horizontalSpan = 3;
+		table.setLayoutData(gridData);		
+					
+		table.setLinesVisible(true);
+		table.setHeaderVisible(true);
 
-	private void contributeToActionBars() {
-		IActionBars bars = getViewSite().getActionBars();
-		fillLocalPullDown(bars.getMenuManager());
-		fillLocalToolBar(bars.getToolBarManager());
-	}
+		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);
 
-	private void fillLocalPullDown(IMenuManager manager) {
-		manager.add(action1);
-		manager.add(new Separator());
-		manager.add(action2);
-	}
-
-	private void fillContextMenu(IMenuManager manager) {
-		manager.add(action1);
-		manager.add(action2);
-		// Other plug-ins can contribute there actions here
-		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-	}
-	
-	private void fillLocalToolBar(IToolBarManager manager) {
-		manager.add(action1);
-		manager.add(action2);
-	}
-
-	private void makeActions() {
-		action1 = new Action() {
-			public void run() {
-				showMessage("Action 1 executed");
-			}
-		};
-		action1.setText("Action 1");
-		action1.setToolTipText("Action 1 tooltip");
-		action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
-			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+		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);
 		
-		action2 = new Action() {
-			public void run() {
-				showMessage("Action 2 executed");
-			}
-		};
-		action2.setText("Action 2");
-		action2.setToolTipText("Action 2 tooltip");
-		action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
-				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
-		doubleClickAction = new Action() {
-			public void run() {
-				ISelection selection = viewer.getSelection();
-				Object obj = ((IStructuredSelection)selection).getFirstElement();
-				showMessage("Double-click detected on "+obj.toString());
-			}
-		};
+		return table;
 	}
 
-	private void hookDoubleClickAction() {
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				doubleClickAction.run();
-			}
-		});
-	}
-	private void showMessage(String message) {
-		MessageDialog.openInformation(
-			viewer.getControl().getShell(),
-			"Resource History View",
-			message);
-	}
-
 	/**
 	 * Passing the focus request to the viewer's control.
 	 */
 	public void setFocus() {
 		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());
+		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

Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/ResourceHistoryEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/ResourceHistoryEntry.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/ResourceHistoryEntry.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -0,0 +1,34 @@
+package org.guvnor.tools.views.model;
+
+/**
+ * A model for resource history data. 
+ * @author jgraham
+ *
+ */
+public class ResourceHistoryEntry {
+	private String revision;
+	private String date;
+	private String author;
+	private String comment;
+	
+	public ResourceHistoryEntry(String revision, String date,
+			                   String author, String comment) {
+		this.revision = revision;
+		this.date = date;
+		this.author = author;
+		this.comment = comment;
+	}
+	
+	public String getRevision() {
+		return revision != null?revision:"";
+	}
+	public String getDate() {
+		return date != null?date:"";
+	}
+	public String getAuthor() {
+		return author != null?author:"";
+	}
+	public String getComment() {
+		return comment != null?comment:"";
+	}
+}

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -60,6 +60,7 @@
 				monitor.beginTask("Pending...", reps.size());
 				for (int i = 0; i < reps.size(); i++) {
 					TreeParent p = new TreeParent(reps.get(i).getLocation(), Type.REPOSITORY);
+					p.setParent(node);
 					p.setGuvnorRepository(reps.get(i));
 					ResourceProperties props = new ResourceProperties();
 					props.setBase("");
@@ -121,6 +122,7 @@
 						}
 						o.setGuvnorRepository(rep);
 						o.setResourceProps(resProps);
+						node.addChild(o);
 						collector.add(o, monitor);
 					}
 				} 

Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -0,0 +1,147 @@
+package org.guvnor.tools.wizards;
+
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+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.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;
+
+public class AddResourceWizard extends Wizard implements INewWizard, IGuvnorWizard {
+	
+	private IFile selectedFile;
+	
+	private SelectGuvnorRepPage		selectRepPage;
+	private GuvnorMainConfigPage 	mainConfigPage;
+	private SelectGuvnorFolderPage 	selectFolderPage;
+	
+	private GuvWizardModel model;
+	
+	public AddResourceWizard() {
+		model = new GuvWizardModel();
+	}
+	
+	public GuvWizardModel getModel() {
+		return model;
+	}
+	
+	public void init(IWorkbench workbench, IStructuredSelection selection) { 
+		if (selection instanceof IStructuredSelection) {
+			IStructuredSelection sel = (IStructuredSelection)selection;
+			if (sel.getFirstElement() instanceof IFile) {
+				selectedFile = (IFile)sel.getFirstElement();
+			}
+		}
+	}
+	
+	@Override
+	public void addPages() {
+		selectRepPage = new SelectGuvnorRepPage("select_rep_page", "Select Guvnor repository location",
+								Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+		selectRepPage.setDescription("Select an existing Guvnor repository location or create a new one");
+		super.addPage(selectRepPage);
+		
+		mainConfigPage = new GuvnorMainConfigPage("config_page", "New Guvnor repository location", 
+								Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+		mainConfigPage.setDescription("Creates a connection to a Guvnor repository");
+		super.addPage(mainConfigPage);
+
+		selectFolderPage = new SelectGuvnorFolderPage("select_folder_page", "Select folder",
+								Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+		selectFolderPage.setDescription("Select the target folder in the Guvnor repository");
+		super.addPage(selectFolderPage);
+
+		super.addPages();
+	}
+	
+	@Override
+	public IWizardPage getNextPage(IWizardPage page) {
+		if (page.getName().equals("select_rep_page")) {
+			if (model.shouldCreateNewRep()) {
+				return mainConfigPage;
+			} else {
+				return selectFolderPage;
+			}
+		}
+		if (page.getName().equals("config_page")) {
+			return selectFolderPage;
+		}
+		return null;
+	}
+	
+	private void setDuplicateFileError() {
+		selectFolderPage.setErrorMessage(selectedFile.getName() +
+				                        " already exists in folder " +
+				                        model.getTargetLocation());
+		model.setTargetLocation(null);
+		super.getContainer().updateButtons();
+	}
+	
+	@Override
+	public boolean performFinish() {
+		assert(selectedFile != null);
+		boolean res = false;
+		try {
+			String fullPath = model.getTargetLocation() + selectedFile.getName();
+			IWebDavClient client = WebDavServerCache.getWebDavClient(model.getRepLocation());
+			if (client == null) {
+				client = WebDavClientFactory.createClient(new URL(model.getRepLocation()));
+				WebDavServerCache.cacheWebDavClient(model.getRepLocation(), client);
+			}
+			try {
+				res = client.createResource(fullPath, selectedFile.getContents(), false);
+				client.closeResponse();
+				if (!res) {
+					setDuplicateFileError();
+				}
+			} 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(model.getRepLocation(), client); 
+				if (retry) {
+					res = client.createResource(fullPath, selectedFile.getContents());
+					client.closeResponse();
+					if (!res) {
+						setDuplicateFileError();
+					}
+				}
+			}
+			if (res) {
+				GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
+				ResourceProperties resProps = client.queryProperties(fullPath);
+				client.closeResponse();
+				GuvnorMetadataProps mdProps = 
+						new GuvnorMetadataProps(selectedFile.getName(),
+					                           model.getRepLocation(),
+					                           fullPath, resProps.getLastModifiedDate());
+				GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
+				PlatformUtils.updateDecoration();
+			}
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+		return res;
+	}
+	
+	@Override
+	public boolean canFinish() {	
+		return model.getRepLocation() != null 
+		       && model.getTargetLocation() != null;
+	}
+}

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -7,6 +7,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
@@ -70,6 +71,24 @@
 	}
 	
 	@Override
+	public IWizardPage getNextPage(IWizardPage page) {
+		if (page.getName().equals("select_rep_page")) {
+			if (model.shouldCreateNewRep()) {
+				return mainConfigPage;
+			} else {
+				return selectResPage;
+			}
+		}
+		if (page.getName().equals("config_page")) {
+			return selectResPage;
+		}
+		if (page.getName().equals("select_res_page")) {
+			return selectLocalTargetPage;
+		}
+		return null;
+	}
+	
+	@Override
 	public boolean performFinish() {
 		try {
 			IWebDavClient webdav = WebDavServerCache.getWebDavClient(model.getRepLocation());
@@ -116,7 +135,9 @@
 	}
 
 	@Override
-	public boolean canFinish() {
-		return model.isModelComplete();
+	public boolean canFinish() {	
+		return model.getRepLocation() != null 
+		       && model.getTargetLocation() != null 
+		       && model.getResources() != null;
 	}
 }

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -62,10 +62,4 @@
 	public void setVersion(String version) {
 		this.version = version;
 	}
-	
-	public boolean isModelComplete() {		
-		return this.repLocation != null && 
-		       this.targetLocation != null && 
-		       this.resources != null;
-	}
 }

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorFolderPage.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -0,0 +1,138 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+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.views.RepositoryContentProvider;
+import org.guvnor.tools.views.RepositoryLabelProvider;
+import org.guvnor.tools.views.model.TreeObject;
+import org.guvnor.tools.views.model.TreeParent;
+
+public class SelectGuvnorFolderPage extends WizardPage {
+	
+	private TreeViewer viewer;
+	private String previousSelection;
+	
+	public SelectGuvnorFolderPage(String pageName) {
+		super(pageName);
+	}
+	
+	public SelectGuvnorFolderPage(String pageName, String title, ImageDescriptor titleImage) {
+		super(pageName, title, titleImage);
+	}
+	
+	public void createControl(Composite parent) {
+		Composite composite = 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);
+		viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
+		viewer.setLabelProvider(new RepositoryLabelProvider());
+		viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				updateModel();	
+			}
+		});
+		super.setControl(composite);
+	}
+	
+	private void handleRepositoryCreation() {
+		// First we'll see if the repository already exists
+		GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+		if (model.shouldCreateNewRep()
+		   && model.getRepLocation() != null) {
+			GuvnorRepository theRep = Activator.getLocationManager().
+										findRepository(model.getRepLocation());
+			if (theRep != null) {
+				// The repository already exists, nothing to do
+				return;
+			}
+			try {
+				WizardUtils.createGuvnorRepository(model);
+			} catch (Exception e) {
+				super.setErrorMessage(e.getMessage());
+				Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+			}
+		}
+	}
+	
+	@Override
+	public void setVisible(boolean visible) {
+		if (visible) {
+			// Need to filter repository list based on currently selected repository
+			// Will also keep track of which filter is applied, so we don't create
+			// additional content providers unnecessarily.
+			GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+			String currentSelection = model.getRepLocation();
+			// Not supposed to use this page without setting the target repository in the model
+			assert(currentSelection != null);
+			// If we had a repository selection before that is different from the current selection
+			if (previousSelection != null
+			   && !currentSelection.equals(previousSelection)) {
+				handleRepositoryCreation();
+				RepositoryContentProvider cp = new RepositoryContentProvider();
+				cp.setRepositorySelection(currentSelection);
+				viewer.setContentProvider(cp);
+				viewer.setInput(viewer);
+				previousSelection = currentSelection;
+			} else {
+				// If we didn't have a repository selection before (first time this page is loaded)
+				if (previousSelection == null) {
+					handleRepositoryCreation();
+					RepositoryContentProvider cp = new RepositoryContentProvider();
+					cp.setRepositorySelection(currentSelection);
+					viewer.setContentProvider(cp);
+					viewer.setInput(viewer);
+					previousSelection = currentSelection;
+				}
+			}
+		}
+		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() {
+		if (super.getErrorMessage() != null) {
+			super.setErrorMessage(null);
+		}
+		IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
+		GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+		if (selection.getFirstElement() instanceof TreeParent) {
+			TreeParent node = (TreeParent)selection.getFirstElement();
+			if (node.getNodeType() == TreeObject.Type.PACKAGE
+			   || node.getNodeType() == TreeObject.Type.REPOSITORY) {
+				viewer.expandToLevel(node, 1);
+				String base = node.getFullPath().endsWith("/")?node.getFullPath():node.getFullPath() + "/";
+				model.setTargetLocation(base);
+				super.getWizard().getContainer().updateButtons();
+			} else {
+				model.setTargetLocation(null);
+				super.getWizard().getContainer().updateButtons();
+			}
+		} else {
+			model.setTargetLocation(null);
+			super.getWizard().getContainer().updateButtons();
+		}
+	}
+}

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-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -1,7 +1,6 @@
 package org.guvnor.tools.wizards;
 
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
@@ -42,6 +41,7 @@
 
 			public void widgetSelected(SelectionEvent e) {
 				repLocations.setEnabled(existingRep.getSelection());
+				updateModel();
 			}
 		});
 		
@@ -54,6 +54,7 @@
 
 			public void widgetSelected(SelectionEvent e) {
 				repLocations.setEnabled(existingRep.getSelection());
+				updateModel();
 			}
 		});
 		
@@ -93,21 +94,18 @@
 	
 	private void updateModel() {
 		GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
-		String selected = null;
-		if (repLocations.getSelection().length > 0) {
-			selected = repLocations.getSelection()[0];
-		}
-		if (selected != null) {
-			model.setRepLocation(repLocations.getSelection()[0]);
-		}
-	}
-	
- 	@Override
-	public IWizardPage getNextPage() {
 		if (createRep.getSelection()) {
-			return getWizard().getPage("config_page");
+			model.setCreateNewRep(true);
+			model.setRepLocation(null);
 		} else {
-			return getWizard().getPage("select_res_page");
+			model.setCreateNewRep(false);
+			String selected = null;
+			if (repLocations.getSelection().length > 0) {
+				selected = repLocations.getSelection()[0];
+			}
+			if (selected != null) {
+				model.setRepLocation(repLocations.getSelection()[0]);
+			}
 		}
 	}
 }

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/WizardUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/WizardUtils.java	2008-07-09 19:28:20 UTC (rev 20985)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/WizardUtils.java	2008-07-09 21:11:42 UTC (rev 20986)
@@ -27,7 +27,6 @@
 			WebDavSessionAuthenticator authen = new WebDavSessionAuthenticator();
 			authen.addAuthenticationInfo(serverUrl, "", "basic", info);
 			client.setSessionAuthenticator(authen);
-			client.setSessionAuthentication(true);
 		}
 	}
 }




More information about the jboss-svn-commits mailing list