Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
ce06ac8
run app with the jetpack compose runner
Stefterv Nov 14, 2024
e082481
Run app with Java Mode
Stefterv Nov 14, 2024
07f05f3
Deprecation indicators and removed unused resources
Stefterv Nov 14, 2024
1983e5c
Merge branch 'processing:main' into main-gradle
Stefterv Nov 14, 2024
70208d3
Build sketches with new app bundler
Stefterv Nov 14, 2024
78da74d
Added all modules for JAR filesystem
Stefterv Nov 14, 2024
b1e4066
Work with external JDK
Stefterv Nov 14, 2024
d98cab9
Distribution icons
Stefterv Nov 14, 2024
9405e4a
First functional Composable
Stefterv Nov 14, 2024
27313b2
Proper styling
Stefterv Nov 14, 2024
28ab38a
Lottie animations
Stefterv Nov 14, 2024
a82ac33
Contribution Manager UI Test
Stefterv Nov 17, 2024
66cdcba
.idea meta files
Stefterv Nov 17, 2024
6be8114
Show local contributions
Stefterv Nov 17, 2024
cce5856
isUpdate & isInstalled & Contribution Pane
Stefterv Nov 17, 2024
86c5406
Contribution panel
Stefterv Nov 17, 2024
46b5d6c
Animation Test
Stefterv Nov 17, 2024
1adfe87
Added to the sketch menu
Stefterv Nov 17, 2024
138db84
Cleaned up ignored files
Stefterv Nov 17, 2024
3c27a73
Merge branch 'processing:main' into main-gradle
Stefterv Dec 7, 2024
8e29df6
backwards compatibility with ant
Stefterv Dec 9, 2024
fe25597
re-add bin files
Stefterv Dec 9, 2024
70a116a
.idea files
Stefterv Dec 9, 2024
b599df1
gradle ci/cd
Stefterv Dec 9, 2024
b33e095
Add generated code
Stefterv Dec 9, 2024
720793f
Update build-gradle.yml
Stefterv Dec 9, 2024
b031578
Create processing.png
Stefterv Dec 9, 2024
5697f33
Update build-gradle.yml
Stefterv Dec 9, 2024
1628d57
pre-processor gradle
Stefterv Dec 9, 2024
4f68bce
preprocessor decoupling
Stefterv Dec 9, 2024
ce4f379
Update build.gradle.kts
Stefterv Dec 9, 2024
5c40f12
windows fix
Stefterv Dec 9, 2024
fcc9ef1
LSP gradle build
Stefterv Dec 9, 2024
86f0d85
Added tests
Stefterv Dec 9, 2024
adf88f6
Fixed the tests
Stefterv Dec 9, 2024
1b09894
Fixed regressions
Stefterv Dec 14, 2024
805d8b2
Update build.gradle.kts
Stefterv Dec 14, 2024
85e84cf
Fixed another regression
Stefterv Dec 14, 2024
caada42
Fixed another regression
Stefterv Dec 14, 2024
852454f
Fixed load keywords
Stefterv Dec 14, 2024
4e893f9
get installed JDK platform independent
Stefterv Dec 14, 2024
89e991d
Reapply .gitignore
Stefterv Dec 14, 2024
91101c3
fixed missing preproc output
Stefterv Dec 14, 2024
63b251b
Update JavaBuild.java
Stefterv Dec 14, 2024
609ec6e
Embed JDK
Stefterv Dec 14, 2024
c7b77a4
Set permissions in Gradle instead
Stefterv Dec 14, 2024
a246d62
support windows
Stefterv Dec 14, 2024
8f58cd3
Update build-gradle.yml
Stefterv Dec 14, 2024
5190944
Merge branch 'processing:main' into main-gradle
Stefterv Dec 14, 2024
d013b57
Update build.yml
Stefterv Dec 14, 2024
0dca823
Update pull_request.yml
Stefterv Dec 14, 2024
4d0708d
Cleanup pull request signing
Stefterv Dec 14, 2024
fc40fdf
Update pull_request.yml
Stefterv Dec 14, 2024
8ddc54e
Update pull_request.yml
Stefterv Dec 14, 2024
f51c549
Use shared resources
Stefterv Dec 14, 2024
6e708a8
JOGL Dependencies fix
Stefterv Dec 15, 2024
08cb336
Dependencies centralisation
Stefterv Dec 15, 2024
b4afc51
Dependencies centralisation 2
Stefterv Dec 15, 2024
7b23c69
Fixed missing modules & Windows meta
Stefterv Dec 15, 2024
3cdfaa2
Bugfix
Stefterv Dec 15, 2024
957b61c
Jetpack Compose Compatibility
Stefterv Dec 15, 2024
0962013
Download Examples
Stefterv Dec 16, 2024
d057c46
Java Mode resources and Libraries
Stefterv Dec 16, 2024
972a489
Fixed autocomplete and all other preprocessor issues
Stefterv Dec 16, 2024
9b4f190
Cleanup unused fix
Stefterv Dec 16, 2024
284594f
Run target
Stefterv Dec 16, 2024
49e5878
Application export
Stefterv Dec 16, 2024
0b21d55
Fix install processing-java bug
Stefterv Dec 16, 2024
71a1e3c
Bugfix
Stefterv Dec 16, 2024
2f4a1f7
Bugfix
Stefterv Dec 16, 2024
5402de2
Removed different workfile
Stefterv Dec 16, 2024
22e3ec9
Add macOS pde:// and file associations
Stefterv Dec 17, 2024
dd99458
Camera and Microphone access
Stefterv Dec 17, 2024
4640865
Dynamic versioning
Stefterv Dec 17, 2024
eafd58a
Actions Versioning
Stefterv Dec 17, 2024
e0d9b8f
Fixed versioning error
Stefterv Dec 17, 2024
b378022
Update build-gradle.yml
Stefterv Dec 17, 2024
989c70d
versioning
Stefterv Dec 17, 2024
fa4f3ce
bugfix
Stefterv Dec 17, 2024
44d3adc
bugfix
Stefterv Dec 17, 2024
28859f1
Update build-gradle.yml
Stefterv Dec 17, 2024
b8e84da
New splash screen
Stefterv Dec 17, 2024
6618cad
macOS tItle bar tweak
Stefterv Dec 17, 2024
529a0e0
Theme selector compatibility
Stefterv Dec 17, 2024
7fb8b2f
Processing Website examples
Stefterv Dec 18, 2024
2fc0d69
Windows look & feel
Stefterv Dec 18, 2024
da29242
Move contribution url into centralised place
Stefterv Dec 19, 2024
0c39b27
Move update check centralized
Stefterv Dec 19, 2024
3953703
New splash image
Stefterv Dec 19, 2024
a249a44
Open new window if none are open
Stefterv Dec 20, 2024
b7a4003
Legacy Tasks explaination
Stefterv Dec 20, 2024
2ee27a8
Improve debugging experience
Stefterv Dec 20, 2024
b89efed
Documentation
Stefterv Dec 23, 2024
d1074db
Examples for Core development
Stefterv Dec 23, 2024
646806f
Update BUILD.md
SableRaf Dec 23, 2024
a03aa89
Remove .es. and liveSketch from extended examples
Stefterv Jan 9, 2025
cd7e6f6
Merge branch 'main-gradle' of https://github.com/Stefterv/processing4…
Stefterv Jan 9, 2025
a5985c3
Re-enable fullscreen test
Stefterv Jan 9, 2025
94dee41
Removed hardcoded JDK
Stefterv Jan 9, 2025
6df3bd4
Back to original contributions manager
Stefterv Jan 9, 2025
6eb3b14
Application export JDK and resources
Stefterv Jan 10, 2025
a9a92e9
fixed CI/CD
Stefterv Jan 12, 2025
ac7307c
Merge branch 'main' into main-gradle
Stefterv Jan 12, 2025
9405105
Ant compatibility
Stefterv Jan 14, 2025
ada8cd0
Add Linux arm64 build step
Stefterv Jan 15, 2025
5bd6f1d
Only run on arm64 runners
Stefterv Jan 15, 2025
839b1aa
Only run on arm64 runners
Stefterv Jan 15, 2025
7a325a8
Merge branch 'processing:main' into main-gradle
Stefterv Jan 15, 2025
865dd77
Merge remote-tracking branch 'upstream/main' into main-gradle
Stefterv Jan 17, 2025
66774ec
Merge branch 'processing:main' into main-gradle
Stefterv Jan 18, 2025
5509f2f
More helpful artifact names
Stefterv Jan 19, 2025
d96bc0a
Update pull_request.yml
Stefterv Jan 19, 2025
b2f2a29
Issues 931 testing
Stefterv Jan 21, 2025
8cc0b5f
Merge branch 'processing:main' into main-gradle
Stefterv Jan 21, 2025
8ea1f10
Merge branch 'main' into main-gradle
Stefterv Jan 24, 2025
e1dd29c
Fixed missing fonts on Linux
Stefterv Jan 25, 2025
205fc07
Remove dependency on Java mode and copy instead
Stefterv Jan 25, 2025
ccda7fb
Better Kotlin-Ant compatibility
Stefterv Jan 26, 2025
89ab3a0
New schema handler
Stefterv Jan 26, 2025
26b3fd9
More Schema options
Stefterv Jan 26, 2025
8ad60fa
Added support for Base64 encoded extra files
Stefterv Jan 29, 2025
420ccbb
- Imports cleanup
Stefterv Feb 3, 2025
44ccb3d
Removed outdated ant backwards compatibility marks
Stefterv Feb 4, 2025
3b9aea1
Allow branches with `/` in the name
Stefterv Feb 5, 2025
3f3e7d7
Revert "Allow branches with `/` in the name"
Stefterv Feb 5, 2025
b421274
Gradle Release initial workflow setup
Stefterv Feb 5, 2025
3cd158a
Merge branch 'processing:main' into main-gradle
Stefterv Feb 5, 2025
c36f5c7
File associations
Stefterv Feb 7, 2025
92934a6
Update build.gradle.kts
Stefterv Feb 9, 2025
29b557a
Refactored / Simplified App Build script
Stefterv Feb 9, 2025
3154e1c
Github runners
Stefterv Feb 10, 2025
abbc434
Update README.md
Stefterv Feb 14, 2025
ca4271d
Disable new schema for now
Stefterv Feb 28, 2025
1f62948
Update build.gradle.kts
Stefterv Feb 28, 2025
f3a8ec6
Added jdk.accessibility
Stefterv Mar 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Documentation
  • Loading branch information
