diff --git a/editor/org.processing.editor/.classpath b/editor/org.processing.editor/.classpath index ad32c83a7..43473f469 100644 --- a/editor/org.processing.editor/.classpath +++ b/editor/org.processing.editor/.classpath @@ -3,5 +3,12 @@ + + + + + + + diff --git a/editor/org.processing.editor/META-INF/MANIFEST.MF b/editor/org.processing.editor/META-INF/MANIFEST.MF index ba885d11f..a4d1c3908 100644 --- a/editor/org.processing.editor/META-INF/MANIFEST.MF +++ b/editor/org.processing.editor/META-INF/MANIFEST.MF @@ -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 diff --git a/editor/org.processing.editor/plugin.xml b/editor/org.processing.editor/plugin.xml index 1ae123912..d6a4d8c43 100644 --- a/editor/org.processing.editor/plugin.xml +++ b/editor/org.processing.editor/plugin.xml @@ -1,12 +1,10 @@ - - + + + + + + diff --git a/editor/org.processing.editor/src/org/processing/actions/RunButton.java b/editor/org.processing.editor/src/org/processing/actions/RunButton.java new file mode 100644 index 000000000..fb8074f19 --- /dev/null +++ b/editor/org.processing.editor/src/org/processing/actions/RunButton.java @@ -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(); + } + } + +} diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingAnnotationHover.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingAnnotationHover.java index 7fb2de6dd..33f9d14e3 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingAnnotationHover.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingAnnotationHover.java @@ -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; diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingContentOutlinePage.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingContentOutlinePage.java index cecf2cb13..71900ee36 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingContentOutlinePage.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingContentOutlinePage.java @@ -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; diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingDocumentSetupParticipant.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingDocumentSetupParticipant.java index b72e5e133..1a2e9f40d 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingDocumentSetupParticipant.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingDocumentSetupParticipant.java @@ -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; diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingEditor.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingEditor.java index c8c4a5d38..90ef02ba7 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingEditor.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingEditor.java @@ -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. diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingEditorPlugin.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingEditorPlugin.java index b248346d3..a45a4056e 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingEditorPlugin.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingEditorPlugin.java @@ -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. diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingPartitionScanner.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingPartitionScanner.java index 70e88efdc..27eea7283 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingPartitionScanner.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingPartitionScanner.java @@ -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 diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingSourceViewerConfiguration.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingSourceViewerConfiguration.java index 638e297bd..aff27dbf7 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingSourceViewerConfiguration.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingSourceViewerConfiguration.java @@ -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; diff --git a/editor/org.processing.editor/src/org/processing/editor/ProcessingTextHover.java b/editor/org.processing.editor/src/org/processing/editor/ProcessingTextHover.java index 1be66a9e3..8cecda67b 100644 --- a/editor/org.processing.editor/src/org/processing/editor/ProcessingTextHover.java +++ b/editor/org.processing.editor/src/org/processing/editor/ProcessingTextHover.java @@ -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; /** diff --git a/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocCompletionProcessor.java b/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocCompletionProcessor.java index 94ff44d32..32aad9f20 100644 --- a/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocCompletionProcessor.java +++ b/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocCompletionProcessor.java @@ -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? diff --git a/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocScanner.java b/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocScanner.java index 3bd97f7b1..765c9327d 100644 --- a/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocScanner.java +++ b/editor/org.processing.editor/src/org/processing/editor/javadoc/JavaDocScanner.java @@ -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; diff --git a/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCodeScanner.java b/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCodeScanner.java index f9b1e0510..8e7ca492e 100644 --- a/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCodeScanner.java +++ b/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCodeScanner.java @@ -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. diff --git a/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCompletionProcessor.java b/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCompletionProcessor.java index 9cba52294..0b5ca8cb7 100644 --- a/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCompletionProcessor.java +++ b/editor/org.processing.editor/src/org/processing/editor/language/ProcessingCompletionProcessor.java @@ -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. diff --git a/editor/org.processing.editor/src/org/processing/editor/util/ProcessingColorProvider.java b/editor/org.processing.editor/src/org/processing/editor/util/ProcessingColorProvider.java index 65fa208c1..4ac3b9b3b 100644 --- a/editor/org.processing.editor/src/org/processing/editor/util/ProcessingColorProvider.java +++ b/editor/org.processing.editor/src/org/processing/editor/util/ProcessingColorProvider.java @@ -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;