You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by rg...@apache.org on 2004/10/02 00:58:45 UTC
svn commit: rev 51764 - in forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup: . actions
Author: rgardler
Date: Fri Oct 1 15:58:45 2004
New Revision: 51764
Added:
forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/
forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/
forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/BuildSite.java (contents, props changed)
forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StartForrest.java (contents, props changed)
forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StopForrest.java (contents, props changed)
Log:
replace workbench actions with object actions for use in context menus rather than applicaiton menus
Added: forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/BuildSite.java
==============================================================================
--- (empty file)
+++ forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/BuildSite.java Fri Oct 1 15:58:45 2004
@@ -0,0 +1,138 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * 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 java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.forrest.eclipse.ForrestPlugin;
+import org.apache.forrest.eclipse.actions.Utilities;
+import org.apache.forrest.eclipse.preference.ForrestPreferences;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+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 BuildSite
+implements IObjectActionDelegate, IJavaLaunchConfigurationConstants {
+
+ private IProject activeProject;
+
+ /**
+ * Constructor for Action1.
+ */
+ public BuildSite() {
+ 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: This should be a progress dialog
+ Shell dialog = new Shell(new Shell());
+
+ // TODO: move preferences code to utilities class
+ String fhome = ForrestPlugin.getDefault().getPluginPreferences()
+ .getString(ForrestPreferences.FORREST_HOME);
+
+ if (fhome.equals("")) {
+ 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;
+ }
+
+ dialog.setText("Forrest Server");
+ dialog.setSize(500, 250);
+ Label statusMsg = new Label(dialog, SWT.NONE);
+ StringBuffer sb = new StringBuffer("Forrest is building the site.\n");
+ sb.append("\n\nPlease wait...");
+ statusMsg.setText(sb.toString());
+ statusMsg.setLocation(30, 25);
+ statusMsg.pack();
+ dialog.open();
+
+ IPath workingDirectory = activeProject.getLocation();
+
+ if (System.getProperty("os.name").toLowerCase().startsWith("linux")) {
+ cmdString = "forrest -Dbasedir=" + workingDirectory
+ + " site";
+ } else if (System.getProperty("os.name").toLowerCase().startsWith("windows")) {
+ cmdString = "cmd /c forrest -Dbasedir=" + workingDirectory
+ + " site";
+ }
+ Utilities.RunExtCommand(cmdString);
+
+ dialog.close();
+ }
+
+ /**
+ * @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;
+ }
+ }
+ }
+
+}
Added: forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StartForrest.java
==============================================================================
--- (empty file)
+++ forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StartForrest.java Fri Oct 1 15:58:45 2004
@@ -0,0 +1,232 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * 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 java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.forrest.eclipse.ForrestPlugin;
+import org.apache.forrest.eclipse.actions.Utilities;
+import org.apache.forrest.eclipse.preference.ForrestPreferences;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+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 StartForrest
+implements IObjectActionDelegate, IJavaLaunchConfigurationConstants {
+
+ private IProject activeProject;
+
+ /**
+ * Constructor for Action1.
+ */
+ public StartForrest() {
+ super();
+ }
+
+ /**
+ * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ /**
+ * @see IActionDelegate#run(IAction)
+ */
+ public void run(IAction action) {
+ if (activeProject == null) {
+ return;
+ }
+
+ Shell shell = new Shell();
+ String cmdString = null;
+ IPath path = JavaCore.getClasspathVariable("ECLIPSE_HOME");
+ // TODO: This should be a monitor dialog
+ Shell dialog = new Shell(shell);
+
+ String fhome = ForrestPlugin.getDefault().getPluginPreferences()
+ .getString(ForrestPreferences.FORREST_HOME);
+
+ IPath workingDirectory = activeProject.getLocation();
+
+ if (fhome.equals("")) {
+ 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;
+ }
+
+ dialog.setText("Forrest Server");
+ dialog.setSize(500, 250);
+ Label statusMsg = new Label(dialog, SWT.NONE);
+ StringBuffer sb = new StringBuffer("Forrest server is starting.\n");
+ sb.append("\n\nPlease wait...");
+ statusMsg.setText(sb.toString());
+ statusMsg.setLocation(30, 25);
+ statusMsg.pack();
+ dialog.open();
+
+ if (System.getProperty("os.name").toLowerCase().startsWith("linux")) {
+ cmdString = "forrest -Dbasedir=" + workingDirectory
+ + " webapp-local";
+ Utilities.RunExtCommand(cmdString);
+ }
+
+ if (System.getProperty("os.name").toLowerCase().startsWith("windows")) {
+ cmdString = "cmd /c forrest -Dbasedir=" + workingDirectory
+ + " webapp-local";
+ Utilities.RunExtCommand(cmdString);
+ }
+
+ try {
+ ILaunchManager manager = DebugPlugin.getDefault()
+ .getLaunchManager();
+ ILaunchConfigurationType type = manager
+ .getLaunchConfigurationType(ID_JAVA_APPLICATION);
+ ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(
+ null, "Start Jetty");
+
+ // find the JRE used to start
+ IVMInstall jre = JavaRuntime.getDefaultVMInstall();
+
+ IPath forrestHome = new Path(fhome);
+
+ // specify a JRE
+ workingCopy.setAttribute(ATTR_VM_INSTALL_NAME, jre.getName());
+ workingCopy.setAttribute(ATTR_VM_INSTALL_TYPE, jre
+ .getVMInstallType().getId());
+
+ // specify main type and program arguments
+ workingCopy.setAttribute(ATTR_MAIN_TYPE_NAME,
+ "org.mortbay.jetty.Server");
+ workingCopy.setAttribute(ATTR_PROGRAM_ARGUMENTS, workingDirectory
+ + "/build/webapp/jettyconf.xml");
+
+ // specify classpath
+ List classpath = new ArrayList();
+
+ String parent = ".." + File.separator;
+
+ String sPath = fhome + File.separator + parent + parent + "lib";
+ File searchDir = new File(sPath);
+ File forrestBuildDir = new File(fhome + File.separator + parent + parent + "build");
+ File jettyDir = new File(fhome + File.separator + parent + parent + "tools"
+ + File.separator + "jetty");
+
+ try {
+ //FIXME: check that the search directory exists, if it doesn't eclipse throws an unhandled loop exception
+ List allfiles = Utilities.getFileListing(searchDir);
+ allfiles.addAll(Utilities.getFileListing(forrestBuildDir));
+ allfiles.addAll(Utilities.getFileListing(jettyDir));
+ Iterator filesListing = allfiles.iterator();
+ String thisFile;
+
+ while (filesListing.hasNext()) {
+ thisFile = filesListing.next().toString();
+
+ if (thisFile.toString().toLowerCase().endsWith("jar")) { //$NON-NLS-1$
+ IPath forrestCorePath = new Path(thisFile.toString());
+ IRuntimeClasspathEntry forrestCoreEntry = JavaRuntime
+ .newArchiveRuntimeClasspathEntry(forrestCorePath);
+ forrestCoreEntry
+ .setClasspathProperty(IRuntimeClasspathEntry.USER_CLASSES);
+ classpath.add(forrestCoreEntry.getMemento());
+ }
+ }
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }
+
+ IPath systemLibsPath = new Path(JavaRuntime.JRE_CONTAINER);
+ IRuntimeClasspathEntry systemLibsEntry = JavaRuntime
+ .newRuntimeContainerClasspathEntry(systemLibsPath,
+ IRuntimeClasspathEntry.STANDARD_CLASSES);
+ classpath.add(systemLibsEntry.getMemento());
+ workingCopy.setAttribute(ATTR_CLASSPATH, classpath);
+ workingCopy.setAttribute(ATTR_DEFAULT_CLASSPATH, false);
+
+ // specify working diretory
+ File workingDir = workingDirectory.append("build").append("webapp")
+ .toFile();
+ workingCopy.setAttribute(ATTR_WORKING_DIRECTORY, workingDir
+ .getAbsolutePath());
+
+ workingCopy.setAttribute(ATTR_VM_ARGUMENTS, "-Dproject.home=\"" + workingDirectory.toOSString() + "\""
+ + " -Dforrest.home=\"" + fhome + "\"");
+
+ ILaunchConfiguration configuration = workingCopy.doSave();
+ // TODO: move Jetty Launching code to Utilities
+ IProgressMonitor monitor = new NullProgressMonitor();
+ ILaunch launch = DebugUITools.buildAndLaunch(configuration,
+ ILaunchManager.RUN_MODE, monitor);
+ Utilities.jetty = launch;
+ dialog.close();
+ shell.setFocus();
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @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;
+ }
+ }
+ }
+
+}
Added: forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StopForrest.java
==============================================================================
--- (empty file)
+++ forrest/trunk/scratchpad/eclipsePlugin/src/org/apache/forrest/eclipse/popup/actions/StopForrest.java Fri Oct 1 15:58:45 2004
@@ -0,0 +1,72 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * 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.actions.Utilities;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class StopForrest
+implements IObjectActionDelegate, IJavaLaunchConfigurationConstants {
+
+ private IProject activeProject;
+
+ /**
+ * Constructor for Action1.
+ */
+ public StopForrest() {
+ super();
+ }
+
+ /**
+ * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ /**
+ * @see IActionDelegate#run(IAction)
+ */
+ public void run(IAction action) {
+ // TODO: Move Jetty termination code to Utilities
+ try {
+ Utilities.jetty.terminate();
+ Utilities.jetty = null;
+ } catch (DebugException e) {
+ // FIXME: Handle this exception
+ e.printStackTrace();
+ }
+
+
+ MessageDialog.openInformation(new Shell(), "Forrest",
+ "Forrest server stopped");
+ }
+
+ /**
+ * @see IActionDelegate#selectionChanged(IAction, ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+}