[jboss-svn-commits] JBL Code SVN: r20593 - in labs/jbossrules/trunk/drools-eclipse: org.guvnor.tools and 12 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 18 11:59:32 EDT 2008
Author: john.graham at jboss.org
Date: 2008-06-18 11:59:32 -0400 (Wed, 18 Jun 2008)
New Revision: 20593
Added:
labs/jbossrules/trunk/drools-eclipse/.project
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.classpath
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.project
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/about.html
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/bin/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/build.properties
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_controlled.gif
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep.gif
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_add.gif
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_wizban.gif
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/
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/GuvnorLocationManager.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorRepository.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/perspectives/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/perspectives/GuvnorRepExplorerPerspective.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/
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/StringInput.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringStorage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/StreamProcessingUtils.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavAuthenticator.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/utils/webdav/WebDavServerCache.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/IGuvnorConstants.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/RepositoryLabelProvider.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeObject.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/
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/GuvWizNewProjectPage.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/IGuvnorWizard.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
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.java
Log:
Initial drop of org.guvnor.tools plug-in
Added: labs/jbossrules/trunk/drools-eclipse/.project
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/.project (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/.project 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>drools-eclipse</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.classpath 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.project
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.project (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.project 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.guvnor.tools</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JBoss Guvnor Tools Plug-in
+Bundle-SymbolicName: org.guvnor.tools;singleton:=true
+Bundle-Version: 0.5.0
+Bundle-Activator: org.guvnor.tools.Activator
+Bundle-Vendor: JBoss.org
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.webdav
+Eclipse-LazyStart: true
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/about.html
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/about.html (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/about.html 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2008</p>
+<h3>License</h3>
+
+<p>JBoss, a Division of Red Hat makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from JBoss, a Division of Red Hat, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/build.properties
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/build.properties (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/build.properties 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ about.html
+src.includes = about.html,\
+ src/
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_controlled.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_controlled.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_add.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_add.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_wizban.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/icons/guvnor_rep_wizban.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension point="org.eclipse.ui.views">
+ <category name="Guvnor" id="org.guvnor.tools"/>
+ <view name="Guvnor Repositories"
+ icon="icons/guvnor_rep.gif"
+ category="org.guvnor.tools"
+ class="org.guvnor.tools.views.RepositoryView"
+ id="org.guvnor.tools.views.RepositoryView"/>
+ <view category="org.guvnor.tools"
+ class="org.guvnor.tools.views.ResourceHistoryView"
+ icon="icons/guvnor_rep.gif"
+ id="org.guvnor.tools.views.ResourceHistoryView"
+ name="Guvnor Resource History"/>
+ </extension>
+
+ <extension point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
+ <view ratio="0.5"
+ relative="org.eclipse.ui.views.TaskList"
+ relationship="right"
+ id="org.guvnor.tools.views.RepositoryView"/>
+ </perspectiveExtension>
+ </extension>
+
+ <extension point = "org.eclipse.ui.newWizards">
+ <category id = "org.guvnor.tools.wizcat" name="Guvnor"/>
+ <!--
+ <wizard id = "org.guvnor.tools.wizards.CheckoutWizard"
+ name = "Checkout Projects from Guvnor"
+ class="org.guvnor.tools.wizards.CheckoutWizard"
+ category="org.guvnor.tools.wizcat"
+ project="true"
+ icon="icons/guvnor_rep.gif">
+ <description>Checkout Projects from Guvnor</description>
+ </wizard>
+ -->
+ <wizard id = "org.guvnor.tools.wizards.NewRepLocationWizard"
+ name = "Guvnor repository location"
+ class="org.guvnor.tools.wizards.NewRepLocationWizard"
+ category="org.guvnor.tools.wizcat"
+ icon="icons/guvnor_rep.gif">
+ <description>New Guvnor repository location</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="org.guvnor.tools.importwizcat"
+ class="org.guvnor.tools.wizards.CheckoutWizard"
+ icon="icons/guvnor_rep.gif">
+ <description>Checkout Projects from Guvnor</description>
+ </wizard>
+ </extension>
+ -->
+ <extension point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
+ <view id="org.guvnor.tools.views.RepositoriesView"
+ ratio="0.5"
+ relationship="right"
+ relative="org.eclipse.ui.views.TaskList"/>
+ </perspectiveExtension>
+ <perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
+ <view id="org.guvnor.tools.views.ResourceHistoryView"
+ ratio="0.5"
+ relationship="right"
+ relative="org.eclipse.ui.views.TaskList"/>
+ </perspectiveExtension>
+ </extension>
+
+ <extension point="org.eclipse.ui.perspectives">
+ <perspective name="Guvnor Repository Exploring"
+ icon="icons/guvnor_rep.gif"
+ class="org.guvnor.tools.perspectives.GuvnorRepExplorerPerspective"
+ id="org.guvnor.tools.perspectives.GuvnorRepExplorerPerspective"/>
+ </extension>
+</plugin>
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,126 @@
+package org.guvnor.tools;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.drools.guvnor";
+
+ // The shared instance
+ private static Activator plugin;
+
+ private static GuvnorLocationManager locManager;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ public static GuvnorLocationManager getLocationManager() {
+ if (locManager == null) {
+ locManager = new GuvnorLocationManager();
+ }
+ return locManager;
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public void writeLog(int severity, String msg, Throwable t) {
+ IStatus status = new Status(severity, PLUGIN_ID, msg, t);
+ super.getLog().log(status);
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String id) {
+ ImageDescriptor img = getCachedImageDescriptor(id);
+ if (img == null) {
+ img = loadImageDescriptor(id);
+ }
+ return img;
+ }
+
+ private static ImageDescriptor loadImageDescriptor(String id) {
+ String iconPath = "icons/"; //$NON-NLS-1$
+
+ try {
+ URL installURL = Activator.getDefault().getBundle().getEntry("/"); //$NON-NLS-1$
+ URL url = new URL(installURL, iconPath + id);
+ return ImageDescriptor.createFromURL(url);
+ } catch (MalformedURLException e) {
+ return ImageDescriptor.getMissingImageDescriptor();
+ }
+ }
+
+ private static ImageDescriptor getCachedImageDescriptor(String id) {
+ ImageDescriptor img = null;
+ if (id.equals(IMG_GUVCONTROLLED)) {
+ if (GUVCONTROLLED_IMG == null) {
+ GUVCONTROLLED_IMG = loadImageDescriptor(IMG_GUVCONTROLLED);
+ }
+ img = GUVCONTROLLED_IMG;
+ }
+ if (id.equals(IMG_GUVLOCADD)) {
+ if (GUVLOCADD_IMG == null) {
+ GUVLOCADD_IMG = loadImageDescriptor(IMG_GUVLOCADD);
+ }
+ img = GUVLOCADD_IMG;
+ }
+ if (id.equals(IMG_GUVREPWIZBAN)) {
+ if (GUVREPWIZBAN_IMG == null) {
+ GUVREPWIZBAN_IMG = loadImageDescriptor(IMG_GUVREPWIZBAN);
+ }
+ img = GUVREPWIZBAN_IMG;
+ }
+ return img;
+ }
+
+ private static ImageDescriptor GUVCONTROLLED_IMG;
+ private static ImageDescriptor GUVLOCADD_IMG;
+ private static ImageDescriptor GUVREPWIZBAN_IMG;
+
+ public static final String IMG_GUVCONTROLLED = "guvnor_controlled.gif";
+ public static final String IMG_GUVLOCADD = "guvnor_rep_add.gif";
+ public static final String IMG_GUVREPWIZBAN = "guvnor_rep_wizban.gif";
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorLocationManager.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,147 @@
+package org.guvnor.tools;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+
+public class GuvnorLocationManager {
+
+ private static final String REP_CACHE_NAME = ".replist";
+
+ private ArrayList<GuvnorRepository> repList = new ArrayList<GuvnorRepository>();
+
+ /*
+ * Package restricted
+ */
+ GuvnorLocationManager() {
+ try {
+ load();
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+
+ public void addRespository(String location, String username, String password) throws Exception {
+ addRepository(new GuvnorRepository(location, username, password));
+ }
+
+ public void addRepository(GuvnorRepository rep) throws Exception {
+ if (findRepository(rep.getLocation()) != null) {
+ throw new Exception("Duplicate repository: " + rep.getLocation());
+ }
+ repList.add(rep);
+ notifyListeners(IRepositorySetListener.REP_ADDED);
+ try {
+ commit();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public List<GuvnorRepository> getRepositories() {
+ return repList;
+ }
+
+ public boolean removeRepository(String rep) {
+ GuvnorRepository theRep = findRepository(rep);
+ if (theRep == null) {
+ return false;
+ }
+ boolean res = repList.remove(theRep);
+ notifyListeners(IRepositorySetListener.REP_ADDED);
+ try {
+ commit();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return res;
+ }
+
+ private GuvnorRepository findRepository(String rep) {
+ GuvnorRepository theRep = null;
+ for (int i = 0; i < repList.size(); i++) {
+ if (repList.get(i).getLocation().equals(rep)) {
+ theRep = repList.get(i);
+ break;
+ }
+ }
+ return theRep;
+ }
+
+ private void commit() throws Exception {
+ File repFile = Activator.getDefault().getStateLocation().
+ append(REP_CACHE_NAME).toFile();
+ FileOutputStream fos = new FileOutputStream(repFile);
+ PrintWriter writer = new PrintWriter(fos);
+ for (int i = 0; i < repList.size(); i++) {
+ GuvnorRepository oneRep = repList.get(i);
+ writer.println(oneRep.getLocation());
+ writer.println(oneRep.getUsername());
+ writer.println(oneRep.getPassword());
+ }
+ writer.flush();
+ fos.flush();
+ fos.close();
+ }
+
+ private void load() throws Exception {
+ repList.clear();
+ File repFile = Activator.getDefault().getStateLocation().
+ append(REP_CACHE_NAME).toFile();
+ if (!repFile.exists()) {
+ return;
+ }
+ FileInputStream fis = new FileInputStream(repFile);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
+ String oneRep = null;
+ do {
+ oneRep = reader.readLine();
+ if (oneRep != null && oneRep.trim().length() == 0) {
+ oneRep = null;
+ }
+ String oneUN = reader.readLine();
+ String onePW = reader.readLine();
+ if (oneRep != null) {
+ if (oneUN != null && onePW != null) {
+ repList.add(new GuvnorRepository(oneRep, oneUN, onePW));
+ } else {
+ System.out.println("incomplete rep: " + oneRep);
+ }
+ }
+ } while (oneRep != null);
+ }
+
+ public interface IRepositorySetListener {
+ public static final int REP_ADDED = 0;
+ public static final int REP_REMOVED = 1;
+
+ public void repositorySetChanged(int type, List<GuvnorRepository> repList);
+ }
+
+ private List<IRepositorySetListener> repsetListeners = new ArrayList<IRepositorySetListener>();
+
+ public boolean addRepositorySetListener(IRepositorySetListener listener) {
+ return repsetListeners.add(listener);
+ }
+
+ public boolean removeRepositorySetListener(IRepositorySetListener listener) {
+ return repsetListeners.remove(listener);
+ }
+
+ private void notifyListeners(int eventType) {
+ for (int i = 0; i < repsetListeners.size(); i++) {
+ try {
+ repsetListeners.get(i).repositorySetChanged(eventType, repList);
+ } catch (Throwable t) {
+ Activator.getDefault().writeLog(IStatus.ERROR, t.getMessage(), t);
+ }
+ }
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorRepository.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorRepository.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,25 @@
+package org.guvnor.tools;
+
+public class GuvnorRepository {
+ private String location;
+ private String username;
+ private String password;
+
+ public GuvnorRepository(String location, String username, String password) {
+ this.location = location;
+ this.username = username;
+ this.password = password;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/perspectives/GuvnorRepExplorerPerspective.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/perspectives/GuvnorRepExplorerPerspective.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/perspectives/GuvnorRepExplorerPerspective.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,43 @@
+package org.guvnor.tools.perspectives;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+import org.guvnor.tools.views.IGuvnorConstants;
+
+public class GuvnorRepExplorerPerspective implements IPerspectiveFactory {
+
+ public void createInitialLayout(IPageLayout layout) {
+ String editorArea = layout.getEditorArea();
+ IFolderLayout top =
+ layout.createFolder("top", IPageLayout.LEFT, 0.40f, editorArea); //$NON-NLS-1$
+ top.addView(IGuvnorConstants.REPVIEW_ID);
+ IFolderLayout botLeft =
+ layout.createFolder("botleft", IPageLayout.BOTTOM, 0.70f, "top");
+// botLeft.addView(IPageLayout.ID_OUTLINE);
+ botLeft.addView(IPageLayout.ID_PROP_SHEET);
+ layout.addView(IGuvnorConstants.RESHISTORYVIEW_ID, IPageLayout.BOTTOM, 0.70f, editorArea);
+ layout.setEditorAreaVisible(true);
+
+ addActions(layout);
+ }
+
+ private void addActions(IPageLayout layout) {
+ // Add "new wizards". They will be present in File/New menu
+ layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.project"); //$NON-NLS-1$
+ layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.folder"); //$NON-NLS-1$
+ layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file"); //$NON-NLS-1$
+
+ // Add "show views". They will be present in "show view" menu
+ layout.addShowViewShortcut(IPageLayout.ID_RES_NAV);
+ layout.addShowViewShortcut(IPageLayout.ID_PROP_SHEET);
+// layout.addShowViewShortcut(IPageLayout.ID_OUTLINE);
+// layout.addShowViewShortcut(IPageLayout.ID_TASK_LIST);
+ layout.addShowViewShortcut(IGuvnorConstants.RESHISTORYVIEW_ID);
+ layout.addShowViewShortcut(IGuvnorConstants.REPVIEW_ID);
+
+ // Add "perspective short cut"
+ layout.addPerspectiveShortcut("org.eclipse.ui.resourcePerspective"); //$NON-NLS-1$
+ layout.addPerspectiveShortcut("org.eclipse.team.ui.TeamSynchronizingPerspective"); //$NON-NLS-1$
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/PlatformUtils.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,29 @@
+package org.guvnor.tools.utils;
+
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.IStatus;
+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;
+
+public class PlatformUtils {
+ public static void openEditor(String contents, String name) {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ IStorage storage = new StringStorage(contents, name);
+ IStorageEditorInput input = new StringInput(storage);
+ IWorkbenchPage page = window.getActivePage();
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(name);
+ String editorId = desc != null?desc.getId():"org.eclipse.ui.DefaultTextEditor";
+ try {
+ if (page != null) {
+ page.openEditor(input, editorId);
+ }
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringInput.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringInput.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringInput.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,39 @@
+package org.guvnor.tools.utils;
+
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IStorageEditorInput;
+
+public class StringInput extends PlatformObject implements IStorageEditorInput {
+ private IStorage storage;
+
+ public StringInput(IStorage storage) {
+ this.storage = storage;
+ }
+
+ public boolean exists() {
+ return true;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ public String getName() {
+ return storage.getName();
+ }
+
+ public IPersistableElement getPersistable() {
+ return null;
+ }
+
+ public IStorage getStorage() {
+ return storage;
+ }
+
+ public String getToolTipText() {
+ return "String-based file: " + storage.getName();
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringStorage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringStorage.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/StringStorage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,35 @@
+package org.guvnor.tools.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.PlatformObject;
+
+public class StringStorage extends PlatformObject implements IStorage {
+ private String contents;
+ private String name;
+
+ public StringStorage(String contents, String name) {
+ this.contents = contents;
+ this.name = name;
+ }
+
+ public InputStream getContents() throws CoreException {
+ return new ByteArrayInputStream(contents.getBytes());
+ }
+
+ public IPath getFullPath() {
+ return null;
+ }
+
+ public String getName() {
+ return name + " (Read only)";
+ }
+
+ public boolean isReadOnly() {
+ return true;
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/ResourceProperties.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,33 @@
+package org.guvnor.tools.utils.webdav;
+
+public class ResourceProperties {
+ private boolean isDirectory;
+ private String creationDate;
+ private String lastModifiedDate;
+ private String base;
+
+ public String getBase() {
+ return base;
+ }
+ public void setBase(String base) {
+ this.base = base;
+ }
+ public boolean isDirectory() {
+ return isDirectory;
+ }
+ public void setDirectory(boolean isDirectory) {
+ this.isDirectory = isDirectory;
+ }
+ public String getCreationDate() {
+ return creationDate != null?creationDate:"";
+ }
+ public void setCreationDate(String creationDate) {
+ this.creationDate = creationDate;
+ }
+ public String getLastModifiedDate() {
+ return lastModifiedDate != null?lastModifiedDate:"";
+ }
+ public void setLastModifiedDate(String lastModifiedDate) {
+ this.lastModifiedDate = lastModifiedDate;
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/StreamProcessingUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/StreamProcessingUtils.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/StreamProcessingUtils.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,90 @@
+package org.guvnor.tools.utils.webdav;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+public class StreamProcessingUtils {
+
+ public static String getStreamContents(InputStream is) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ int c;
+ while ((c = is.read()) != -1) {
+ sb.append((char)c);
+ }
+ return sb.toString();
+ }
+
+ private static String DAV_NS = "DAV:";
+
+ public static Map<String, ResourceProperties> parseListing(String base, InputStream is) throws Exception {
+ Map<String, ResourceProperties> res = new HashMap<String, ResourceProperties>();
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ DocumentBuilder parser = factory.newDocumentBuilder();
+ Document doc = parser.parse(is);
+ NodeList nl = doc.getElementsByTagNameNS(DAV_NS, "response");
+ for (int i = 0; i < nl.getLength(); i++) {
+ Element oneElem = (Element)nl.item(i);
+ NodeList resName = oneElem.getElementsByTagNameNS(DAV_NS, "href");
+ assert(resName.getLength() == 1);
+ String bareName = extractOverlap(base, resName.item(0).getTextContent());
+ if (bareName.trim().length() > 0) {
+ ResourceProperties props = new ResourceProperties();
+ NodeList propList = oneElem.getElementsByTagNameNS(DAV_NS, "resourcetype");
+ assert(propList.getLength() == 1);
+ NodeList resTypeList = ((Element)propList.item(0)).getElementsByTagNameNS(DAV_NS, "collection");
+ assert(resTypeList.getLength() < 2);
+ if (resTypeList.getLength() == 1) {
+ props.setDirectory(true);
+ }
+ propList = oneElem.getElementsByTagNameNS(DAV_NS, "creationdate");
+ if (propList.getLength() > 0) {
+ props.setCreationDate(propList.item(0).getTextContent());
+ }
+ propList = oneElem.getElementsByTagNameNS(DAV_NS, "getlastmodified");
+ if (propList.getLength() > 0) {
+ props.setLastModifiedDate(propList.item(0).getTextContent());
+ }
+ String normBase = base.trim().endsWith("/")?base.trim():base.trim() + "/";
+ props.setBase(normBase);
+ res.put(bareName, props);
+ }
+ }
+ return res;
+ }
+
+ private static String extractOverlap(String base, String extension) {
+ String res = null;
+ int pos = 0;
+ int i = 1;
+ boolean done = false;
+ while (i < extension.length() && !done) {
+ pos = base.lastIndexOf(extension.substring(0, i));
+ if (pos == -1) {
+ res = extension.substring(i - 1);
+ done = true;
+ }
+ i++;
+ }
+ // If we got to the end of the loop above but !done,
+ // that means the entire extension string matched in
+ // base, so remove the entire extension contents
+ if (!done) {
+ res = "";
+ }
+ if (res.startsWith("/") && res.length() > 1) {
+ res = res.substring(1);
+ }
+//System.out.println("Returning " + res + " from " + base + ", " + extension);
+ return res;
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavAuthenticator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavAuthenticator.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavAuthenticator.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,91 @@
+package org.guvnor.tools.utils.webdav;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.webdav.http.client.IAuthenticator;
+
+public class WebDavAuthenticator implements IAuthenticator {
+
+ private class ServerAuthenInfo {
+ private String serverUrl;
+ private HashMap<String, Map<String, String>> authInfo;
+
+ public ServerAuthenInfo(String serverUrl) {
+ this.serverUrl = serverUrl;
+ authInfo = new HashMap<String, Map<String, String>>();
+ }
+ public Map<String, String> getAuthenicationInfo(String scheme) {
+ return authInfo.get(scheme);
+ }
+ public void addAuthenicationInfo(String scheme, Map<String, String> info) {
+ authInfo.put(scheme, info);
+ }
+ public String getServerURL() {
+ return serverUrl;
+ }
+ }
+
+ private HashMap<String, ServerAuthenInfo> serverAuthMaps;
+
+ public WebDavAuthenticator() {
+ serverAuthMaps = new HashMap<String, ServerAuthenInfo>();
+ }
+
+ public WebDavAuthenticator(URL serverUrl,
+ String username,
+ String password,
+ String scheme) {
+ this();
+ HashMap<String, String> info = new HashMap<String, String>();
+ info.put("username", username);
+ info.put("password", password);
+ addAuthenticationInfo(serverUrl, null, scheme, info);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void addAuthenticationInfo(URL serverUrl,
+ String realm,
+ String scheme,
+ Map info) {
+ ServerAuthenInfo authInfo = serverAuthMaps.get(serverUrl);
+ if (authInfo == null) {
+ authInfo = new ServerAuthenInfo(serverUrl.getHost());
+ serverAuthMaps.put(serverUrl.getHost().toLowerCase(), authInfo);
+ }
+ authInfo.addAuthenicationInfo(scheme.toLowerCase(), info);
+ }
+
+ public void addProtectionSpace(URL resourceUrl,
+ String realm) {
+ // Not using the notion of "realm," so do nothing
+ }
+
+ @SuppressWarnings("unchecked")
+ public Map getAuthenticationInfo(URL serverUrl,
+ String realm,
+ String scheme) {
+ ServerAuthenInfo authInfo = serverAuthMaps.get(serverUrl.getHost().toLowerCase());
+ if (authInfo == null) {
+ return null;
+ }
+ return authInfo.getAuthenicationInfo(scheme.toLowerCase());
+ }
+
+ public String getProtectionSpace(URL resourceUrl) {
+ // We don't have the notion of "realm," but the client
+ // requires a non-null return value.
+ return "";
+ }
+
+ @SuppressWarnings("unchecked")
+ public Map requestAuthenticationInfo(URL resourceUrl,
+ String realm,
+ String scheme) {
+ // We do not distinguish between resource- and server-based
+ // authentication: all authentication is done on a per-server
+ // basis. Therefore, delegate to a server authentication check.
+ return getAuthenticationInfo(resourceUrl, realm, scheme);
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,107 @@
+package org.guvnor.tools.utils.webdav;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Map;
+
+import org.eclipse.webdav.IContext;
+import org.eclipse.webdav.ILocator;
+import org.eclipse.webdav.IResponse;
+import org.eclipse.webdav.client.RemoteDAVClient;
+import org.eclipse.webdav.client.WebDAVFactory;
+import org.eclipse.webdav.http.client.HttpClient;
+
+/**
+ * WebDav wrapper client.
+ * @author jgraham
+ *
+ */
+public class WebDavClient {
+ private RemoteDAVClient client;
+
+ /**
+ * Ctor for this wrapper WebDav client.
+ * @param serverUrl The WebDav repository location (server)
+ * @param username User identification
+ * @param password User password
+ * @param scheme The authentication scheme { Basic | Digest }
+ */
+ public WebDavClient(URL serverUrl, String username,
+ String password, String scheme) {
+ WebDavAuthenticator authen = new WebDavAuthenticator(serverUrl, username,
+ password, scheme);
+ HttpClient hClient = new HttpClient();
+ hClient.setAuthenticator(authen);
+ client = new RemoteDAVClient(new WebDAVFactory(), hClient);
+ }
+
+ /**
+ * Ctor for this wrapper WebDav client, assuming "basic" authentication.
+ * @param serverUrl The WebDav repository location (server)
+ * @param username User identification
+ * @param password User password
+ */
+ public WebDavClient(URL serverUrl,
+ String username,
+ String password) {
+ // basic authentication is assumed as the default
+ this(serverUrl, username, password, "basic");
+ }
+
+ /**
+ * Provides access to the underlying RemoteDAVClient.
+ * @return The client associated with the current repository connection.
+ */
+ public RemoteDAVClient getClient() {
+ return client;
+ }
+
+ /**
+ * Convenience method for creating a request IContext.
+ * @return An instance of IContext
+ */
+ public IContext createContext() {
+ return WebDAVFactory.contextFactory.newContext();
+ }
+
+ /**
+ * 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)
+ */
+ public Map<String, ResourceProperties> listDirectory(String path) throws Exception {
+ IContext context = createContext();
+ context.put("Depth", "1");
+ ILocator locator = WebDAVFactory.locatorFactory.newLocator(path);
+ IResponse response = client.propfind(locator, context, null);
+ if (response.getStatusCode() != IResponse.SC_MULTI_STATUS
+ && response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
+ throw new Exception("WebDav error: " + response.getStatusCode());
+ }
+ return StreamProcessingUtils.parseListing(path, response.getInputStream());
+ }
+
+ /**
+ * Get the contents of a resource from a WebDav repository.
+ * @param resource The address of the resource
+ * @return The contents of the resource
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
+ */
+ public String getResourceContents(String resource) throws Exception {
+ ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+ IResponse response = client.get(locator, createContext());
+ if (response.getStatusCode() != IResponse.SC_OK) {
+ throw new Exception("WebDav error: " + response.getStatusCode());
+ }
+ return StreamProcessingUtils.getStreamContents(response.getInputStream());
+ }
+
+ public void putResource(String location, String name, InputStream is) throws Exception {
+ ILocator locator = WebDAVFactory.locatorFactory.newLocator(location + "/" + name);
+ IResponse response = client.post(locator, createContext(), is);
+ if (response.getStatusCode() != IResponse.SC_OK) {
+ throw new Exception("WebDav error: " + response.getStatusCode());
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavServerCache.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavServerCache.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavServerCache.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,27 @@
+package org.guvnor.tools.utils.webdav;
+
+import java.util.HashMap;
+
+/**
+ * Simple cache for WebDav connections.
+ * @author jgraham
+ *
+ */
+public class WebDavServerCache {
+
+ private static HashMap<String, WebDavClient> cache;
+
+ public static WebDavClient getWebDavClient(String serverUrl) {
+ if (cache == null) {
+ return null;
+ }
+ return cache.get(serverUrl);
+ }
+
+ public static void cacheWebDavClient(String serverUrl, WebDavClient client) {
+ if (cache == null) {
+ cache = new HashMap<String, WebDavClient>();
+ }
+ cache.put(serverUrl, client);
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/IGuvnorConstants.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/IGuvnorConstants.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/IGuvnorConstants.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,6 @@
+package org.guvnor.tools.views;
+
+public interface IGuvnorConstants {
+ public final static String REPVIEW_ID = "org.guvnor.tools.views.RepositoryView";
+ public static final String RESHISTORYVIEW_ID = "org.guvnor.tools.views.ResourceHistoryView";
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryContentProvider.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,70 @@
+package org.guvnor.tools.views;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.progress.DeferredTreeContentManager;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.webdav.ResourceProperties;
+import org.guvnor.tools.views.model.TreeObject;
+import org.guvnor.tools.views.model.TreeParent;
+
+public class RepositoryContentProvider implements IStructuredContentProvider,
+ ITreeContentProvider {
+ private TreeParent invisibleRoot;
+ private DeferredTreeContentManager manager;
+ private AbstractTreeViewer viewer;
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ if (v instanceof AbstractTreeViewer) {
+ viewer = (AbstractTreeViewer)v;
+ manager = new DeferredTreeContentManager(this, viewer);
+ }
+ }
+ public void dispose() {
+ }
+ public Object[] getElements(Object parent) {
+ if (parent.equals(viewer)) {
+ 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);
+ 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);
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryLabelProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryLabelProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryLabelProvider.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,46 @@
+package org.guvnor.tools.views;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.PendingUpdateAdapter;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.views.model.TreeParent;
+import org.guvnor.tools.views.model.TreeObject.Type;
+
+public class RepositoryLabelProvider extends LabelProvider {
+ private Image repImage;
+
+ public RepositoryLabelProvider() {
+ repImage = Activator.getImageDescriptor(Activator.IMG_GUVCONTROLLED).createImage();
+ }
+
+ public String getText(Object obj) {
+ if (obj instanceof PendingUpdateAdapter) {
+ return "Pending...";
+ } else {
+ return obj.toString();
+ }
+ }
+ public Image getImage(Object obj) {
+ Image res = null;
+ if (obj instanceof TreeParent) {
+ Type t = ((TreeParent)obj).getNodeType();
+ if (t == Type.REPOSITORY) {
+ res = repImage;
+ }
+ if (t == Type.PACKAGE) {
+ res = PlatformUI.getWorkbench().getSharedImages().
+ getImage(ISharedImages.IMG_OBJ_FOLDER);
+ }
+ if (t == Type.RESOURCE) {
+ res = PlatformUI.getWorkbench().getSharedImages().
+ getImage(ISharedImages.IMG_OBJ_FILE);
+ }
+ }
+ return res != null?res:PlatformUI.getWorkbench().getSharedImages().
+ getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ }
+
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,280 @@
+package org.guvnor.tools.views;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.DrillDownAdapter;
+import org.eclipse.ui.part.ViewPart;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.GuvnorLocationManager.IRepositorySetListener;
+import org.guvnor.tools.utils.PlatformUtils;
+import org.guvnor.tools.utils.webdav.WebDavClient;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
+import org.guvnor.tools.views.model.TreeObject;
+import org.guvnor.tools.views.model.TreeParent;
+import org.guvnor.tools.wizards.NewRepLocationWizard;
+
+public class RepositoryView extends ViewPart {
+
+ private TreeViewer viewer;
+ private DrillDownAdapter drillDownAdapter;
+ private Action action1;
+ private Action action2;
+ private Action doubleClickAction;
+
+ class NameSorter extends ViewerSorter {
+ }
+
+ public RepositoryView() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPartControl(Composite parent) {
+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ drillDownAdapter = new DrillDownAdapter(viewer);
+ viewer.setContentProvider(new RepositoryContentProvider());
+ viewer.setLabelProvider(new RepositoryLabelProvider());
+ viewer.setSorter(new NameSorter());
+ viewer.setInput(viewer);
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
+ contributeToActionBars();
+
+ Activator.getLocationManager().addRepositorySetListener(new IRepositorySetListener() {
+ public void repositorySetChanged(int type, List<GuvnorRepository> repList) {
+ // TODO: Just creating an entirely new content provider.
+ // Someday might update this to have incremental changes
+ // to existing content provider.
+ viewer.setContentProvider(new RepositoryContentProvider());
+ }
+ });
+
+ super.getSite().setSelectionProvider(viewer);
+
+ addDragDropSupport();
+ }
+
+ private void addDragDropSupport() {
+ // TODO: Support drag and drop of multiple files, directories, etc.
+ Transfer[] transfers = new Transfer[] { FileTransfer.getInstance()};
+ viewer.addDragSupport(DND.DROP_COPY, transfers, new DragSourceListener() {
+ private TreeObject target;
+
+ public void dragFinished(DragSourceEvent event) {
+ target = null;
+ event.doit = true;
+ }
+ public void dragSetData(DragSourceEvent event) {
+ if (target == null) {
+ return;
+ }
+ try {
+ String contents = getResourceContents(target);
+ IPath path = Activator.getDefault().getStateLocation();
+ File transfer = new File(path.toOSString() + File.separator + target.getName());
+ transfer.deleteOnExit();
+ FileOutputStream fos = new FileOutputStream(transfer);
+ PrintWriter writer = new PrintWriter(fos);
+ writer.write(contents);
+ writer.flush();
+ writer.close();
+ event.data = new String[] { transfer.getAbsolutePath() };
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if (obj instanceof TreeObject
+ && ((TreeObject)obj).getNodeType() == TreeObject.Type.RESOURCE) {
+ target = (TreeObject)obj;
+ event.doit = true;
+ } else {
+ event.doit = false;
+ }
+ }
+ });
+ }
+
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ RepositoryView.this.fillContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalPullDown(IMenuManager manager) {
+ manager.add(action1);
+ manager.add(new Separator());
+ manager.add(action2);
+ }
+
+ private void fillContextMenu(IMenuManager manager) {
+ manager.add(action1);
+ manager.add(action2);
+ manager.add(new Separator());
+ drillDownAdapter.addNavigationActions(manager);
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void fillLocalToolBar(IToolBarManager manager) {
+ manager.add(action1);
+ manager.add(action2);
+ manager.add(new Separator());
+ drillDownAdapter.addNavigationActions(manager);
+ }
+
+ private void makeActions() {
+ action1 = new Action() {
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if (obj instanceof TreeParent) {
+ GuvnorRepository rep = ((TreeParent)obj).getGuvnorRepository();
+ if (MessageDialog.openConfirm(RepositoryView.this.getSite().getShell(),
+ "Remove repository location", "Confirm removing " +
+ rep.getLocation())) {
+ Activator.getLocationManager().removeRepository(rep.getLocation());
+ }
+ }
+ }
+ };
+ action1.setText("Delete");
+ action1.setToolTipText("Delete Guvnor repository location");
+ action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
+
+ action2 = new Action() {
+ public void run() {
+ NewRepLocationWizard wiz = new NewRepLocationWizard();
+ wiz.init(Activator.getDefault().getWorkbench(), null);
+ WizardDialog dialog =
+ new WizardDialog(RepositoryView.this.getSite().getShell(), wiz);
+ dialog.create();
+ dialog.open();
+ }
+ };
+ action2.setText("Add");
+ action2.setToolTipText("Add a Guvnor respository location");
+ action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
+ doubleClickAction = new Action() {
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if (obj instanceof TreeObject) {
+ doubleClick((TreeObject)obj);
+ }
+ }
+ };
+ }
+
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+
+ private void doubleClick(TreeObject node) {
+ if (node.getNodeType() == TreeObject.Type.PACKAGE
+ || node.getNodeType() == TreeObject.Type.REPOSITORY) {
+ if (viewer.getExpandedState(node)) {
+ viewer.collapseToLevel(node, 1);
+ } else {
+ viewer.expandToLevel(node, 1);
+ }
+ }
+ if (node.getNodeType() == TreeObject.Type.RESOURCE) {
+
+ try {
+ String contents = getResourceContents(node);
+ PlatformUtils.openEditor(contents, node.getName());
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+ }
+
+ private String getResourceContents(TreeObject node) throws Exception {
+ GuvnorRepository rep = node.getGuvnorRepository();
+ WebDavClient webdav = WebDavServerCache.getWebDavClient(rep.getLocation());
+ if (webdav == null) {
+ webdav = new WebDavClient(new URL(rep.getLocation()),
+ rep.getUsername(), rep.getPassword());
+ WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
+ }
+ return webdav.getResourceContents(node.getFullPath());
+ }
+
+// private void putResource(TreeParent node, String name, InputStream is) throws Exception {
+// GuvnorRepository rep = node.getGuvnorRepository();
+// WebDavClient webdav = WebDavServerCache.getWebDavClient(rep.getLocation());
+// if (webdav == null) {
+// webdav = new WebDavClient(new URL(rep.getLocation()),
+// rep.getUsername(), rep.getPassword());
+// WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
+// }
+// webdav.putResource(node.getFullPath(), name, is);
+// }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,231 @@
+package org.guvnor.tools.views;
+
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+public class ResourceHistoryView extends ViewPart {
+
+ private TableViewer viewer;
+ private Text verNotes;
+ private Text verOwner;
+
+ private Action action1;
+ private Action action2;
+ private Action doubleClickAction;
+
+ class ViewContentProvider implements IStructuredContentProvider {
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+ public void dispose() {
+ }
+ public Object[] getElements(Object parent) {
+ return new Object[] { };
+// return new String[] { "v20080522", "v20080516", "v20080424" };
+ }
+ }
+ class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
+ public String getColumnText(Object obj, int index) {
+ return getText(obj);
+ }
+ public Image getColumnImage(Object obj, int index) {
+ return getImage(obj);
+ }
+ public Image getImage(Object obj) {
+ return PlatformUI.getWorkbench().
+ getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
+ }
+ }
+ class NameSorter extends ViewerSorter {
+ }
+
+ /**
+ * The constructor.
+ */
+ public ResourceHistoryView() {
+ }
+
+ private void updateDetails(String selection) {
+ //TODO: Need a model for version entries, comments, etc.
+// if (selection.equals("v20080522")) {
+// verNotes.setText("Remove dead code");
+// verOwner.setText("jgraham");
+// }
+// if (selection.equals("v20080516")) {
+// verNotes.setText("Add new branch");
+// verOwner.setText("tyler");
+// }
+// if (selection.equals("v20080424")) {
+// verNotes.setText("Inital check in");
+// verOwner.setText("ygm");
+// }
+ }
+
+ public void createPartControl(Composite parent) {
+
+ Composite composite = createComposite(parent, 1);
+
+ viewer = new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
+ viewer.setContentProvider(new ViewContentProvider());
+ viewer.setLabelProvider(new ViewLabelProvider());
+ viewer.setSorter(new NameSorter());
+ viewer.setInput(getViewSite());
+
+ viewer.getTable().addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) { }
+
+ public void widgetSelected(SelectionEvent e) {
+ updateDetails(viewer.getTable().getSelection()[0].getText());
+ }
+ });
+
+ SashForm sash = new SashForm(composite, SWT.HORIZONTAL);
+ sash.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ verNotes = new Text(sash, SWT.BORDER | SWT.MULTI);
+ verNotes.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ verOwner = new Text(sash, SWT.BORDER | SWT.MULTI);
+ verOwner.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ sash.setWeights(new int[]{70, 30});
+
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
+ contributeToActionBars();
+
+ if (viewer.getTable().getItemCount() > 0) {
+ viewer.getTable().setSelection(0);
+ updateDetails(viewer.getTable().getSelection()[0].getText());
+ }
+ }
+
+ 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 hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ ResourceHistoryView.this.fillContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalPullDown(IMenuManager manager) {
+ manager.add(action1);
+ manager.add(new Separator());
+ manager.add(action2);
+ }
+
+ private void fillContextMenu(IMenuManager manager) {
+ manager.add(action1);
+ manager.add(action2);
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void fillLocalToolBar(IToolBarManager manager) {
+ manager.add(action1);
+ manager.add(action2);
+ }
+
+ private void makeActions() {
+ action1 = new Action() {
+ public void run() {
+ showMessage("Action 1 executed");
+ }
+ };
+ action1.setText("Action 1");
+ action1.setToolTipText("Action 1 tooltip");
+ action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+
+ action2 = new Action() {
+ public void run() {
+ showMessage("Action 2 executed");
+ }
+ };
+ action2.setText("Action 2");
+ action2.setToolTipText("Action 2 tooltip");
+ action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+ doubleClickAction = new Action() {
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ showMessage("Double-click detected on "+obj.toString());
+ }
+ };
+ }
+
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+ private void showMessage(String message) {
+ MessageDialog.openInformation(
+ viewer.getControl().getShell(),
+ "Resource History View",
+ message);
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeObject.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeObject.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeObject.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,81 @@
+package org.guvnor.tools.views.model;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.webdav.ResourceProperties;
+
+public class TreeObject implements IAdaptable {
+
+ private GuvnorRepository theRep;
+
+ public enum Type {
+ NONE,
+ REPOSITORY,
+ PACKAGE,
+ RESOURCE
+ }
+
+ private String name;
+ private Type nodeType;
+ private TreeParent parent;
+
+ private ResourceProperties props;
+
+ public TreeObject(String name, Type nodeType) {
+ this.name = name;
+ this.nodeType = nodeType;
+ }
+ public String getName() {
+ return name;
+ }
+ public Type getNodeType() {
+ return nodeType;
+ }
+ public void setParent(TreeParent parent) {
+ this.parent = parent;
+ }
+ public TreeParent getParent() {
+ return parent;
+ }
+ public String toString() {
+ return getName();
+ }
+
+ private TreePropertyProvider propProvider;
+
+ @SuppressWarnings("unchecked")
+ public Object getAdapter(Class adapter) {
+ if (adapter == IPropertySource.class) {
+ if (propProvider == null) {
+ propProvider = new TreePropertyProvider(this);
+ }
+ return propProvider;
+ }
+ return null;
+ }
+
+ public ResourceProperties getResourceProps() {
+ return props;
+ }
+ public void setResourceProps(ResourceProperties props) {
+ this.props = props;
+ }
+ public void setGuvnorRepository(GuvnorRepository theRep) {
+ this.theRep = theRep;
+ }
+ public GuvnorRepository getGuvnorRepository() {
+ return theRep;
+ }
+ public String getFullPath() {
+ if (props.getBase().trim().length() > 0) {
+ if (props.getBase().endsWith("/")) {
+ return props.getBase() + getName();
+ } else {
+ return props.getBase() + "/" + getName();
+ }
+ } else {
+ return getName();
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,162 @@
+package org.guvnor.tools.views.model;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
+import org.eclipse.ui.progress.IElementCollector;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+import org.guvnor.tools.utils.webdav.ResourceProperties;
+import org.guvnor.tools.utils.webdav.WebDavClient;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
+
+public class TreeParent extends TreeObject implements IDeferredWorkbenchAdapter {
+
+ private ArrayList<TreeObject> children;
+
+ public TreeParent(String name, Type nodeType) {
+ super(name, nodeType);
+ children = new ArrayList<TreeObject>();
+ }
+ public void addChild(TreeObject child) {
+ children.add(child);
+ child.setParent(this);
+ }
+ public void removeChild(TreeObject child) {
+ children.remove(child);
+ child.setParent(null);
+ }
+ public TreeObject [] getChildren() {
+ return (TreeObject [])children.toArray(new TreeObject[children.size()]);
+ }
+ public boolean hasChildren() {
+ return children.size()>0;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.progress.IDeferredWorkbenchAdapter#fetchDeferredChildren(java.lang.Object, org.eclipse.ui.progress.IElementCollector, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void fetchDeferredChildren(Object object,
+ IElementCollector collector,
+ IProgressMonitor monitor) {
+ if (!(object instanceof TreeParent)) {
+ return;
+ }
+ TreeParent node = (TreeParent)object;
+ if (node.getNodeType() == Type.NONE) {
+ List<GuvnorRepository> reps = Activator.getLocationManager().getRepositories();
+ monitor.beginTask("Pending...", reps.size());
+ for (int i = 0; i < reps.size(); i++) {
+ TreeParent p = new TreeParent(reps.get(i).getLocation(), Type.REPOSITORY);
+ p.setGuvnorRepository(reps.get(i));
+ ResourceProperties props = new ResourceProperties();
+ props.setBase("");
+ p.setResourceProps(props);
+ collector.add(p, monitor);
+ monitor.worked(1);
+ if (i < reps.size() - 1) pause(500);
+ }
+ monitor.done();
+ }
+ if (node.getNodeType() == Type.REPOSITORY
+ || node.getNodeType() == Type.PACKAGE) {
+ listDirectory(node, collector, monitor);
+ }
+ }
+
+ public void listDirectory(TreeParent node,
+ IElementCollector collector,
+ IProgressMonitor monitor) {
+ monitor.beginTask("Pending...", 1);
+
+ monitor.worked(1);
+ GuvnorRepository rep = node.getGuvnorRepository();
+ try {
+ WebDavClient webdav = WebDavServerCache.getWebDavClient(rep.getLocation());
+ if (webdav == null) {
+ webdav = new WebDavClient(new URL(rep.getLocation()),
+ rep.getUsername(), rep.getPassword());
+ WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
+ }
+ Map<String, ResourceProperties> listing = webdav.listDirectory(node.getFullPath());
+ for (String s: listing.keySet()) {
+ ResourceProperties resProps = listing.get(s);
+ TreeObject o = null;
+ if (resProps.isDirectory()) {
+ o = new TreeParent(s, Type.PACKAGE);
+ } else {
+ o = new TreeObject(s, Type.RESOURCE);
+ }
+ o.setGuvnorRepository(rep);
+ o.setResourceProps(resProps);
+ collector.add(o, monitor);
+ }
+ monitor.worked(1);
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+
+ private void pause(long msec){
+ try {
+ Thread.sleep(msec);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.progress.IDeferredWorkbenchAdapter#getRule(java.lang.Object)
+ */
+ public ISchedulingRule getRule(Object object) {
+ return null;
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.progress.IDeferredWorkbenchAdapter#isContainer()
+ */
+ public boolean isContainer() {
+ return (this instanceof TreeParent);
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object o) {
+ return children.toArray();
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
+ */
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return null;
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
+ */
+ public String getLabel(Object o) {
+ return o.toString();
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
+ */
+ public Object getParent(Object o) {
+ if (o instanceof TreeObject) {
+ return ((TreeObject)o).getParent();
+ } else {
+ return null;
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,68 @@
+package org.guvnor.tools.views.model;
+
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+public class TreePropertyProvider implements IPropertySource {
+
+ private TreeObject node;
+
+ public TreePropertyProvider(TreeObject node) {
+ this.node = node;
+ }
+
+ public Object getEditableValue() {
+ return null;
+ }
+
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ return new IPropertyDescriptor[] {
+ new TextPropertyDescriptor("name", "Name"),
+ new TextPropertyDescriptor("location", "Location"),
+ new TextPropertyDescriptor("type", "Type"),
+ new TextPropertyDescriptor("creationdate", "Created"),
+ new TextPropertyDescriptor("lastmodified", "Last Modified")
+ };
+ }
+
+ public Object getPropertyValue(Object id) {
+ if (id.equals("name")) {
+ return node.getName();
+ }
+ if (id.equals("location")) {
+ return node.getFullPath();
+ }
+ if (id.equals("type")) {
+ if (node.getNodeType() == TreeObject.Type.REPOSITORY) {
+ return "repository";
+ }
+ if (node.getNodeType() == TreeObject.Type.PACKAGE) {
+ return "directory";
+ }
+ if (node.getNodeType() == TreeObject.Type.RESOURCE) {
+ return "file";
+ }
+ }
+ if (id.equals("creationdate")) {
+ return node.getResourceProps().getCreationDate();
+ }
+ if (id.equals("lastmodified")) {
+ return node.getResourceProps().getLastModifiedDate();
+ }
+ return "";
+ }
+
+ public boolean isPropertySet(Object id) {
+ // Guvnor properties are read-only, so do nothing
+ return false;
+ }
+
+ public void resetPropertyValue(Object id) {
+ // Guvnor properties are read-only, so do nothing
+ }
+
+ public void setPropertyValue(Object id, Object value) {
+ // Guvnor properties are read-only, so do nothing
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,82 @@
+package org.guvnor.tools.wizards;
+
+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;
+
+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 GuvWizardModel model;
+
+ public CheckoutWizard() {
+ model = new GuvWizardModel();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.tools.guvnor.wizards.IGuvnorWizard#getModel()
+ */
+ public GuvWizardModel getModel() {
+ return model;
+ }
+
+ @Override
+ public void addPages() {
+ selectRepPage = new SelectGuvnorRepPage("select_rep_page", "Select Guvnor repository location",
+ Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+ selectRepPage.setDescription("Select an existing Guvnor repository location or create a new one");
+ super.addPage(selectRepPage);
+
+ mainConfigPage = new GuvnorMainConfigPage("config_page", "New Guvnor repository location",
+ Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+ mainConfigPage.setDescription("Creates a connection to a Guvnor repository");
+ super.addPage(mainConfigPage);
+
+ selectResPage = new SelectGuvnorResourcesPage("select_res_page", "Select Guvnor repository location",
+ Activator.getImageDescriptor(Activator.IMG_GUVREPWIZBAN));
+ selectResPage.setDescription("Select resources from the Guvnor repository to check out");
+ 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);
+
+ 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);
+
+ super.addPages();
+ }
+
+ @Override
+ public boolean performFinish() {
+ return true;
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+
+ }
+
+ @Override
+ public boolean canFinish() {
+ return model.isModelComplete();
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizNewProjectPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizNewProjectPage.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizNewProjectPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,12 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+
+public class GuvWizNewProjectPage extends WizardNewProjectCreationPage {
+
+ public GuvWizNewProjectPage(String pageName) {
+ super(pageName);
+ }
+
+
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvWizardModel.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,70 @@
+package org.guvnor.tools.wizards;
+
+import java.util.List;
+
+public class GuvWizardModel {
+ private String repLocation;
+ private String username;
+ private String password;
+ private boolean createNewRep;
+
+ private String targetProject;
+ private boolean createNewProj;
+
+ private List<String> resources;
+ private String version;
+
+ public String getRepLocation() {
+ return repLocation;
+ }
+ public void setRepLocation(String repLocation) {
+ this.repLocation = repLocation;
+ }
+ public String getUsername() {
+ return username;
+ }
+ public void setUsername(String username) {
+ this.username = username;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ public boolean isCreateNewRep() {
+ return createNewRep;
+ }
+ public void setCreateNewRep(boolean createNewRep) {
+ this.createNewRep = createNewRep;
+ }
+ public String getTargetProject() {
+ return targetProject;
+ }
+ public void setTargetProject(String targetProject) {
+ this.targetProject = targetProject;
+ }
+ public boolean isCreateNewProj() {
+ return createNewProj;
+ }
+ public void setCreateNewProj(boolean createNewProj) {
+ this.createNewProj = createNewProj;
+ }
+ public List<String> getResources() {
+ return resources;
+ }
+ public void setResources(List<String> resources) {
+ this.resources = resources;
+ }
+ public String getVersion() {
+ return version;
+ }
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public boolean isModelComplete() {
+ // TODO: Check if model is complete
+ return true;
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/GuvnorMainConfigPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,85 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class GuvnorMainConfigPage extends WizardPage {
+
+ private Text locationField;
+ private Text unField;
+ private Text pwField;
+
+ public GuvnorMainConfigPage(String pageName) {
+ super(pageName);
+ }
+
+ public GuvnorMainConfigPage(String pageName, String title, ImageDescriptor titleImage) {
+ super(pageName, title, titleImage);
+ }
+
+ public void createControl(Composite parent) {
+
+ Composite composite = createComposite(parent, 2);
+ new Label(composite, SWT.NONE).setText("Location: ");
+ locationField = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ locationField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ locationField.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ if (locationField.getText().trim().length() > 0) {
+ GuvnorMainConfigPage.super.setPageComplete(true);
+ } else {
+ GuvnorMainConfigPage.super.setPageComplete(false);
+ }
+ updateModel();
+ }
+
+ });
+
+ new Label(composite, SWT.NONE).setText("User Name: ");
+ unField = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ unField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ unField.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ updateModel();
+ }
+ });
+
+ new Label(composite, SWT.NONE).setText("Password: ");
+ pwField = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
+ pwField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ pwField.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ updateModel();
+ }
+ });
+
+ 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() {
+ GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
+ model.setRepLocation(locationField.getText());
+ model.setUsername(unField.getText());
+ model.setPassword(pwField.getText());
+ model.setCreateNewRep(true);
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/IGuvnorWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/IGuvnorWizard.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/IGuvnorWizard.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,5 @@
+package org.guvnor.tools.wizards;
+
+public interface IGuvnorWizard {
+ public GuvWizardModel getModel();
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/NewRepLocationWizard.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,54 @@
+package org.guvnor.tools.wizards;
+
+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.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+
+public class NewRepLocationWizard extends Wizard implements INewWizard, IGuvnorWizard {
+
+ private GuvnorMainConfigPage mainPage;
+// private IWorkbench workbench;
+
+ private GuvWizardModel model = new GuvWizardModel();
+
+ public GuvWizardModel getModel() {
+ return model;
+ }
+
+ @Override
+ public void addPages() {
+ mainPage = new GuvnorMainConfigPage("config_page", "New Guvnor location",
+ Activator.getImageDescriptor(Activator.IMG_GUVLOCADD));
+ super.addPage(mainPage);
+ super.addPages();
+ }
+
+ public boolean canFinish() {
+ return mainPage.isPageComplete();
+ }
+
+ @Override
+ public boolean performFinish() {
+ try {
+ Activator.getLocationManager().addRepository(
+ new GuvnorRepository(model.getRepLocation(),
+ model.getUsername(),
+ model.getPassword()));
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ return true;
+ }
+
+ /*
+ * (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;
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorRepPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,94 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.GuvnorRepository;
+
+public class SelectGuvnorRepPage extends WizardPage {
+
+ private Button createRep;
+ private Button existingRep;
+ private List repLocations;
+
+ public SelectGuvnorRepPage(String pageName) {
+ super(pageName);
+ }
+
+ public SelectGuvnorRepPage(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("This wizard allow you to check out resource from a Guvnor repository");
+
+ createRep = new Button(composite, SWT.RADIO);
+ createRep.setText("Create a new Guvnor repository location");
+ createRep.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ createRep.setSelection(false);
+ createRep.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) { }
+
+ public void widgetSelected(SelectionEvent e) {
+ repLocations.setEnabled(existingRep.getSelection());
+ }
+ });
+
+ existingRep = new Button(composite, SWT.RADIO);
+ existingRep.setText("Use an existing Guvnor repository location");
+ existingRep.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ existingRep.setSelection(true);
+ existingRep.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) { }
+
+ public void widgetSelected(SelectionEvent e) {
+ repLocations.setEnabled(existingRep.getSelection());
+ }
+ });
+
+ repLocations = new List(composite, SWT.BORDER | SWT.MULTI);
+ repLocations.setLayoutData(new GridData(GridData.FILL_BOTH));
+ addRepositoryList();
+ super.setControl(composite);
+ }
+
+ private void addRepositoryList() {
+ java.util.List<GuvnorRepository> reps = Activator.getLocationManager().getRepositories();
+ for (int i = 0; i < reps.size(); i++) {
+ repLocations.add(reps.get(i).getLocation());
+ }
+ if (repLocations.getItemCount() > 0) {
+ repLocations.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 (createRep.getSelection()) {
+ return getWizard().getPage("config_page");
+ } else {
+ return getWizard().getPage("select_res_page");
+ }
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectGuvnorResourcesPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,104 @@
+package org.guvnor.tools.wizards;
+
+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.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.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 resourceTree;
+
+ public SelectGuvnorResourcesPage(String pageName) {
+ super(pageName);
+ }
+
+ public SelectGuvnorResourcesPage(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 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);
+
+ 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;
+ }
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectResourceVersionPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,52 @@
+package org.guvnor.tools.wizards;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+
+public class SelectResourceVersionPage extends WizardPage {
+
+ private List versions;
+
+ public SelectResourceVersionPage(String pageName) {
+ super(pageName);
+ }
+
+ public SelectResourceVersionPage(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 version:");
+
+ versions = new List(composite, SWT.BORDER | SWT.MULTI);
+ versions.setLayoutData(new GridData(GridData.FILL_BOTH));
+ populateVersions();
+
+ super.setControl(composite);
+ }
+
+ private void populateVersions() {
+ versions.add("v20080424");
+ versions.add("v20080516");
+ versions.add("v20080522");
+ versions.add("v20080705");
+ versions.setSelection(0);
+ }
+
+ private Composite createComposite(Composite parent, int numColumns) {
+ Composite composite = new Composite(parent, SWT.NULL);
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ return composite;
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/SelectTargetLocationPage.java 2008-06-18 15:59:32 UTC (rev 20593)
@@ -0,0 +1,99 @@
+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");
+ }
+ }
+}
More information about the jboss-svn-commits
mailing list