[jboss-svn-commits] JBL Code SVN: r20847 - 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
Mon Jun 30 16:16:06 EDT 2008


Author: john.graham at jboss.org
Date: 2008-06-30 16:16:06 -0400 (Mon, 30 Jun 2008)
New Revision: 20847

Added:
   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/CommitAction.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/DisconnectAction.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/GuvnorMetadataProps.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.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/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/RepositoryView.java
Log:
Decorator for governed resources. Pop-up menu for governed resources.

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-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF	2008-06-30 20:16:06 UTC (rev 20847)
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.5.0.200806271630
+Bundle-Version: 0.5.0.200806301613
 Bundle-Activator: org.guvnor.tools.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties	2008-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties	2008-06-30 20:16:06 UTC (rev 20847)
@@ -11,5 +11,13 @@
 
 persp.name = Guvnor Repository Exploring
 
+decorator.desc = Guvnor resource decorator
 action.properties = Properties
-action.properties.tooltip = Show properties for the selected element
\ No newline at end of file
+action.properties.tooltip = Show properties for the selected element
+
+action.popup.update = Update
+action.popup.commit = Commit
+action.popup.showhistory = Show History
+action.popup.compareversion = Compare with Version...
+action.popup.switchversion = Switch to Version...
+action.popup.disconnect = Disconnect
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml	2008-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml	2008-06-30 20:16:06 UTC (rev 20847)
@@ -90,6 +90,50 @@
                 id="org.guvnor.tools.view.model.actions.properties">
          </action>
   	</objectContribution>
+    <objectContribution id="org.guvnor.tools.contribution1"
+                        objectClass="org.eclipse.core.resources.IFile">
+      <menu id="org.guvnor.tools.popupmenu"
+            label="%category.name"
+            path="additions">
+         <separator name="group1"/>
+      </menu>
+      <action class="org.guvnor.tools.actions.DisconnectAction"
+              enablesFor="1"
+              id="org.guvnor.tools.actions.disconnectaction"
+            label="%action.popup.disconnect"
+            menubarPath="org.guvnor.tools.popupmenu/group1">
+      </action>
+      <action class="org.guvnor.tools.actions.SwitchVersionAction"
+              enablesFor="1"
+              id="org.guvnor.tools.actions.switchversionaction"
+            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"
+            label="%action.popup.showhistory"
+            menubarPath="org.guvnor.tools.popupmenu/group1">
+      </action>
+      <action class="org.guvnor.tools.actions.CommitAction"
+              enablesFor="1"
+              id="org.guvnor.tools.actions.commitaction"
+            label="%action.popup.commit"
+            menubarPath="org.guvnor.tools.popupmenu/group1">
+      </action>
+      <action class="org.guvnor.tools.actions.UpdateAction"
+              enablesFor="1"
+              id="org.guvnor.tools.actions.updateaction"
+            label="%action.popup.update"
+            menubarPath="org.guvnor.tools.popupmenu/group1">
+      </action>
+   </objectContribution>
   </extension>
   
   <extension point = "org.eclipse.ui.propertyPages">
@@ -97,4 +141,19 @@
               name="%category.name"
 	          class="org.guvnor.tools.properties.GuvnorWorkspaceFilePage"/>
   </extension>