Stefterv committed Dec 23, 2024
commit b89efed0334f0d1f8dad740570da522f41c9e0bd
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,4 @@ java/build/
/java/preprocessor/build
/java/lsp/build
/.kotlin/sessions
/core/examples/build
60 changes: 60 additions & 0 deletions BUILD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# How to Build Processing

Great to see you are interested in contributing to Processing. To get started you will need to have an IDE to build and develop Processing. Our recommendation and what we use ourselves is Intellij IDEA.

## IntelliJ IDEA

First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/). Make sure to select the "Community Edition", not "Ultimate". The Community Edition is free and built on open-source software. You may need to scroll down to find the download link. Then:

1. Clone the Processing4 repository to your machine locally
1. Open the cloned repository in IntelliJ IDEA CE
1. In the main menu, go to File > Project Structure > Project Settings > Project.
1. In the SDK Dropdown option, select a JDK version 17 or Download the jdk
1. Click the green Run Icon in the top right of the window. This is also where you can find the option to debug Processing.
1. Logs can be found in the `Build` or `Debug` pane on the bottom left of the window


## VSCode
1. Clone the Processing4 repository to your machine locally
1. Open the cloned repository in VScode
1. Wait for Gradle to set up the repository
1. (If you want debugging install [Debugger for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug) and [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack))
1. Go to the Gradle Tab and click app -> Tasks -> compose desktop -> run

