You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by pt...@apache.org on 2008/03/18 11:39:18 UTC
svn commit: r638311 - in
/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src:
conf/ main/java/org/apache/cactus/eclipse/quickfix/
main/java/org/apache/cactus/eclipse/runner/ui/
Author: ptahchiev
Date: Tue Mar 18 03:39:14 2008
New Revision: 638311
URL: http://svn.apache.org/viewvc?rev=638311&view=rev
Log:
Added the Cactus quickFix feature. See issue #187
Added:
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java (with props)
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java (with props)
Modified:
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/conf/plugin.xml
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactifyActionDelegate.java
jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactusPlugin.java
Modified: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/conf/plugin.xml
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/conf/plugin.xml?rev=638311&r1=638310&r2=638311&view=diff
==============================================================================
--- jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/conf/plugin.xml (original)
+++ jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/conf/plugin.xml Tue Mar 18 03:39:14 2008
@@ -161,6 +161,16 @@
<extraClasspathEntry
library="org.apache.cactus.eclipse.runner-1.8.0-SNAPSHOT-src.zip">
</extraClasspathEntry>
+ </extension>
+
+ <extension
+ id="org.apache.cactus.runner.quickfix"
+ name="CactusQuickFixProcessor"
+ point="org.eclipse.jdt.ui.quickFixProcessors">
+ <quickFixProcessor
+ class="org.apache.cactus.eclipse.quickfix.CactusQuickFixProcessor"
+ id="org.apache.cactus.eclipse.quickfix.CactusQuickFixProcessor">
+ </quickFixProcessor>
</extension>
</plugin>
Added: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java?rev=638311&view=auto
==============================================================================
--- jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java (added)
+++ jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java Tue Mar 18 03:39:14 2008
@@ -0,0 +1,91 @@
+/*
+ * ========================================================================
+ *
+ * Copyright 2001-2003 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.cactus.eclipse.quickfix;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.cactus.eclipse.runner.ui.CactifyActionDelegate;
+import org.apache.cactus.eclipse.runner.ui.CactusPlugin;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+public class AddCactusClassesCompletionProposal implements IJavaCompletionProposal {
+
+ private final String name;
+ private final String proposalInfo;
+ private final int relevance;
+ private IJavaProject project;
+
+ public AddCactusClassesCompletionProposal(
+ String name,
+ int relevance,
+ IJavaProject theWorkingProject) {
+ this.name = name;
+ this.relevance = relevance;
+ this.project = theWorkingProject;
+
+ final StringBuffer buffer = new StringBuffer(80);
+ buffer.append("Cactify this project ...<br>" +
+ "Add the Cactus jars to the classpath <br/>");
+ this.proposalInfo = buffer.toString();
+ }
+
+ public int getRelevance() {
+ return relevance;
+ }
+
+ public void apply(IDocument document) {
+ CactifyActionDelegate cactifyDelegate = new CactifyActionDelegate();
+ cactifyDelegate.setSelectedProject(project);
+ //We add null and empty string because CactifyActionDelegate does not need these.
+ cactifyDelegate.run(null);
+ }
+
+ public Point getSelection(IDocument document) {
+ return null;
+ }
+
+ public String getAdditionalProposalInfo() {
+ return proposalInfo;
+ }
+
+ public String getDisplayString() {
+ return name;
+ }
+
+ public Image getImage() {
+ return CactusPlugin.getDefault().getImageRegistry().get(CactusPlugin.CACTUS_RUN_IMAGE);
+ }
+
+ public IContextInformation getContextInformation() {
+ return null;
+ }
+
+ public IJavaCompletionProposal createTypeProposal() {
+ return null;
+ }
+}
+
Propchange: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/AddCactusClassesCompletionProposal.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java?rev=638311&view=auto
==============================================================================
--- jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java (added)
+++ jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java Tue Mar 18 03:39:14 2008
@@ -0,0 +1,107 @@
+/*
+ * ========================================================================
+ *
+ * Copyright 2001-2003 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.cactus.eclipse.quickfix;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.ui.text.java.IInvocationContext;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
+import org.eclipse.jdt.ui.text.java.IProblemLocation;
+import org.eclipse.jdt.ui.text.java.IQuickFixProcessor;
+
+public class CactusQuickFixProcessor implements IQuickFixProcessor {
+
+ private static final int IMPORT_NOT_FOUND = 268435846;
+
+ private static final int IS_CLASSPATH_CORRECT = 16777218;
+
+ private static final int UNDEFINED_TYPE = 16777218;
+
+ public boolean hasCorrections(final ICompilationUnit unit, final int problemId) {
+ if (problemId == 1000) {
+ return true;
+ }
+ return false;
+ }
+
+ public IJavaCompletionProposal[] getCorrections(
+ final IInvocationContext context,
+ final IProblemLocation[] locations) throws CoreException {
+ if (locations == null || locations.length == 0) {
+ return null;
+ }
+ final ArrayList resultingCollections = new ArrayList();
+ for (int i=0;i< locations.length;i++) {
+ IProblemLocation problemLocation = (IProblemLocation) locations[i];
+ process(context, problemLocation, resultingCollections);
+ }
+ IJavaCompletionProposal[] proposals = new IJavaCompletionProposal[resultingCollections.size()];
+
+ for(int i=0;i<resultingCollections.size();i++) {
+ proposals[i] = (IJavaCompletionProposal) resultingCollections.get(i);
+ }
+ return proposals;
+ }
+
+ private void process(
+ final IInvocationContext context,
+ final IProblemLocation problem,
+ final ArrayList proposals) {
+ if (problem.getProblemId() == 0) { // no proposals for none-problem locations
+ return;
+ }
+
+ final String source;
+ try {
+ source = context.getCompilationUnit().getSource();
+ }
+ catch (final JavaModelException e) {
+ //ignore
+ return;
+ }
+ final int offset = problem.getOffset();
+ final int length = problem.getLength();
+
+ final String substring = source.substring(offset, offset + length);
+
+
+
+ IJavaProject theWorkingProject = context.getCompilationUnit().getJavaProject();
+
+ boolean cactusProblem = (problem.getProblemId() == IMPORT_NOT_FOUND && substring.startsWith("org.apache.cactus")) ||
+ (problem.getProblemId() == IS_CLASSPATH_CORRECT && isCactusPrefixesMatch(substring));
+
+ if(cactusProblem) {
+ final String name = "Cactify this project...";
+ proposals.add(new AddCactusClassesCompletionProposal(name, 1, theWorkingProject));
+ }
+ }
+
+ private boolean isCactusPrefixesMatch(String prefix) {
+ return (prefix.startsWith("ServletTestCase") ||
+ prefix.startsWith("JspTestCase") ||
+ prefix.startsWith("EJBTestCase") ||
+ prefix.startsWith("JettyTestSetup"));
+ }
+}
\ No newline at end of file
Propchange: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/quickfix/CactusQuickFixProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactifyActionDelegate.java
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactifyActionDelegate.java?rev=638311&r1=638310&r2=638311&view=diff
==============================================================================
--- jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactifyActionDelegate.java (original)
+++ jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactifyActionDelegate.java Tue Mar 18 03:39:14 2008
@@ -66,15 +66,15 @@
*/
public void run(IAction theAction)
{
- if (part != null && selectedProject != null)
+ if (selectedProject != null)
{
CactusPlugin thePlugin = CactusPlugin.getDefault();
File commonLibDir = null;
File clientLibDir = null;
try {
- commonLibDir = new File(Platform.asLocalURL(thePlugin.getBundle().getEntry("/" +CactusPlugin.CACTUS_LIBRARY_PATH +"/" +CactusPlugin.CACTUS_COMMON_LIBRARY_PATH)).getPath());
- clientLibDir = new File(Platform.asLocalURL(thePlugin.getBundle().getEntry("/" +CactusPlugin.CACTUS_LIBRARY_PATH +"/" +CactusPlugin.CACTUS_CLIENT_LIBRARY_PATH)).getPath());
+ commonLibDir = new File(Platform.asLocalURL(thePlugin.getBundle().getEntry("/" +CactusPlugin.CACTUS_LIBRARY_PATH +"/" +CactusPlugin.CACTUS_COMMON_LIBRARY_PATH)).getPath());
+ clientLibDir = new File(Platform.asLocalURL(thePlugin.getBundle().getEntry("/" +CactusPlugin.CACTUS_LIBRARY_PATH +"/" +CactusPlugin.CACTUS_CLIENT_LIBRARY_PATH)).getPath());
} catch (Exception ex) {
CactusPlugin.log(ex);
}
@@ -200,4 +200,8 @@
return (IClasspathEntry[]) result.toArray(
new IClasspathEntry[result.size()]);
}
+
+ public void setSelectedProject(IJavaProject selectedProject) {
+ this.selectedProject = selectedProject;
+ }
}
Modified: jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactusPlugin.java
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactusPlugin.java?rev=638311&r1=638310&r2=638311&view=diff
==============================================================================
--- jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactusPlugin.java (original)
+++ jakarta/cactus/trunk/integration/eclipse/org.apache.cactus.eclipse.runner/src/main/java/org/apache/cactus/eclipse/runner/ui/CactusPlugin.java Tue Mar 18 03:39:14 2008
@@ -21,6 +21,7 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
@@ -34,6 +35,8 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
@@ -87,6 +90,8 @@
* Name of the client libraries folder
*/
public static final String CACTUS_CLIENT_LIBRARY_PATH = "client";
+
+ public static final String CACTUS_RUN_IMAGE = "cactus.run.image";
@@ -388,5 +393,22 @@
}
return (String[]) containers.toArray(new String[containers.size()]);
}
+
+
+ protected ImageRegistry createImageRegistry() {
+ final ImageRegistry registry = super.createImageRegistry();
+
+ URL url = null;
+ try {
+ url = new URL(CactusPlugin.getDefault().getDescriptor().getInstallURL(),"icons/calaunch.gif");
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ //ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(CactusPlugin
+ // .getDefault().getBundle().getResource("icons/calaunch.gif"));
+ registry.put(CACTUS_RUN_IMAGE, ImageDescriptor.createFromURL(url));
+ return registry;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org