You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cr...@apache.org on 2005/07/03 06:35:52 UTC

svn commit: r208884 - in /forrest/trunk/tools/eclipse/plugins/org.apache.forrest: ./ src/org/apache/forrest/eclipse/job/ src/org/apache/forrest/eclipse/popup/actions/ src/org/apache/forrest/eclipse/views/

Author: crossley
Date: Sat Jul  2 21:35:50 2005
New Revision: 208884

URL: http://svn.apache.org/viewcvs?rev=208884&view=rev
Log:
Submitted by: Anil Ramnanan
Issue: FOR-566 "Option to Create a WAR file."

Added:
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java   (with props)
Modified:
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestManager.java

Modified: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml?rev=208884&r1=208883&r2=208884&view=diff
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml (original)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml Sat Jul  2 21:35:50 2005
@@ -105,6 +105,13 @@
                class="org.apache.forrest.eclipse.popup.actions.BuildSite"
                menubarPath="org.apache.forrest.eclipse.siteMenu/Static"
                id="org.apache.forrest.eclipse.BuildServer"/>
+         <action
+               enablesFor="1"
+               label="Build WAR File"
+               icon="icons/build.png"
+               class="org.apache.forrest.eclipse.popup.actions.BuildWARSite"
+               menubarPath="org.apache.forrest.eclipse.siteMenu/Static"
+               id="org.apache.forrest.eclipse.BuildWARServer"/>
       </objectContribution>
    </extension>
   
@@ -115,5 +122,17 @@
       class="org.eclipse.webbrowser.internal.WebBrowserEditor"
       extensions="html,htm,gif,jpg,jpeg,xhtml"
       contributorClass="org.eclipse.webbrowser.internal.WebBrowserEditorActionBarContributor"/>
+  </extension>
+  <extension
+        point="org.eclipse.ui.views">
+     <category
+           id="StructureViewer"
+           name="StructureViewer"/>
+     <view
+           category="StructureView"
+           class="org.apache.forrest.eclipse.views.SiteXMLView"
+           icon="icons/start.png"
+           id="SiteXML"
+           name="SiteXML"/>
   </extension>
 </plugin>

Modified: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestManager.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestManager.java?rev=208884&r1=208883&r2=208884&view=diff
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestManager.java (original)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestManager.java Sat Jul  2 21:35:50 2005
@@ -49,7 +49,10 @@
 
     /** The command for building the static site */
     public static final String COMMAND_BUILD = "site";
-
+    
+    /** The command for building the static site */
+    public static final String COMMAND_BUILD_WAR = "war";
+   
     /** The command for running the site server */
     public static final String COMMAND_START = "run";
 
