[jboss-svn-commits] JBL Code SVN: r20898 - 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
Thu Jul 3 18:10:23 EDT 2008
Author: john.graham at jboss.org
Date: 2008-07-03 18:10:23 -0400 (Thu, 03 Jul 2008)
New Revision: 20898
Added:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java
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/wizards/SelectLocalTargetPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/WizardUtils.java
Removed:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.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/Activator.java
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/GuvnorLocationManager.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/UpdateAction.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/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/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/GuvnorMainConfigPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/NewRepLocationWizard.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java
Log:
Add update action, initial work on import wizard
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-07-03 22:10:23 UTC (rev 20898)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.5.0.200806301613
+Bundle-Version: 0.5.0.200807031810
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-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties 2008-07-03 22:10:23 UTC (rev 20898)
@@ -9,6 +9,12 @@
wiz.new.repository.location = Guvnor repository location
wiz.new.repository.location.desc = New Guvnor repository location
+wiz.copy.resources = Resources from Guvnor
+wiz.copy.resources.desc = Copies Guvnor resources into a local workspace
+
+wiz.import.resources = Resources from Guvnor
+wiz.import.resources.desc = Imports Guvnor resources into a local workspace
+
persp.name = Guvnor Repository Exploring
decorator.desc = Guvnor resource decorator
@@ -16,6 +22,7 @@
action.properties.tooltip = Show properties for the selected element
action.popup.update = Update
+action.popup.add = Add
action.popup.commit = Commit
action.popup.showhistory = Show History
action.popup.compareversion = Compare with Version...
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-03 22:10:23 UTC (rev 20898)
@@ -27,36 +27,36 @@
<extension point = "org.eclipse.ui.newWizards">
<category id = "org.guvnor.tools.wizcat" name="%category.name"/>
- <!--
- <wizard id = "org.guvnor.tools.wizards.CheckoutWizard"
- name = "Checkout Projects from Guvnor"
+<!--
+ <wizard id = "org.guvnor.tools.wizards.checkoutwizard"
+ name = "%wiz.copy.resources"
class="org.guvnor.tools.wizards.CheckoutWizard"
category="org.guvnor.tools.wizcat"
project="true"
icon="icons/guvnor_rep.gif">
- <description>Checkout Projects from Guvnor</description>
+ <description>%wiz.copy.resources.desc</description>
</wizard>
- -->
+-->
<wizard name = "%wiz.new.repository.location"
- id = "org.guvnor.tools.wizards.NewRepLocationWizard"
+ id = "org.guvnor.tools.wizards.newreplocationwizard"
class="org.guvnor.tools.wizards.NewRepLocationWizard"
category="org.guvnor.tools.wizcat"
icon="icons/guvnor_rep.gif">
<description>%wiz.new.repository.location.desc</description>
</wizard>
</extension>
- <!--
+<!--
<extension point = "org.eclipse.ui.importWizards">
- <category id = "org.guvnor.tools.importwizcat" name="Guvnor"/>
- <wizard id = "org.guvnor.tools.CheckoutWizard"
- name = "Checkout Projects from Guvnor"
+ <category id = "org.guvnor.tools.importwizcat" name="%category.name"/>
+ <wizard id = "org.guvnor.tools.checkoutwizard"
+ name = "%wiz.import.resources"
category="org.guvnor.tools.importwizcat"
class="org.guvnor.tools.wizards.CheckoutWizard"
icon="icons/guvnor_rep.gif">
- <description>Checkout Projects from Guvnor</description>
+ <description>%wiz.import.resources.desc</description>
</wizard>
</extension>
- -->
+-->
<extension point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
<view id="org.guvnor.tools.views.RepositoriesView"
@@ -127,6 +127,12 @@
label="%action.popup.commit"
menubarPath="org.guvnor.tools.popupmenu/group1">
</action>
+ <action class="org.guvnor.tools.actions.AddAction"
+ enablesFor="1"
+ id="org.guvnor.tools.actions.addaction"
+ label="%action.popup.add"
+ menubarPath="org.guvnor.tools.popupmenu/group1">
+ </action>
<action class="org.guvnor.tools.actions.UpdateAction"
enablesFor="1"
id="org.guvnor.tools.actions.updateaction"
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -3,6 +3,8 @@
import java.net.MalformedURLException;
import java.net.URL;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -41,6 +43,8 @@
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ workspace.addResourceChangeListener(new ResourceChangeListener());
}
/*
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -11,6 +11,8 @@
public class GuvnorDecorator implements ILightweightLabelDecorator {
+ public static final String DECORATOR_ID = "org.guvnor.tools.decorator";
+
private boolean isGuvnorResource(Object element) {
if (element instanceof IResource) {
return GuvnorMetadataUtils.findGuvnorMetadata((IResource)element) != null;
@@ -20,17 +22,23 @@
}
private void decorateResource(IResource resource, IDecoration decoration) {
- if (resource instanceof IFile) {
- decoration.addOverlay(Activator.getImageDescriptor(Activator.IMG_GUVCONTROLLED),
- IDecoration.TOP_RIGHT);
- try {
+ try {
+ if (resource instanceof IFile) {
+ if (GuvnorMetadataUtils.isGuvnorResourceCurrent(resource)) {
+ decoration.addOverlay(
+ Activator.getImageDescriptor(Activator.IMG_GUVCONTROLLED),
+ IDecoration.TOP_RIGHT);
+ } else {
+ //TODO: Would like a different overlay icon, instead of this, but for the time being...
+ decoration.addPrefix("{g} ");
+ }
GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(resource);
if (props.getVersion() != null) {
decoration.addSuffix(" " + props.getVersion());
}
- } catch (Exception e) {
- Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
}
@@ -46,22 +54,17 @@
}
public void addListener(ILabelProviderListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO: Need to implement this?
}
- public void dispose() {
- // TODO Auto-generated method stub
-
- }
+ public void dispose() { }
public boolean isLabelProperty(Object element, String property) {
- // TODO Auto-generated method stub
+ // TODO: Need to implement this?
return false;
}
public void removeListener(ILabelProviderListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO: Need to implement this?
}
}
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-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -69,7 +69,7 @@
return res;
}
- private GuvnorRepository findRepository(String rep) {
+ public GuvnorRepository findRepository(String rep) {
GuvnorRepository theRep = null;
for (int i = 0; i < repList.size(); i++) {
if (repList.get(i).getLocation().equals(rep)) {
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -0,0 +1,62 @@
+package org.guvnor.tools;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
+
+public class ResourceChangeListener implements IResourceChangeListener {
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ try {
+ //TODO: Need to handle delete and move events as well
+ // For delete, we just remove any corresponding guvnor metadata
+ // Not clear what to do about moves...
+ event.getDelta().accept(new IResourceDeltaVisitor() {
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ try {
+ if (delta.getKind() == IResourceDelta.ADDED) {
+ handleResourceAdded(delta.getResource());
+ }
+ if (delta.getKind() == IResourceDelta.CHANGED) {
+ handleResourceChanged(delta.getResource());
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ return true;
+ }
+ });
+ } catch (CoreException e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+
+ private void handleResourceAdded(IResource resource) throws Exception {
+ if (GuvnorMetadataUtils.isGuvnorMetadata(resource)) {
+ // Look for the corresponding file
+ IFile target = GuvnorMetadataUtils.getGuvnorControlledResource(resource);
+ if (target != null) {
+ GuvnorMetadataUtils.markCurrentGuvnorResource(target);
+ }
+ } else {
+ // Look for the corresponding metadata
+ if (GuvnorMetadataUtils.isGuvnorControlledResource(resource)) {
+ GuvnorMetadataUtils.markCurrentGuvnorResource(resource);
+ }
+ }
+ }
+
+ private void handleResourceChanged(IResource resource) throws CoreException {
+ if (GuvnorMetadataUtils.getGuvnorResourceProperty(resource) != null) {
+ GuvnorMetadataUtils.markExpiredGuvnorResource(resource);
+ PlatformUtils.updateDecoration();
+ }
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -0,0 +1,67 @@
+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.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+
+public class AddAction implements IObjectActionDelegate {
+
+ private IFile selectedFile;
+
+ /**
+ * Constructor for Action1.
+ */
+ public AddAction() {
+ 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;
+ 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) {
+ IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata((IFile)sel.getFirstElement());
+ if (mdFile == 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/actions/DisconnectAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -9,12 +9,12 @@
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;
+import org.guvnor.tools.utils.PlatformUtils;
public class DisconnectAction implements IObjectActionDelegate {
@@ -47,9 +47,7 @@
try {
IWorkspace ws = mdFile.getWorkspace();
ws.delete(new IResource[] { mdFile }, true, null);
- IDecoratorManager manager = Activator.getDefault().
- getWorkbench().getDecoratorManager();
- manager.update("org.guvnor.tools.decorator");
+ PlatformUtils.updateDecoration();
} catch (CoreException e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -70,6 +70,8 @@
}
if (ins != null) {
selectedFile.setContents(ins, true, true, null);
+ GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
+ PlatformUtils.updateDecoration();
}
} catch (Exception e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -1,10 +1,16 @@
package org.guvnor.tools.utils;
+import java.io.File;
+import java.io.FileOutputStream;
import java.util.Properties;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.QualifiedName;
/**
* A set of utilities for dealing with (local) Guvnor metadata.
@@ -29,6 +35,10 @@
return res;
}
+ public static boolean isGuvnorControlledResource(IResource resource) {
+ return findGuvnorMetadata(resource) != null;
+ }
+
public static GuvnorMetadataProps getGuvnorMetadata(IResource resource) throws Exception {
IFile mdFile = findGuvnorMetadata(resource);
if (mdFile == null) {
@@ -41,4 +51,72 @@
props.getProperty("fullpath"),
props.getProperty("lastmodified"));
}
+
+ public static void setGuvnorMetadataProps(File mdFile,
+ GuvnorMetadataProps mdProps) throws Exception {
+ FileOutputStream fos = new FileOutputStream(mdFile);
+ Properties props = new Properties();
+ props.put("repository", mdProps.getRepository());
+ props.put("fullpath", mdProps.getFullpath());
+ props.put("filename", mdProps.getFilename());
+ props.put("lastmodified", mdProps.getVersion());
+ props.store(fos, null);
+ fos.flush();
+ fos.close();
+ }
+
+ public static IPath createGuvnorMetadataLocation(String rootPath) throws Exception {
+ IPath path = new Path(rootPath + File.separator + ".guvnorinfo");
+ if (!path.toFile().exists()) {
+ if (!path.toFile().mkdir()) {
+ throw new Exception("Could not create directory " + path.toOSString());
+ }
+ }
+ return path;
+ }
+
+ public static File getGuvnorMetadataFile(String path, String fname) {
+ return new File(path + File.separator + "." + fname);
+ }
+
+ public static IFile getGuvnorControlledResource(IResource resource) throws Exception {
+ if (resource instanceof IFile) {
+ Properties props = new Properties();
+ props.load(((IFile)resource).getContents());
+ return (IFile)ResourcesPlugin.getWorkspace().
+ getRoot().findMember(resource.getFullPath().
+ removeLastSegments(2).append(props.getProperty("filename")));
+ } else {
+ return null;
+ }
+ }
+
+ public static boolean isGuvnorMetadata(IResource resource) {
+ return resource.getFullPath().removeLastSegments(1).
+ toOSString().endsWith(".guvnorinfo");
+ }
+
+ public static void markCurrentGuvnorResource(IResource resource) throws CoreException {
+ resource.setPersistentProperty(generateQualifiedName("version"), "current");
+ }
+
+ public static void markExpiredGuvnorResource(IResource resource) throws CoreException {
+ resource.setPersistentProperty(generateQualifiedName("version"), "expired");
+ }
+
+ public static String getGuvnorResourceProperty(IResource resource) throws CoreException {
+ return resource.getPersistentProperty(generateQualifiedName("version"));
+ }
+
+ public static boolean isGuvnorResourceCurrent(IResource resource) throws CoreException {
+ String ver = resource.getPersistentProperty(generateQualifiedName("version"));
+ if (ver == null) {
+ return false;
+ }
+ return ver.equals("current");
+ }
+
+ private static QualifiedName generateQualifiedName(String attr) {
+ return new QualifiedName("org.guvnor.tools", attr);
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -11,12 +11,14 @@
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IDecoratorManager;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorDecorator;
import org.guvnor.tools.utils.webdav.IWebDavClient;
import org.guvnor.tools.utils.webdav.WebDavClientFactory;
import org.guvnor.tools.utils.webdav.WebDavServerCache;
@@ -42,6 +44,10 @@
return instance;
}
+ public static void updateDecoration() {
+ IDecoratorManager manager = Activator.getDefault().getWorkbench().getDecoratorManager();
+ manager.update(GuvnorDecorator.DECORATOR_ID);
+ }
/**
* Opens a read-only, in-memory editor.
* @param contents The contents for the editor
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -48,11 +48,19 @@
* Lists a directory (collection) in WebDav.
* @param path The directory (collection) to list
* @return An association of directory content names and their properties
- * @throws Exception Exception Various WebDav errors can occur (See IResponse for details)
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
*/
public Map<String, ResourceProperties> listDirectory(String path) throws Exception;
/**
+ * Queries the server for properties of a given resource.
+ * @param resource The resource to get properties for
+ * @return The resource properties
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
+ */
+ public ResourceProperties queryProperties(String resource) throws Exception;
+
+ /**
* Get the contents of a resource from a WebDav repository.
* @param resource The address of the resource
* @return The contents of the resource
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -115,6 +115,41 @@
/*
* (non-Javadoc)
+ * @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);
+ }
+ }
+ try {
+ IContext context = createContext();
+ context.put("Depth", "1");
+ ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+ IResponse response = client.propfind(locator, context, null);
+ if (response.getStatusCode() != IResponse.SC_MULTI_STATUS
+ && 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);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
* @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceContents(java.lang.String)
*/
public String getResourceContents(String resource) 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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -19,6 +19,8 @@
private DeferredTreeContentManager manager;
private AbstractTreeViewer viewer;
+ private String repUrl;
+
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
if (v instanceof AbstractTreeViewer) {
viewer = (AbstractTreeViewer)v;
@@ -56,15 +58,32 @@
}
private void initialize() {
+ boolean shouldAdd = true;
invisibleRoot = new TreeParent("", TreeObject.Type.NONE);
List<GuvnorRepository> reps = Activator.getLocationManager().getRepositories();
for (int i = 0; i < reps.size(); i++) {
- TreeParent p = new TreeParent(reps.get(i).getLocation(), TreeObject.Type.REPOSITORY);
- p.setGuvnorRepository(reps.get(i));
- ResourceProperties props = new ResourceProperties();
- props.setBase("");
- p.setResourceProps(props);
- invisibleRoot.addChild(p);
+ if (repUrl != null) {
+ if (repUrl.equals(reps.get(i).getLocation())) {
+ shouldAdd = true;
+ } else {
+ shouldAdd = false;
+ }
+ } else {
+ shouldAdd = true;
+ }
+ if (shouldAdd) {
+ TreeParent p = new TreeParent(reps.get(i).getLocation(),
+ TreeObject.Type.REPOSITORY);
+ p.setGuvnorRepository(reps.get(i));
+ ResourceProperties props = new ResourceProperties();
+ props.setBase("");
+ p.setResourceProps(props);
+ invisibleRoot.addChild(p);
+ }
}
}
+
+ public void setRepositorySelection(String repUrl) {
+ this.repUrl = repUrl;
+ }
}
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -7,7 +7,6 @@
import java.rmi.server.UID;
import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
@@ -43,6 +42,8 @@
import org.guvnor.tools.Activator;
import org.guvnor.tools.GuvnorRepository;
import org.guvnor.tools.GuvnorLocationManager.IRepositorySetListener;
+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;
@@ -157,22 +158,18 @@
writer.close();
res.add(transfer.getAbsolutePath());
- IPath metaPath = new Path(path.toOSString() + File.separator + ".guvnorinfo");
- if (!metaPath.toFile().mkdir()) {
- throw new Exception("Could not create directory " + metaPath.toOSString());
- }
+ IPath metaPath = GuvnorMetadataUtils.
+ createGuvnorMetadataLocation(path.toOSString());
metaPath.toFile().deleteOnExit();
- File metaFile = new File(metaPath.toOSString() + File.separator + "." + node.getName());
+ File metaFile = GuvnorMetadataUtils.
+ getGuvnorMetadataFile(metaPath.toOSString(), node.getName());
metaFile.deleteOnExit();
- fos = new FileOutputStream(metaFile);
- Properties props = new Properties();
- props.put("repository", node.getGuvnorRepository().getLocation());
- props.put("fullpath", node.getFullPath());
- props.put("filename", node.getName());
- props.put("lastmodified", node.getResourceProps().getLastModifiedDate());
- props.store(fos, null);
- fos.flush();
- fos.close();
+ GuvnorMetadataProps mdProps =
+ new GuvnorMetadataProps(node.getName(),
+ node.getGuvnorRepository().getLocation(),
+ node.getFullPath(),
+ node.getResourceProps().getLastModifiedDate());
+ GuvnorMetadataUtils.setGuvnorMetadataProps(metaFile, mdProps);
res.add(metaFile.getAbsolutePath());
return res;
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -1,20 +1,29 @@
package org.guvnor.tools.wizards;
+import java.util.Properties;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.webdav.IWebDavClient;
+import org.guvnor.tools.utils.webdav.ResourceProperties;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
public class CheckoutWizard extends Wizard implements INewWizard, IGuvnorWizard {
private GuvnorMainConfigPage mainConfigPage;
private SelectGuvnorRepPage selectRepPage;
private SelectGuvnorResourcesPage selectResPage;
- private SelectTargetLocationPage targetLocationPage;
- private WizardNewProjectCreationPage createProjectPage;
- private SelectResourceVersionPage selectVerPage;
+ private SelectLocalTargetPage selectLocalTargetPage;
+// private SelectResourceVersionPage selectVerPage;
private GuvWizardModel model;
@@ -42,32 +51,44 @@
mainConfigPage.setDescription("Creates a connection to a Guvnor repository");
super.addPage(mainConfigPage);
- selectResPage = new SelectGuvnorResourcesPage("select_res_page", "Select Guvnor repository location",
+ selectResPage = new SelectGuvnorResourcesPage("select_res_page", "Select resources",
Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
- selectResPage.setDescription("Select resources from the Guvnor repository to check out");
+ selectResPage.setDescription("Select resources to copy from the Guvnor repository");
super.addPage(selectResPage);
- targetLocationPage = new SelectTargetLocationPage("select_targetloc_page", "Select target location",
- Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
- targetLocationPage.setDescription("Select the location to check out the resources");
- super.addPage(targetLocationPage);
+ selectLocalTargetPage = new SelectLocalTargetPage("local_target_page", "Select copy location",
+ Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+ selectLocalTargetPage.setDescription("Select the destination location");
+ super.addPage(selectLocalTargetPage);
- createProjectPage = new WizardNewProjectCreationPage("new_project_page");
- createProjectPage.setImageDescriptor(Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
- createProjectPage.setTitle("Create a new project");
- createProjectPage.setDescription("Specify the name of the new project to create");
- super.addPage(createProjectPage);
+// selectVerPage = new SelectResourceVersionPage("select_version_page", "Select resource versions",
+// Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+// selectVerPage.setDescription("Select the version of the resources to check out");
+// super.addPage(selectVerPage);
- selectVerPage = new SelectResourceVersionPage("select_version_page", "Select resource versions",
- Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
- selectVerPage.setDescription("Select the version of the resources to check out");
- super.addPage(selectVerPage);
-
super.addPages();
}
@Override
public boolean performFinish() {
+ try {
+ IWebDavClient webdav = WebDavServerCache.getWebDavClient(model.getRepLocation());
+ // During the course of the wizard, the user had to drill into a Guvnor repository
+ // to choose resources. Therefore, we should have a cached repository connection
+ // that is authenticated already. If not, something is really strange.
+ assert(webdav != null);
+ IPath metaPath = GuvnorMetadataUtils.createGuvnorMetadataLocation(model.getTargetLocation());
+ IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
+ for (String oneResource:model.getResources()) {
+ // Get the metadata properties
+ ResourceProperties resprops = webdav.queryProperties(oneResource);
+ if (resprops == null) {
+ throw new Exception("Null resource properties for " + oneResource);
+ }
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
return true;
}
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -9,8 +9,7 @@
private boolean createNewRep;
private boolean saveAuthInfo;
- private String targetProject;
- private boolean createNewProj;
+ private String targetLocation;
private List<String> resources;
private String version;
@@ -33,27 +32,21 @@
public void setPassword(String password) {
this.password = password;
}
- public boolean isCreateNewRep() {
+ public boolean shouldCreateNewRep() {
return createNewRep;
}
public void setCreateNewRep(boolean createNewRep) {
this.createNewRep = createNewRep;
}
- public String getTargetProject() {
- return targetProject;
+ public String getTargetLocation() {
+ return targetLocation;
}
- public void setTargetProject(String targetProject) {
- this.targetProject = targetProject;
+ public void setTargetLocation(String targetLocation) {
+ this.targetLocation = targetLocation;
}
- public boolean isCreateNewProj() {
- return createNewProj;
- }
public boolean shouldSaveAuthInfo() {
return saveAuthInfo;
}
- public void setCreateNewProj(boolean createNewProj) {
- this.createNewProj = createNewProj;
- }
public void setSaveAuthInfo(boolean saveAuthInfo) {
this.saveAuthInfo = saveAuthInfo;
}
@@ -70,8 +63,9 @@
this.version = version;
}
- public boolean isModelComplete() {
- // TODO: Check if model is complete
- return true;
+ public boolean isModelComplete() {
+ return this.repLocation != null &&
+ this.targetLocation != null &&
+ this.resources != null;
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -57,6 +57,8 @@
});
addDropSupport(serverField);
+ serverField.setFocus();
+
new Label(composite, SWT.NONE).setText("Port: ");
portField = new Text(composite, SWT.SINGLE | SWT.BORDER);
portField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -165,7 +167,9 @@
try {
URL server = new URL(dropped);
serverField.setText(server.getHost());
- portField.setText(String.valueOf(server.getPort()));
+ if (server.getPort() != -1) {
+ portField.setText(String.valueOf(server.getPort()));
+ }
replocField.setText(server.getFile());
} catch (MalformedURLException e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
@@ -191,13 +195,17 @@
model.setPassword(pwField.getText());
model.setSaveAuthInfo(saveAuthInfo);
model.setCreateNewRep(true);
- GuvnorMainConfigPage.super.setPageComplete(true);
} catch (Exception e) {
- GuvnorMainConfigPage.super.setPageComplete(false);
+ model.setRepLocation(null);
}
+ super.getWizard().getContainer().updateButtons();
}
private URL validateUrl() throws Exception {
+ // If the server text box is empty, this is not a valid location
+ if (serverField.getText().trim().length() == 0) {
+ return null;
+ }
// First we'll test if the server text box is a complete
// URL in itself. If so, we'll parse it out into the other
// fields and leave early
@@ -235,4 +243,10 @@
}
return res;
}
+
+ @Override
+ public boolean isPageComplete() {
+ GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+ return model.getRepLocation() != null;
+ }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/NewRepLocationWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/NewRepLocationWizard.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/NewRepLocationWizard.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -1,26 +1,15 @@
package org.guvnor.tools.wizards;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.guvnor.tools.Activator;
-import org.guvnor.tools.GuvnorRepository;
-import org.guvnor.tools.utils.webdav.IWebDavClient;
-import org.guvnor.tools.utils.webdav.WebDavClientFactory;
-import org.guvnor.tools.utils.webdav.WebDavServerCache;
-import org.guvnor.tools.utils.webdav.WebDavSessionAuthenticator;
public class NewRepLocationWizard extends Wizard implements INewWizard, IGuvnorWizard {
private GuvnorMainConfigPage mainPage;
-// private IWorkbench workbench;
private GuvWizardModel model = new GuvWizardModel();
@@ -44,21 +33,7 @@
@Override
public boolean performFinish() {
try {
- Activator.getLocationManager().addRepository(new GuvnorRepository(model.getRepLocation()));
- URL serverUrl = new URL(model.getRepLocation());
- Map<String, String> info = new HashMap<String, String>();
- info.put("username", model.getUsername());
- info.put("password", model.getPassword());
- if (model.shouldSaveAuthInfo()) {
- Platform.addAuthorizationInfo(serverUrl, "", "basic", info);
- } else {
- IWebDavClient client = WebDavClientFactory.createClient(serverUrl);
- WebDavServerCache.cacheWebDavClient(serverUrl.toString(), client);
- WebDavSessionAuthenticator authen = new WebDavSessionAuthenticator();
- authen.addAuthenticationInfo(serverUrl, "", "basic", info);
- client.setSessionAuthenticator(authen);
- client.setSessionAuthentication(true);
- }
+ WizardUtils.createGuvnorRepository(model);
} catch (Exception e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
@@ -69,7 +44,5 @@
* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
*/
- public void init(IWorkbench workbench, IStructuredSelection selection) {
-// this.workbench = workbench;
- }
+ public void init(IWorkbench workbench, IStructuredSelection selection) { }
}
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-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -59,6 +59,13 @@
repLocations = new List(composite, SWT.BORDER | SWT.MULTI);
repLocations.setLayoutData(new GridData(GridData.FILL_BOTH));
+ repLocations.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) { }
+
+ public void widgetSelected(SelectionEvent e) {
+ updateModel();
+ }
+ });
addRepositoryList();
super.setControl(composite);
}
@@ -70,6 +77,7 @@
}
if (repLocations.getItemCount() > 0) {
repLocations.setSelection(0);
+ updateModel();
}
}
@@ -82,8 +90,19 @@
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return composite;
}
-
- @Override
+
+ 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");
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -1,76 +1,31 @@
package org.guvnor.tools.wizards;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
+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.viewers.Viewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.progress.DeferredTreeContentManager;
+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 SelectGuvnorResourcesPage extends WizardPage {
- class ResourcesContentProvider implements IStructuredContentProvider,
- ITreeContentProvider {
- private TreeParent invisibleRoot;
- private DeferredTreeContentManager manager;
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- if (resourceTree instanceof AbstractTreeViewer) {
- manager = new DeferredTreeContentManager(this, (AbstractTreeViewer)resourceTree);
- }
- }
- public void dispose() {
- }
- public Object[] getElements(Object parent) {
- if (parent.equals(SelectGuvnorResourcesPage.this)) {
- if (invisibleRoot == null) initialize();
- return getChildren(invisibleRoot);
- }
- return getChildren(parent);
- }
- public Object getParent(Object child) {
- if (child instanceof TreeObject) {
- return ((TreeObject)child).getParent();
- }
- return null;
- }
- public Object [] getChildren(Object parent) {
- if (parent == invisibleRoot) {
- return ((TreeParent)invisibleRoot).getChildren();
- } else if (parent instanceof TreeParent) {
- return manager.getChildren(parent);
- }
- return new Object[0];
- }
- public boolean hasChildren(Object parent) {
- if (parent instanceof TreeParent) {
- return manager.mayHaveChildren(parent);
- }
- return false;
- }
-
- private void initialize() {
- invisibleRoot = new TreeParent("", TreeObject.Type.NONE);
- for (int i = 0; i < 4; i++) {
- TreeParent p = new TreeParent("Package" + String.valueOf(i + 1),
- TreeObject.Type.PACKAGE);
- invisibleRoot.addChild(p);
- }
- }
- }
+ private TreeViewer viewer;
+ private String previousSelection;
- private TreeViewer resourceTree;
-
public SelectGuvnorResourcesPage(String pageName) {
super(pageName);
}
@@ -83,15 +38,71 @@
Composite composite = createComposite(parent, 1);
new Label(composite, SWT.NONE).setText("Select resources:");
- resourceTree = new TreeViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- resourceTree.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
- resourceTree.setContentProvider(new ResourcesContentProvider());
- resourceTree.setLabelProvider(new RepositoryLabelProvider());
- resourceTree.setInput(this);
-
+ viewer = new TreeViewer(composite, SWT.BORDER | SWT.MULTI | 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);
@@ -101,4 +112,18 @@
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return composite;
}
+
+ @SuppressWarnings("unchecked")
+ private void updateModel() {
+ IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
+ if (!selection.isEmpty()) {
+ List<String> resources = new ArrayList<String>();
+ List<TreeObject> nodes = selection.toList();
+ for (TreeObject o:nodes) {
+ resources.add(o.getFullPath());
+ }
+ GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+ model.setResources(resources);
+ }
+ }
}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectLocalTargetPage.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -0,0 +1,79 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.ResourcesPlugin;
+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.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+public class SelectLocalTargetPage extends WizardPage {
+
+ private TreeViewer viewer;
+
+ public SelectLocalTargetPage(String pageName) {
+ super(pageName);
+ }
+
+ public SelectLocalTargetPage(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 location:");
+
+ 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 WorkbenchLabelProvider());
+ WorkbenchContentProvider cp = new WorkbenchContentProvider();
+ viewer.setContentProvider(cp);
+ viewer.setFilters(new ViewerFilter[] { new ProjectFilter() });
+ viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateModel();
+ }
+ });
+ viewer.setInput(ResourcesPlugin.getWorkspace());
+ super.setControl(composite);
+ }
+
+ private Composite createComposite(Composite parent, int numColumns) {
+ Composite composite = new Composite(parent, SWT.NULL);
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ return composite;
+ }
+
+ private void updateModel() {
+ IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
+ if (!selection.isEmpty()
+ && selection.getFirstElement() instanceof IContainer) {
+ IContainer container = (IContainer)selection.getFirstElement();
+ GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+ model.setTargetLocation(container.getFullPath().toString());
+ super.getWizard().getContainer().updateButtons();
+ }
+ }
+
+ class ProjectFilter extends ViewerFilter {
+ @Override
+ public boolean select(Viewer viewer, Object parent, Object element) {
+ return element instanceof IContainer;
+ }
+ }
+}
Deleted: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.java 2008-07-03 19:52:20 UTC (rev 20897)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -1,99 +0,0 @@
-package org.guvnor.tools.wizards;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-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;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-
-public class SelectTargetLocationPage extends WizardPage {
-
- private Button createProj;
- private Button existingProj;
- private List candidateProjs;
-
- public SelectTargetLocationPage(String pageName) {
- super(pageName);
- }
-
- public SelectTargetLocationPage(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("Check out files to");
-
- createProj = new Button(composite, SWT.RADIO);
- createProj.setText("Create a new project");
- createProj.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- createProj.setSelection(false);
- createProj.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) { }
-
- public void widgetSelected(SelectionEvent e) {
- candidateProjs.setEnabled(existingProj.getSelection());
- }
- });
-
- existingProj = new Button(composite, SWT.RADIO);
- existingProj.setText("Use an existing project");
- existingProj.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- existingProj.setSelection(true);
- existingProj.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) { }
-
- public void widgetSelected(SelectionEvent e) {
- candidateProjs.setEnabled(existingProj.getSelection());
- }
- });
-
- candidateProjs = new List(composite, SWT.BORDER | SWT.MULTI);
- candidateProjs.setLayoutData(new GridData(GridData.FILL_BOTH));
- addCandidateProjList();
- super.setControl(composite);
- }
-
- private void addCandidateProjList() {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IProject[] projects = workspace.getRoot().getProjects();
- for (int i = 0; i < projects.length; i++) {
-// if (RepositoryProvider.getProvider(
-// projects[i],"GuvnorRepProvider") != null) {
- candidateProjs.add(projects[i].getName());
-// }
- }
- if (candidateProjs.getItemCount() > 0) {
- candidateProjs.setSelection(0);
- }
- }
-
- private Composite createComposite(Composite parent, int numColumns) {
- Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return composite;
- }
-
- @Override
- public IWizardPage getNextPage() {
- if (createProj.getSelection()) {
- return getWizard().getPage("new_project_page");
- } else {
- return getWizard().getPage("select_version_page");
- }
- }
-}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/WizardUtils.java 2008-07-03 22:10:23 UTC (rev 20898)
@@ -0,0 +1,33 @@
+package org.guvnor.tools.wizards;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Platform;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.webdav.IWebDavClient;
+import org.guvnor.tools.utils.webdav.WebDavClientFactory;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
+import org.guvnor.tools.utils.webdav.WebDavSessionAuthenticator;
+
+public class WizardUtils {
+ public static void createGuvnorRepository(GuvWizardModel model) throws Exception {
+ Activator.getLocationManager().addRepository(new GuvnorRepository(model.getRepLocation()));
+ URL serverUrl = new URL(model.getRepLocation());
+ Map<String, String> info = new HashMap<String, String>();
+ info.put("username", model.getUsername());
+ info.put("password", model.getPassword());
+ if (model.shouldSaveAuthInfo()) {
+ Platform.addAuthorizationInfo(serverUrl, "", "basic", info);
+ } else {
+ IWebDavClient client = WebDavClientFactory.createClient(serverUrl);
+ WebDavServerCache.cacheWebDavClient(serverUrl.toString(), client);
+ WebDavSessionAuthenticator authen = new WebDavSessionAuthenticator();
+ authen.addAuthenticationInfo(serverUrl, "", "basic", info);
+ client.setSessionAuthenticator(authen);
+ client.setSessionAuthentication(true);
+ }
+ }
+}
More information about the jboss-svn-commits
mailing list