Added a toolbar button that only appears when the pde editor is active. Using it to help write the compiler code. Also added the Processing libs, though I doubt we need all of the ones I've added. Will remove unnecessary ones later.

This commit is contained in:
lonnen
2010-06-30 21:20:25 +00:00
parent f43e5e9b7b
commit 0cc85c5ef0
17 changed files with 156 additions and 36 deletions
+7
View File
@@ -3,5 +3,12 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="libs/ant-launcher.jar"/>
<classpathentry kind="lib" path="libs/antlr.jar"/>
<classpathentry kind="lib" path="libs/ant.jar"/>
<classpathentry kind="lib" path="libs/core.jar"/>
<classpathentry kind="lib" path="libs/ecj.jar"/>
<classpathentry kind="lib" path="libs/jna.jar"/>
<classpathentry kind="lib" path="libs/pde.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -8,6 +8,6 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui,
org.eclipse.jface.text,
org.eclipse.ui.editors
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.eclipse.ui.views.contentoutline
Bundle-ActivationPolicy: lazy
+17 -3
View File
@@ -1,12 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.editors">
<editor
class="org.processing.editor.ProcessingEditor"
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
default="true"
extensions="pde"
icon="icons/processing.gif"
@@ -30,5 +28,21 @@
class="org.eclipse.ui.texteditor.ResourceMarkerAnnotationModelFactory">
</factory>
</extension>
<extension
id="Processing.EditorSpecificActions"
name="Processing Buttons"
point="org.eclipse.ui.editorActions">
<editorContribution
id="org.processing.actions.ToolbarButtons"
targetID="org.processing.editor.ProcessingEditor">
<action
class="org.processing.actions.RunButton"
icon="icons/processing.gif"
id="org.processing.actions.Run"
label="Run Sketch"
toolbarPath="Normal/additions"
tooltip="Run Sketch">
</action>
</editorContribution>
</extension>
</plugin>
@@ -0,0 +1,60 @@
package org.processing.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
import org.processing.editor.ProcessingLog;
import processing.app.preproc.*; // get the preprocessor stuff
/**
* Right now this just does some hello world test stuff.
* Soon it will run the preprocessor only.
* Eventually it will function like the run button in the PDE.
*
* @author lonnen
*
*/
public class RunButton implements IEditorActionDelegate {
String editorContents = null;
/** Main logic for the button */
public void run(IAction action) {
ProcessingLog.logInfo("Someone hit the toolbar button!");
// get the program as a string
//System.out.println(editorContents);// SUCCESS!!
// dump to the preprocessor
// do something with the results
}
/**
* Notifies this action delegate that the selection in the workbench has changed.
*
* We're required to implement this, but right now it does nothing.
*/
public void selectionChanged(IAction action, ISelection selection) {
// ignore. we don't care about the selection, but we have to implement this
}
/**
* Retrieved the editor contents when a new editor is set.
* This is messy but this is how we get the editor contents from
* the IEditorActionDelegate. When the preprocessor is implemented
* as a proper builder it will be able to retrieve an up-to-date
* copy of the editor contents.
*/
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
if (targetEditor instanceof ITextEditor) {
IDocumentProvider provider= ((ITextEditor) targetEditor).getDocumentProvider();
IEditorInput input= targetEditor.getEditorInput();
IDocument document= provider.getDocument(input);
editorContents = document.get();
}
}
}
@@ -11,7 +11,9 @@
package org.processing.editor;
import org.eclipse.jface.text.*;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
@@ -15,8 +15,19 @@ import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.text.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPositionCategoryException;
import org.eclipse.jface.text.DefaultPositionUpdater;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IPositionUpdater;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.texteditor.IDocumentProvider;
@@ -1,7 +1,6 @@
package org.processing.editor;
import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IDocumentPartitioner;
@@ -15,20 +15,14 @@ import java.util.ResourceBundle;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.ITextViewerExtension5;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.Region;
//import org.eclipse.jface.text.source.IAnnotationAccess;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.IVerticalRuler;
@@ -36,16 +30,14 @@ import org.eclipse.jface.text.source.projection.ProjectionAnnotation;
import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel;
import org.eclipse.jface.text.source.projection.ProjectionSupport;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.editors.text.TextEditor;
//import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.texteditor.TextEditorAction;
import org.eclipse.ui.texteditor.TextOperationAction;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
//import org.eclipse.ui.texteditor.SourceViewerDecorationSupport; // error checking annotations
/**
* Sets up a Processing specific text editor.
@@ -16,13 +16,12 @@ import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.processing.editor.javadoc.JavaDocScanner;
import org.processing.editor.language.ProcessingCodeScanner;
import org.processing.editor.util.ProcessingColorProvider;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.processing.editor.javadoc.JavaDocScanner;
import org.processing.editor.language.ProcessingCodeScanner;
import org.processing.editor.util.ProcessingColorProvider;
/**
* Processing editor plug-in class.
@@ -13,7 +13,16 @@ package org.processing.editor;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.text.rules.*;
import org.eclipse.jface.text.rules.EndOfLineRule;
import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.MultiLineRule;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WordRule;
/**
* Processing uses Java comments, so we use the same scanner. The class name is
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.processing.editor;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
@@ -28,10 +26,7 @@ import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
//TODO implement completion properly for Processing
//Removing JavaDoc support from sketches, but leave in code
//import org.processing.editor.javadoc.JavaDocCompletionProcessor;
import org.eclipse.swt.graphics.RGB;
import org.processing.editor.language.ProcessingAutoIndentStrategy;
import org.processing.editor.language.ProcessingCompletionProcessor;
import org.processing.editor.language.ProcessingDoubleClickSelector;
@@ -11,7 +11,11 @@
package org.processing.editor;
import org.eclipse.jface.text.*;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region;
import org.eclipse.swt.graphics.Point;
/**
@@ -12,7 +12,11 @@ package org.processing.editor.javadoc;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.*;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
/**
* Example Java doc completion processor. Should work for Processing unmodified. Do we even use Javadoc?
@@ -14,7 +14,14 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.*;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WhitespaceRule;
import org.eclipse.jface.text.rules.WordRule;
import org.processing.editor.util.ProcessingColorProvider;
import org.processing.editor.util.ProcessingWhitespaceDetector;
@@ -21,9 +21,18 @@ import java.util.List;
import java.util.Set;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.*;
import org.eclipse.jface.text.rules.EndOfLineRule;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WhitespaceRule;
import org.eclipse.jface.text.rules.WordRule;
import org.processing.editor.ProcessingEditorPlugin;
import org.processing.editor.util.*;
import org.processing.editor.util.ProcessingColorProvider;
import org.processing.editor.util.ProcessingWhitespaceDetector;
import org.processing.editor.util.ProcessingWordDetector;
/**
* A Processing code scanner.
@@ -15,7 +15,13 @@ import java.text.MessageFormat;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.TextPresentation;
import org.eclipse.jface.text.contentassist.*;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ContextInformation;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationPresenter;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
/**
* Example Java completion processor. Should work unmodified for Processing.
@@ -11,7 +11,9 @@
package org.processing.editor.util;
import java.util.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;