+  
+  <extension point="org.eclipse.ui.decorators">
+      <decorator lightweight="true" adaptable="true" 
+                 label="%category.name" state="true"
+                 class="org.guvnor.tools.GuvnorDecorator"
+                 id="org.guvnor.tools.decorator">
+         <description>
+            %decorator.desc
+         </description>
+         <enablement>
+            <objectClass name="org.eclipse.core.resources.IResource"/>
+         </enablement>
+      </decorator>
+   </extension>
+   
 </plugin>

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,67 @@
+package org.guvnor.tools;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.IDecoration;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ILightweightLabelDecorator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class GuvnorDecorator implements ILightweightLabelDecorator {
+	
+	private boolean isGuvnorResource(Object element) {
+		if (element instanceof IResource) {
+			return GuvnorMetadataUtils.findGuvnorMetadata((IResource)element) != null;
+		} else {
+			return false;
+		}
+	}
+	
+	private void decorateResource(IResource resource, IDecoration decoration) {
+		if (resource instanceof IFile) {
+			decoration.addOverlay(Activator.getImageDescriptor(Activator.IMG_GUVCONTROLLED), 
+					             IDecoration.TOP_RIGHT);
+			try {
+				GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(resource);
+				if (props.getVersion() != null) {
+					decoration.addSuffix(" " + props.getVersion());
+				}
+			} catch (Exception e) {
+				Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+			}
+		}
+	}
+	
+	public void decorate(Object element, IDecoration decoration) {
+		if (isGuvnorResource(element)) {
+			if (element instanceof IResource) {
+				decorateResource((IResource)element, decoration);
+			} else {
+				Activator.getDefault().writeLog(IStatus.ERROR, 
+						"Called to decorate unknown: " + element.getClass().toString(), new Exception());
+			}
+		}
+	}
+
+	public void addListener(ILabelProviderListener listener) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void dispose() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public boolean isLabelProperty(Object element, String property) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public void removeListener(ILabelProviderListener listener) {
+		// TODO Auto-generated method stub
+		
+	}
+}

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.java	2008-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -43,7 +43,7 @@
 		try {
 			commit();
 		} catch (Exception e) {
-			e.printStackTrace();
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
 		}
 	}
 	