Instructions for other editors are welcome and feel free to contribute the documentation for those [here](#other-editors)


## Architecture
Processing is build of three distinct parts, the `Core`, `Java` and the `App`. The `Core` currently stands alone and `Java` and `App` depend on it. `Java` and `App` are currently interdependent but we are working on decoupling those two.

`Core`: The part of the code that gets bundled with your sketches, so the functionality like `ellipse(25,25,50,50);` The inner workings of that function can be found here.

`Java`: This is the pipeline that will take your `.pde` file and compile and run it. The PDE understands different _modes_ with `Java` being the primary one.

`App`: This is the PDE, the visual part of the editor that you see and work within when you use Processing.

### Examples

- You want to fix a bug with one of the argument of a function that you use in a sketch. The `Core` is probably where you would find the implementation of the function that you would like to modify.
- A feature/bug of the PDE editor has been driving you nuts, and you can no longer stand it. You would probably find your bug in the `App` section of this project.
- You've written a large sketch and Processing has become slow to compile, a place to improve this code can probably be found in the `Java` section.

## User interface
Traditionally Processing has been written in Java swing and Flatlaf (and some html & css). Since 2025 we have switched to include Jetpack Compose, for a variety of reasons but mostly for it's inter-compatibility. There were ideas to switch to a React based editor, but this approach allows us to slowly replace Java swing components to Jetpack Compose, Ship of Theseus style.

## Build system

We use `Gradle` as the build system for Processing. This used to be `Ant` but we have switched to be more in line with modern standards and to hopefully switch the internal build system in the `Java` mode to `Gradle` as well, unifying both systems for simplicity.

## Kotlin vs Java
Since introducing the Gradle build system we also support Kotlin within the repository. Refactors from Java to Kotlin are not really necessary at this stage, but all new functionality should be written in Kotlin.

Any classes that end in `..Kt.Java` are there for backwards compatibility with the `Ant` build system and can be removed when that is no longer necessary.

### Running Processing

The main task to run or debug the PDE is `app:run` this run the application with `compose desktop`

If your main concern is with the `Core` you don't need to start the whole PDE to test your changes. In IntelliJ IDEA you can select any of the sketches in `core/examples/src/.../` to run by click on the green arrow next to their main functions. This will just compile core and the example sketch. Feel free to also new examples for your newly added functionality.

## Other editors
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ While we assume good intentions, and will give everyone a chance to learn, we ha
Building Processing locally on your machine will let you troubleshoot and make sure your contributions work as intended before submitting them to this repository. It also gives you the flexibility to experiment and learn more about how Processing is structured.

For a quick start:
1. Fork and clone the repository.
1. Open it in IntelliJ IDEA.
1. Install the required [Ant plugin](https://plugins.jetbrains.com/plugin/23025-ant).
1. Hit Run.
1. Fork and clone the repository
1. Open it in IntelliJ IDEA
1. Wait for Gradle to sync
1. Hit Run

For more information and detailed instructions, follow our [How to Build Processing](build/README.md) guide.
For more information and detailed instructions, follow our [How to Build Processing](BUILD.md) guide.

## Contact Information
For technical support or troubleshooting with your project, please post on the [Processing Forum](https://discourse.processing.org/).
Expand Down
12 changes: 12 additions & 0 deletions app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Processing `App`

This is the PDE, the visual part of the editor that you see and work within when you use Processing.

## Important classes

The main class of this project is the `src/.../Base.java` this is where the PDE starts after the splash screen.

The `ui/Editor.java` class is the class that is instantiated to show an editor window of the PDE.

`Mode.java` is the class that any mode within Procesing inherits from.

2 changes: 2 additions & 0 deletions build/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# How to Build Processing

This folder contains files for the legacy `Ant` build system. This build system will be removed in the future when we're sure we no longer need it.

## IntelliJ IDEA CE

First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/). Make sure to select the "Community Edition", not "Ultimate". The Community Edition is free and built on open-source software. You may need to scroll down to find the download link. Then:
Expand Down
14 changes: 13 additions & 1 deletion core/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Including the Processing Core library on your project
# Processing Core

`Core` contains the implementations of all the functionality that you would use within a Processing sketch, e.g. `size()` and `ellipse()`


## Including the Processing Core library on your project
Processing’s core libraries are available through [Maven Central](https://central.sonatype.com/artifact/org.processing/core).
This allows integration of Processing into Java-based projects using build tools like Maven or Gradle.

Expand Down Expand Up @@ -56,6 +61,13 @@ dependencies {
implementation group: 'org.processing', name: 'core', version: '4.3.1'
}
```

## Developing for Core
The easiest way to develop for core, without the need to build the whole project, is to use the `examples/src` sketches. In

## PGraphics Modes
Documentation on how to develop graphics modes as a library should go here.

### Other
Other example snippets on including the library are included in the [Maven Central repo](https://central.sonatype.com/artifact/org.processing/core).
Please look up on how to add the custom https://jogamp.org/deployment/maven repository to your build system.
Expand Down
20 changes: 20 additions & 0 deletions java/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Processing Java Mode

This the Java Mode in Processing. It compiles your sketches and runs them. It is the primary mode of Processing.

## Folders
- `application` assets for exporting applications within the mode
- `generated` generated antlr code for the mode, should be moved to a proper `antlr` plugin within gradle
- `libraries` libraries that are available within the mode
- `lsp` gradle build system for the language server protocol, in the future we should decouple the lsp from the java mode and pde and move all relevant code here. For now it can be found in `src/.../lsp`
- `mode` legacy files for `Ant`
- `preprocessor` the preprocessor for the mode, same deal as with the lsp, although the decoupling has mostly been done
- `src` the main source code for the mode
- `test` tests for the mode
- `theme` assets for the mode, related to autocomplete and syntax highlighting

## Future plans
- Decouple the `lsp` and `preprocessor` from the mode and move them to their own repositories
- Move the `antlr` code to a proper plugin within gradle
- Create a gradle plugin to convert `.pde` file to `.java` files
- Create a gradle based version of Java mode.