@@ -187,6 +190,8 @@
             theJob = new ForrestRunner(workingDir);
         } else if (cmd.equals(COMMAND_BUILD)) {
             theJob = new ForrestBuilder(workingDir);
+        } else if (cmd.equals(COMMAND_BUILD_WAR)) {
+            theJob = new ForrestWARBuilder(workingDir);
         } else if (cmd.equals(COMMAND_BUILD_PLAIN)) {
             theJob = new ForrestBuilder(workingDir, SKIN_PLAIN);
         } else {

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java?rev=208884&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java Sat Jul  2 21:35:50 2005
@@ -0,0 +1,86 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.job;
+
+import java.io.File;
+
+import org.apache.forrest.eclipse.ForrestPlugin;
+import org.apache.forrest.eclipse.preference.ForrestPreferences;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+
+/**
+ * Run a version of Forrest
+ */
+public class ForrestWARBuilder extends ForrestJob  {
+	/**
+	 * Logger for this class
+	 */
+	protected static final Logger logger = Logger.getLogger(ForrestWARBuilder.class);
+	/** The name of the skin to use. If null, the value in forrest.properties will be used. */
+    private String skinName;
+	
+	/**
+	 * Create a Forrest builder that will build the default
+	 * site configuration.
+	 * @param workingDir - the working directory for the command
+	 */
+	protected ForrestWARBuilder(String workingDir) {
+		super("Forrest Runner");
+		this.workingDir = workingDir;
+	}
+
+	/**
+	 * Create a Forrest builder that will build the 
+	 * site using the indicated skin.
+	 * @param workingDir - the working directory for the command
+	 */
+	protected ForrestWARBuilder(String workingDir, String skinName) {
+		super("Forrest Runner");
+		this.workingDir = workingDir;
+		this.skinName = skinName;
+	}
+	/* (non-Javadoc)
+	 * @see java.lang.Runnable#run()
+	 */
+	public IStatus run(IProgressMonitor monitor) {
+		if (logger.isDebugEnabled()) {
+			logger.debug("run(IProgressMonitor) - start");
+		}
+		
+		IStatus status = null;
+		String fhome = ForrestPlugin.getDefault().getPluginPreferences()
+		  .getString(ForrestPreferences.FORREST_HOME);
+		StringBuffer sb = new StringBuffer("-Dproject.home=");
+		sb.append(workingDir);
+		sb.append(" -Dbasedir=");
+		sb.append(fhome + File.separatorChar + "main");
+        sb.append(" ");
+        sb.append(" -Dforrest.home=");
+        sb.append(fhome);
+		if (this.skinName != null) {
+			sb.append(" -Dproject.skin=");
+			sb.append("plain-dev");
+		}
+		sb.append(" war");
+        status = runAnt(monitor, sb.toString());
+		return status;
+	}
+	
+}

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/job/ForrestWARBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java?rev=208884&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java Sat Jul  2 21:35:50 2005
@@ -0,0 +1,102 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.popup.actions;
+
+import org.apache.forrest.eclipse.ForrestPlugin;
+import org.apache.forrest.eclipse.job.ForrestManager;
+import org.apache.forrest.eclipse.preference.ForrestPreferences;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class BuildWARSite 
+implements IObjectActionDelegate, IJavaLaunchConfigurationConstants {
+
+	private IProject activeProject;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public BuildWARSite() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		String cmdString = null;
+		IPath path = JavaCore.getClasspathVariable("ECLIPSE_HOME");
+
+		// TODO: move preferences code to utilities class
+		String fhome = ForrestPlugin.getDefault().getPluginPreferences()
+				.getString(ForrestPreferences.FORREST_HOME);
+		
+		if (fhome.equals("")) {
+			Shell dialog = new Shell(new Shell());
+			dialog.setText("Configure Forrest");
+			dialog.setSize(400, 100);
+			Label statusMsg = new Label(dialog, SWT.NONE);
+			statusMsg
+					.setText("Please configure Forrest by providing values for the required preferences");
+			statusMsg.setLocation(30, 25);
+			statusMsg.pack();
+			// TODO: Add an OK button
+			dialog.open();
+			// TODO: open the properties editor
+			return;
+		}
+
+		IPath workingDirectory = activeProject.getLocation();
+		
+		Job forrest = ForrestManager.getInstance().getForrestJob(workingDirectory.toOSString(), ForrestManager.COMMAND_BUILD_WAR);
+		forrest.setUser(true);
+		forrest.schedule();
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		if (selection instanceof IStructuredSelection) {
+			Object first = ((IStructuredSelection)selection).getFirstElement();
+            IResource resource = (IResource)first;
+            if (resource instanceof IProject) {
+                activeProject = (IProject)resource;
+            }            
+		}
+	}
+
+}
\ No newline at end of file

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/popup/actions/BuildWARSite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java?rev=208884&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java Sat Jul  2 21:35:50 2005
@@ -0,0 +1,212 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.views;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.part.*;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectNature;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.*;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.SWT;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+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.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.views.navigator.ResourceNavigator;
+
+import com.sun.org.apache.xml.internal.utils.URI;
+
+/**
+ * This sample class demonstrates how to plug-in a new workbench view. The view
+ * shows data obtained from the model. The sample creates a dummy model on the
+ * fly, but a real implementation would connect to the model available either in
+ * this or another plug-in (e.g. the workspace). The view is connected to the
+ * model using a content provider.
+ * <p>
+ * The view uses a label provider to define how model objects should be
+ * presented in the view. Each view can present the same model objects using
+ * different labels and icons, if needed. Alternatively, a single label provider
+ * can be shared between views in order to ensure that objects of the same type
+ * are presented in the same way everywhere.
+ * <p>
+ */
+
+public class SiteXMLView extends ViewPart  implements
+			 IMenuListener, ISelectionListener{
+	private TreeViewer viewer;
+	
+	private IProject activeProject;
+	
+	private Action doubleClickAction;
+
+	/*
+	 * The content provider class is responsible for providing objects to the
+	 * view. It can wrap existing objects in adapters or simply return objects
+	 * as-is. These objects may be sensitive to the current input of the view,
+	 * or ignore it and always show the same content (like Task List, for
+	 * example).
+	 */
+
+
+	class NameSorter extends ViewerSorter {
+	}
+
+	/**
+	 * The constructor.
+	 */
+	public SiteXMLView() {
+	}
+
+	/**
+	 * This is a callback that will allow us to create the viewer and initialize
+	 * it.
+	 */
+	public void createPartControl(Composite parent) {
+		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		getSite().setSelectionProvider(viewer);
+		viewer.setContentProvider(new ITreeContentProvider() {
+			public Object[] getChildren(Object element) {
+				ArrayList ch = new ArrayList();
+				NamedNodeMap atrs = ((Node) element).getAttributes();
+				if (atrs != null)
+					for (int i = 0; i < atrs.getLength(); i++)
+						ch.add(atrs.item(i));
+				NodeList nl = ((Node) element).getChildNodes();
+				for (int i = 0; i < nl.getLength(); i++)
+					if (nl.item(i).getNodeType() == Node.ELEMENT_NODE)
+						ch.add(nl.item(i));
+				return ch.toArray();
+			}
+
+			public Object getParent(Object element) {
+				return ((Node) element).getParentNode();
+			}
+
+			public Object[] getElements(Object element) {
+				return getChildren(element);
+			}
+
+			public boolean hasChildren(Object element) {
+				return getChildren(element).length > 0;
+			}
+
+			public void dispose() {
+			}
+
+			public void inputChanged(Viewer viewer, Object old_input,
+					Object new_input) {
+			}
+		});
+
+		viewer.setLabelProvider(new LabelProvider() {
+			public String getText(Object element) {
+				if (element instanceof Attr)
+					return "@" + ((Attr) element).getNodeName();
+				else
+					return ((Node) element).getNodeName();
+			}
+		});
+		
+		
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		Document document = null;
+		try {
+			DocumentBuilder parser;
+			parser = factory.newDocumentBuilder();
+			document = parser.parse(new File(""));
+		} catch (SAXException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (ParserConfigurationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		viewer.setInput(document);
+	}
+   
+	
+	public void setFocus() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void menuAboutToShow(IMenuManager manager) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		if (selection instanceof IStructuredSelection) {
+			Object first = ((IStructuredSelection)selection).getFirstElement();
+            IResource resource = (IResource)first;
+            if (resource instanceof IProject) {
+                activeProject = (IProject)resource;
+            }            
+		}
+		
+	}
+
+	/**
+	 * Passing the focus request to the viewer's control.
+	 */
+	
+}

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java
------------------------------------------------------------------------------
    svn:eol-style = native