@@ -64,7 +64,7 @@
 			notifyListeners(IRepositorySetListener.REP_ADDED);
 			commit();
 		} catch (Exception e) {
-			e.printStackTrace();
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
 		}
 		return res;
 	}

Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,69 @@
+package org.guvnor.tools.actions;
+
+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.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class CommitAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	private GuvnorMetadataProps props;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public CommitAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		Shell shell = new Shell();
+		MessageDialog.openInformation(
+			shell,
+			"JBoss Guvnor Tools Plug-in",
+			"Commit Verson was executed.");
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		// Reset state to default
+		selectedFile = 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);
+					}
+				}
+			} 
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+	}
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CompareVersionAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,69 @@
+package org.guvnor.tools.actions;
+
+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.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class CompareVersionAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	private GuvnorMetadataProps props;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public CompareVersionAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart 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.");
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		// Reset state to default
+		selectedFile = 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);
+					}
+				}
+			} 
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+	}
+}

Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,82 @@
+package org.guvnor.tools.actions;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IDecoratorManager;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class DisconnectAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public DisconnectAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		if (selectedFile == null) {
+			return;
+		}
+		IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata(selectedFile);
+		if (mdFile == null) {
+			return;
+		}
+		try {
+			IWorkspace ws = mdFile.getWorkspace();
+			ws.delete(new IResource[] { mdFile }, true, null);
+			IDecoratorManager manager = Activator.getDefault().
+											getWorkbench().getDecoratorManager();
+			manager.update("org.guvnor.tools.decorator");
+		} catch (CoreException 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;
+		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) {
+					GuvnorMetadataProps 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);
+		}
+	}
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,69 @@
+package org.guvnor.tools.actions;
+
+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.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class ShowHistoryAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	private GuvnorMetadataProps props;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public ShowHistoryAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart 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.");
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		// Reset state to default
+		selectedFile = 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);
+					}
+				}
+			} 
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+	}
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,70 @@
+package org.guvnor.tools.actions;
+
+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.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class SwitchVersionAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	private GuvnorMetadataProps props;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public SwitchVersionAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart 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.");
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		// Reset state to default
+		selectedFile = 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);
+					}
+				}
+			} 
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+	}
+
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,103 @@
+package org.guvnor.tools.actions;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+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;
+
+public class UpdateAction implements IObjectActionDelegate {
+	
+	private IFile selectedFile;
+	private GuvnorMetadataProps props;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public UpdateAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	/**
+	 * @throws Exception 
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		if (selectedFile == null
+		   || props == null) {
+			return;
+		}
+		try {
+			IWebDavClient 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.getInputStream(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.getInputStream(props.getFullpath());
+				}
+			}
+			if (ins != null) {
+				selectedFile.setContents(ins, true, true, null);
+			}
+		} 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;
+		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);
+					}
+				}
+			} 
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		}
+	}
+}

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-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -1,10 +1,7 @@
 package org.guvnor.tools.properties;
 
-import java.util.Properties;
-
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -13,6 +10,9 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.IWorkbenchPropertyPage;
 import org.eclipse.ui.dialogs.PropertyPage;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
 
 public class GuvnorWorkspaceFilePage extends PropertyPage implements IWorkbenchPropertyPage {
 
@@ -25,46 +25,46 @@
 		Composite composite = createComposite(parent, 2);
 		IResource resource = (IResource)super.getElement().getAdapter(IResource.class);
 		if (resource != null) {
-			displayGuvnorProperties(composite, findGuvnorMetadata(resource));
+			displayGuvnorProperties(composite, resource);
 		} else {
 			indicateNotGuvnorAssociated(composite);
 		}
 		return composite;
 	}
 	
-	private void displayGuvnorProperties(Composite composite, IFile md) {
-		if (md == null) {
-			indicateNotGuvnorAssociated(composite);
-		} else {
-			try {
-				Properties props = new Properties();
-				props.load(md.getContents());
+	private void displayGuvnorProperties(Composite composite, IResource resource) {
+		GuvnorMetadataProps props;
+		try {
+			props = GuvnorMetadataUtils.getGuvnorMetadata(resource);
+			if (props == null) {
+				indicateNotGuvnorAssociated(composite);
+			} else {
 				addGuvnorProperties(composite, props);
-			} catch (Exception e) {
-				e.printStackTrace();
 			}
+		} catch (Exception e) {
+			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
 		}
 	}
 	
-	private void addGuvnorProperties(Composite composite, Properties props) {
+	private void addGuvnorProperties(Composite composite, GuvnorMetadataProps props) {
 		new Label(composite, SWT.NONE).setText("Local name:");
 		Label l = new Label(composite, SWT.NONE);
-		String val = props.getProperty("filename") != null?props.getProperty("filename"):"";
+		String val = props.getFilename() != null?props.getFilename():"";
 		l.setText(val);
 		
 		new Label(composite, SWT.NONE).setText("Repository:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getProperty("repository") != null?props.getProperty("repository"):"";
+		val = props.getRepository() != null?props.getRepository():"";
 		l.setText(val);
 		
 		new Label(composite, SWT.NONE).setText("Repository Path:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getProperty("fullpath") != null?props.getProperty("fullpath"):"";
+		val = props.getFullpath() != null?props.getFullpath():"";
 		l.setText(val);
 		
 		new Label(composite, SWT.NONE).setText("Repository Version:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getProperty("lastmodified") != null?props.getProperty("lastmodified"):"";
+		val = props.getVersion() != null?props.getVersion():"";
 		l.setText(val);
 	}
 
@@ -72,19 +72,6 @@
 		new Label(composite, SWT.NONE).setText("(Not associated with Guvnor)");
 	}
 	
-	private IFile findGuvnorMetadata(IResource resource) {
-		IFile res = null;
-		IPath dir = resource.getFullPath().removeLastSegments(1);
-		IPath mdpath = dir.append(".guvnorinfo").append(resource.getName());
-		IResource mdResource = resource.getWorkspace().getRoot().findMember(mdpath);
-		if (mdResource != null 
-		   && mdResource.exists() 
-		   && mdResource instanceof IFile) {
-			res = (IFile)mdResource;
-		}
-		return res;
-	}
-	
 	private Composite createComposite(Composite parent, int numColumns) {
 		Composite composite = new Composite(parent, SWT.NULL);
 		

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,40 @@
+package org.guvnor.tools.utils;
+
+public class GuvnorMetadataProps {
+	private String filename;
+	private String repository;
+	private String fullpath;
+	private String version;
+	
+	public GuvnorMetadataProps(String filename, String repository,
+			                  String fullpath, String version) {
+		this.filename = filename;
+		this.repository = repository;
+		this.fullpath = fullpath;
+		this.version = version;
+	}
+	public String getFilename() {
+		return filename;
+	}
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+	public String getRepository() {
+		return repository;
+	}
+	public void setRepository(String repository) {
+		this.repository = repository;
+	}
+	public String getFullpath() {
+		return fullpath;
+	}
+	public void setFullpath(String fullpath) {
+		this.fullpath = fullpath;
+	}
+	public String getVersion() {
+		return version;
+	}
+	public void setVersion(String version) {
+		this.version = version;
+	}
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -0,0 +1,44 @@
+package org.guvnor.tools.utils;
+
+import java.util.Properties;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * A set of utilities for dealing with (local) Guvnor metadata.
+ * @author jgraham
+ */
+public class GuvnorMetadataUtils {
+	/**
+	 * Finds the local Guvnor metadata file associated with a given resource.
+	 * @param resource The resource to locate metadata for.
+	 * @return The metadata for the given resource, null if metadata is not found.
+	 */
+	public static IFile findGuvnorMetadata(IResource resource) {
+		IFile res = null;
+		IPath dir = resource.getFullPath().removeLastSegments(1);
+		IPath mdpath = dir.append(".guvnorinfo").append("." + resource.getName());
+		IResource mdResource = resource.getWorkspace().getRoot().findMember(mdpath);
+		if (mdResource != null 
+		   && mdResource.exists() 
+		   && mdResource instanceof IFile) {
+			res = (IFile)mdResource;
+		}
+		return res;
+	}
+	
+	public static GuvnorMetadataProps getGuvnorMetadata(IResource resource) throws Exception {
+		IFile mdFile = findGuvnorMetadata(resource);
+		if (mdFile == null) {
+			return null;
+		}
+		Properties props = new Properties();
+		props.load(mdFile.getContents());
+		return new GuvnorMetadataProps(props.getProperty("filename"),
+				                       props.getProperty("repository"),
+				                       props.getProperty("fullpath"),
+				                       props.getProperty("lastmodified"));
+	}
+}
\ No newline at end of file

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-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -60,5 +60,13 @@
 	 */
 	public String getResourceContents(String resource) throws Exception;
 	
+	/**
+	 * Get the <code>InputStream</code> of a resource from a WebDav repository.
+	 * @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 getInputStream(String resource) throws Exception;
+	
 	public void putResource(String location, String name, InputStream is) throws Exception;
 }

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-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -118,13 +118,28 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceContents(java.lang.String)
 	 */
 	public String getResourceContents(String resource) throws Exception {
+		return StreamProcessingUtils.getStreamContents(getInputStream(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);
+			}
+		}
 		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
 		IResponse response = client.get(locator, createContext());
 		if (response.getStatusCode() != IResponse.SC_OK) {
 			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
 									 response.getStatusCode());
 		}
-		return StreamProcessingUtils.getStreamContents(response.getInputStream());
+		return response.getInputStream();
 	}
 	
 	/*

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-06-30 15:17:58 UTC (rev 20846)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java	2008-06-30 20:16:06 UTC (rev 20847)
@@ -162,7 +162,7 @@
 			throw new Exception("Could not create directory " + metaPath.toOSString());
 		}
 		metaPath.toFile().deleteOnExit();
-		File metaFile = new File(metaPath.toOSString() + File.separator + node.getName());
+		File metaFile = new File(metaPath.toOSString() + File.separator + "." + node.getName());
 		metaFile.deleteOnExit();
 		fos = new FileOutputStream(metaFile);
 		Properties props = new Properties();




More information about the jboss-svn-commits mailing list