Repository: CommonWealthRobotics/BowlerStudio
Branch: development
Commit: a1e3d797dc3e
Files: 197
Total size: 1.1 MB
Directory structure:
gitextract_bnacbskg/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── release.yml
│ └── verify.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── COC.md
├── DEPENDENCIES.md
├── DEPENDENCIES_shallow.md
├── DEPENDENCIES_unknown.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── alllibs.txt
├── build.gradle
├── debian/
│ ├── .gitignore
│ ├── README.Debian
│ ├── README.source
│ ├── bowlerstudio-docs.docs
│ ├── bowlerstudio.doc-base.EX
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── install
│ ├── outfile
│ └── rules
├── genDeps.sh
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jvm.json
├── libraries/
│ └── .gitignore
├── log/
│ └── .gitignore
├── makeJar.sh
├── runMac.sh
├── searchLicense.sh
├── settings.gradle
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── neuronrobotics/
│ │ ├── bowlerstudio/
│ │ │ ├── AddFileToGistController.java
│ │ │ ├── BowlerStudio.java
│ │ │ ├── BowlerStudioController.java
│ │ │ ├── BowlerStudioFXMLController.java
│ │ │ ├── BowlerStudioMenu.java
│ │ │ ├── BowlerStudioMenuWorkspace.java
│ │ │ ├── BowlerStudioModularFrame.java
│ │ │ ├── ChangeAssetRepoController.java
│ │ │ ├── ConnectionManager.java
│ │ │ ├── CreatureLab3dController.java
│ │ │ ├── DeviceSupportPluginMap.java
│ │ │ ├── GistHelper.java
│ │ │ ├── INewVitaminCallback.java
│ │ │ ├── Main.java
│ │ │ ├── MakeReleaseController.java
│ │ │ ├── MeasurmentConfig.java
│ │ │ ├── MenuRefreshEvent.java
│ │ │ ├── MenuResettingEventHandler.java
│ │ │ ├── NameGetter.java
│ │ │ ├── NewCreatureWizard.java
│ │ │ ├── NewVitaminWizardController.java
│ │ │ ├── OutputFilter.java
│ │ │ ├── PluginFactory.java
│ │ │ ├── PluginManager.java
│ │ │ ├── PluginManagerWidget.java
│ │ │ ├── PsudoSplash.java
│ │ │ ├── RedirectableStream.java
│ │ │ ├── RpcCommandPanel.java
│ │ │ ├── SplashManager.java
│ │ │ ├── Terminal.java
│ │ │ ├── TestServer.java
│ │ │ ├── Tutorial.java
│ │ │ ├── assets/
│ │ │ │ └── BowlerStudioResourceFactory.java
│ │ │ ├── creature/
│ │ │ │ ├── AbstractGameController.java
│ │ │ │ ├── AdjustbodyMassWidget.java
│ │ │ │ ├── CreatureLab.java
│ │ │ │ ├── CreatureLabControlsTab.java
│ │ │ │ ├── DhLab.java
│ │ │ │ ├── DhSettingsWidget.java
│ │ │ │ ├── EngineeringUnitsSliderWidget.java
│ │ │ │ ├── GameControlThreadManager.java
│ │ │ │ ├── IAmControlled.java
│ │ │ │ ├── IGameControllerUpdateListener.java
│ │ │ │ ├── IGistPromptCompletionListener.java
│ │ │ │ ├── IJogProvider.java
│ │ │ │ ├── IOnEngineeringUnitsChange.java
│ │ │ │ ├── IOnTransformChange.java
│ │ │ │ ├── ITransformProvider.java
│ │ │ │ ├── ITrimControl.java
│ │ │ │ ├── JogMobileBase.java
│ │ │ │ ├── JogThread.java
│ │ │ │ ├── JogWidget.java
│ │ │ │ ├── LinkConfigurationWidget.java
│ │ │ │ ├── LinkGaugeController.java
│ │ │ │ ├── LinkSliderWidget.java
│ │ │ │ ├── MobleBaseMenueFactory.java
│ │ │ │ ├── ParallelWidget.java
│ │ │ │ ├── PhysicsWidget.java
│ │ │ │ ├── TransformWidget.java
│ │ │ │ ├── TransformWidgetTest.java
│ │ │ │ ├── VitaminWidgetTest.java
│ │ │ │ └── VitatminWidget.java
│ │ │ ├── scripting/
│ │ │ │ ├── AskToDeleteWidget.java
│ │ │ │ ├── GithubLoginFX.java
│ │ │ │ ├── IExternalEditor.java
│ │ │ │ ├── IScriptEventListener.java
│ │ │ │ ├── ScriptingFileWidget.java
│ │ │ │ ├── ScriptingWebWidget.java
│ │ │ │ ├── ScriptingWidgetType.java
│ │ │ │ └── external/
│ │ │ │ ├── ArduinoExternalEditor.java
│ │ │ │ ├── BlenderExternalEditor.java
│ │ │ │ ├── CaDoodleExternalEditor.java
│ │ │ │ ├── EclipseExternalEditor.java
│ │ │ │ ├── ExternalEditorController.java
│ │ │ │ ├── FreeCADExternalEditor.java
│ │ │ │ ├── GroovyEclipseExternalEditor.java
│ │ │ │ ├── OpenSCADExternalEditor.java
│ │ │ │ ├── SVGExternalEditor.java
│ │ │ │ └── SceneBuilderExternalEditor.java
│ │ │ ├── tabs/
│ │ │ │ ├── AbstractBowlerStudioTab.java
│ │ │ │ ├── CalibrateGameControl.java
│ │ │ │ ├── FirmataTab.java
│ │ │ │ ├── LocalFileScriptTab.java
│ │ │ │ ├── WebTab.java
│ │ │ │ ├── WebTabController.java
│ │ │ │ ├── WebTabFactory.java
│ │ │ │ └── WebTabTest.java
│ │ │ ├── threed/
│ │ │ │ ├── AssemblySlider.java
│ │ │ │ ├── Axis.java
│ │ │ │ ├── BowlerStudio3dEngine.java
│ │ │ │ ├── CreaturelLabController.java
│ │ │ │ ├── ICameraChangeListener.java
│ │ │ │ ├── IControlsMap.java
│ │ │ │ ├── Jbullet.java
│ │ │ │ ├── MakeRuler.java
│ │ │ │ ├── VirtualCameraMobileBase.java
│ │ │ │ └── Xform.java
│ │ │ └── utils/
│ │ │ ├── BowlerConnectionMenu.java
│ │ │ ├── FindTextWidget.java
│ │ │ ├── ImageTracer.java
│ │ │ └── SVGFactory.java
│ │ ├── graphing/
│ │ │ ├── CSVWriter.java
│ │ │ ├── DataChannel.java
│ │ │ ├── DataWriter.java
│ │ │ ├── ExcelWriter.java
│ │ │ ├── GraphDataElement.java
│ │ │ ├── GraphingOptionsDialog.java
│ │ │ └── GraphingWindow.java
│ │ ├── nrconsole/
│ │ │ ├── plugin/
│ │ │ │ ├── BowlerCam/
│ │ │ │ │ ├── BowlerCamController.java
│ │ │ │ │ ├── BowlerCamPanel.java
│ │ │ │ │ └── RGBSlider.java
│ │ │ │ ├── DyIO/
│ │ │ │ │ └── Secheduler/
│ │ │ │ │ ├── AnamationSequencer.java
│ │ │ │ │ ├── SchedulerControlBar.java
│ │ │ │ │ ├── SchedulerGui.java
│ │ │ │ │ └── ServoOutputScheduleChannelUI.java
│ │ │ │ └── bootloader/
│ │ │ │ ├── BootloaderPanel.java
│ │ │ │ └── gui/
│ │ │ │ ├── BootloaderParams.java
│ │ │ │ ├── NRBootLoaderApp.java
│ │ │ │ ├── NR_Bootloader_GUI.java
│ │ │ │ └── StatusLabel.java
│ │ │ └── util/
│ │ │ ├── CommitWidget.java
│ │ │ ├── CompoundSlider.java
│ │ │ ├── DirectoryFilter.java
│ │ │ ├── FileSelectionFactory.java
│ │ │ ├── GCodeFilter.java
│ │ │ ├── GroovyFilter.java
│ │ │ ├── IntegerComboBox.java
│ │ │ ├── Mp3Filter.java
│ │ │ ├── NRConsoleDocumentationFactory.java
│ │ │ ├── PrefsLoader.java
│ │ │ ├── PromptForGit.java
│ │ │ ├── Slic3rFilter.java
│ │ │ ├── StlFilter.java
│ │ │ └── XmlFilter.java
│ │ ├── pidsim/
│ │ │ ├── CSVWriter.java
│ │ │ ├── DataPanel.java
│ │ │ ├── ExcelWriter.java
│ │ │ ├── GraphingPanel.java
│ │ │ ├── LinearPhysicsEngine.java
│ │ │ ├── PIDConstantsDialog.java
│ │ │ ├── PIDSim.java
│ │ │ ├── PIDSimFullTest.java
│ │ │ ├── PidLab.java
│ │ │ └── SettingsDialog.java
│ │ └── sdk/
│ │ └── addons/
│ │ └── kinematics/
│ │ ├── FirmataBowler.java
│ │ └── FirmataLink.java
│ └── resources/
│ ├── com/
│ │ └── neuronrobotics/
│ │ └── bowlerstudio/
│ │ └── build.properties
│ ├── javax.usb.properties
│ └── speech.properties
├── test.dxf
└── wrappers/
├── JavaVersionCheck.jar
├── linux/
│ ├── BowlerStudio.desktop
│ ├── bowlerstudio
│ └── control
└── osx/
├── BowlerStudio
└── bowler-scripting-kernel.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
src/main/java/com/neuronrobotics/bowlerstudio/NameGetter.java filter=unchanged
* text=auto eol=lf
*.java eol=lf
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
# github: madhephaestus
github: CommonWealthRobotics
patreon: madhephaestus
#community_bridge: BowlerStudio
issuehunt: CommonWealthRobotics/BowlerStudio
#ko-fi: bowlerstudio
#open_collective: kevin-harrington
================================================
FILE: .github/workflows/release.yml
================================================
name: "Release"
on:
push:
tags:
- '*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v2
with:
submodules: recursive
- name: Get the version
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Set Release Number Studio
run: |
echo $'app.name=BowlerStudio' > src/main/resources/com/neuronrobotics/bowlerstudio/build.properties
echo "app.version=${{ steps.get_version.outputs.VERSION }}" >> src/main/resources/com/neuronrobotics/bowlerstudio/build.properties
- name: Set OAuth Key
env: # Or as an environment variable
OAUTH_SECRET: ${{ secrets.OAUTH_SECRET }}
run: |
sed -i "s/REPLACE_ME/$OAUTH_SECRET/g" src/main/java/com/neuronrobotics/bowlerstudio/NameGetter.java
- name: start xvfb
run:
Xvfb :99 &
- name: initialize the X11 DISPLAY variable
run:
export DISPLAY=:99
- name: After JDK download, list directory contnts
run: pwd; ls -la
- name: Build with Gradle
run: bash makeJar.sh
- name: Set Java
uses: actions/setup-java@v1
with:
java-version: 25
jdkFile: zulu25.32.21-ca-fx-jdk25.0.2-linux_x64.tar.gz
- name: release
uses: actions/create-release@v1
id: create_release
with:
draft: false
prerelease: false
release_name: ${{ steps.version.outputs.version }}
tag_name: ${{ github.ref }}
env:
GITHUB_TOKEN: ${{ github.token }}
- name: upload JVM Configuration
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: jvm.json
asset_name: jvm.json
asset_content_type: application/json
- name: upload BowlerStudio artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./build/libs/BowlerStudio.jar
asset_name: BowlerStudio.jar
asset_content_type: application/jar
================================================
FILE: .github/workflows/verify.yml
================================================
# test
name: Test package
on:
push:
branches:
- '*'
tags-ignore:
- '*'
pull_request:
branches:
- '*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v2
with:
submodules: recursive
- name: List directory contents
run: pwd; ls -la
- name: start xvfb
run:
Xvfb :0 &
- name: initialize the X11 DISPLAY variable
run:
export DISPLAY=:0
- name: After checkout, list directory contnts
run: pwd; ls -la
- name: Build with Gradle
run: bash makeJar.sh
- name: Set Java
uses: actions/setup-java@v1
with:
java-version: 25
jdkFile: zulu25.32.21-ca-fx-jdk25.0.2-linux_x64.tar.gz
- name: Run Unit Tests
run: xvfb-run -s '-screen 0 1024x768x24' ./gradlew test
================================================
FILE: .gitignore
================================================
/build/
/.nb-gradle/private/
/bin/
/JFXScad.jar
/servoTest.jfxscad
/wheel.stl
/.gradle*
/.gradle*
/.project
/.classpath
/.settings*
/.idea*
/build/
/whitecylinder/
*.iml
/CSGdatabase.json
/jbullet-20101010/
/.DS_Store
*hs_err_pid*.log*
*.debuggerDefaults*
/*.svg
/*.svg.png
/.combined.png-autosave.kra
/combined.png
/Oracle_VM_VirtualBox_Extension_Pack-5.2.20.vbox-extpack
/chdk-ptp-java.log
/deps.txt
/MUJOCO_LOG.TXT
/physicsTest/
/zulu*.tar.gz
================================================
FILE: .gitmodules
================================================
[submodule "libraries/bowler-script-kernel"]
path = libraries/bowler-script-kernel
url = https://github.com/CommonWealthRobotics/bowler-script-kernel.git
================================================
FILE: .travis.yml
================================================
language: java
before_install:
- "export DISPLAY=:99.0"
- "export TERM=dumb"
- "sh -e /etc/init.d/xvfb start"
script:
- TERM=dumb ./gradlew compileJava javadoc
cache:
directories:
- $HOME/.m2
jdk:
- oraclejdk8
# for running tests on Travis CI container infrastructure for faster builds
sudo: true
dist: trusty
================================================
FILE: COC.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: DEPENDENCIES.md
================================================
batik-all.jar , Apache
batik-awt-util-1.7.jar , Apache
batik-svggen-1.7.jar , Apache
batik-util-1.7.jar , Apache
bowler-kernel.jar , Apache
commons-beanutils-1.8.0.jar , Apache
commons-codec-1.13.jar , Apache
commons-collections-3.2.2.jar , Apache
commons-discovery-0.4.jar , Apache
commons-fileupload-1.2.1.jar , Apache
commons-io-2.6.jar , Apache
commons-lang-2.6.jar , Apache
commons-lang3-3.11.jar , Apache
commons-logging-1.2.jar , Apache
commons-math3-3.6.1.jar , Apache
commons-net-3.3.jar , Apache
controlsfx-8.0.6.jar , Unknown
groovy-2.3.7.jar , Apache
groovy-all-2.4.5.jar , Apache
hamcrest-core-1.1.jar , BSD
httpclient-4.5.1.jar , Apache
httpcore-4.4.3.jar , Apache
httpcore-nio-4.1.jar , Apache
icu4j-54.1.1.jar , BSD
ivy-2.2.0.jar , Apache
jackson-annotations-2.10.1.jar , Apache
jackson-core-2.10.1.jar , Apache
jackson-databind-2.10.1.jar , Apache
jakarta.activation-api-1.2.1.jar , Unknown
jakarta.xml.bind-api-2.3.2.jar , Unknown
javax.annotation-api-1.2.jar , CDDL
javax.servlet-api-3.1.0.jar , CDDL
jetty-continuation-9.4.36.v20210114.jar , Apache
jetty-http-9.4.36.v20210114.jar , Apache
jetty-io-9.4.36.v20210114.jar , Apache
jetty-security-9.4.36.v20210114.jar , Apache
jetty-server-9.4.36.v20210114.jar , Apache
jetty-servlet-9.4.36.v20210114.jar , Apache
jetty-servlets-9.4.36.v20210114.jar , Apache
jetty-util-9.4.36.v20210114.jar , Apache
jetty-util-ajax-9.4.36.v20210114.jar , Apache
jetty-webapp-9.4.36.v20210114.jar , Apache
jetty-xml-9.4.36.v20210114.jar , Apache
jtok-core-1.9.3.jar , Apache
junit-4.10.jar , BSD
jython-2.5.3.jar , Apache
jython-standalone-2.5.2.jar , Apache
log4j-1.2.16.jar , Apache
mockito-all-1.9.5.jar , MIT License
opennlp-maxent-3.0.3.jar , Apache
opennlp-tools-1.5.3.jar , Apache
pdf-transcoder.jar , Apache
svg-dom-java-1.1.jar , W3C
xml-apis-1.3.04.jar , Apache
xml-apis-ext.jar , Apache
xml-apis.jar , W3C
xmlrpc-client-3.1.3.jar , Apache
xmlrpc-common-3.1.3.jar , Apache
================================================
FILE: DEPENDENCIES_shallow.md
================================================
annotation-indexer-1.4.jar
asm5-5.0.1.jar
asm-all-3.1.jar
asm-debug-all-4.2.jar
batik-all.jar
batik-awt-util-1.7.jar
batik-svggen-1.7.jar
batik-util-1.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
bluecove-2.1.1.jar
bluecove-gpl-2.1.1.jar
bowler-kernel.jar
bridge-method-annotation-1.14.jar
bridge-method-injector-1.14.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
clojure-1.8.0.jar
commons-beanutils-1.8.0.jar
commons-codec-1.13.jar
commons-collections-3.2.2.jar
commons-discovery-0.4.jar
commons-fileupload-1.2.1.jar
commons-io-2.6.jar
commons-lang-2.6.jar
commons-lang3-3.11.jar
commons-logging-1.2.jar
commons-math3-3.6.1.jar
commons-net-3.3.jar
controlsfx-8.0.6.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
easybind-1.0.4-SNAPSHOT.jar
emotionml-checker-java-1.1.jar
ezmorph-1.0.6.jar
fast-md5-2.7.1.jar
firmata4j-2.3.4.1.jar
flowless-0.4.jar
github-api-1.101.jar
GithubPasswordManager-0.6.1.jar
groovy-2.3.7.jar
groovy-all-2.4.5.jar
gson-2.5.jar
guava-14.0.1.jar
hamcrest-core-1.1.jar
hsqldb-2.0.0.jar
httpclient-4.5.1.jar
httpcore-4.4.3.jar
httpcore-nio-4.1.jar
icu4j-54.1.1.jar
ihmc-native-library-loader-1.3.1.jar
ivy-2.2.0.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jackson-databind-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jakarta.xml.bind-api-2.3.2.jar
jama-1.0.3.jar
Jampack-1.0.jar
JavaCad-0.27.0.jar
javacpp-1.5.7.jar
JavaEWAH-1.1.6.jar
javax.annotation-api-1.2.jar
javax.servlet-api-3.1.0.jar
jbullet-2.72.2.4.jar
jbullet-2.72.2.4-sources.jar
jcommon-1.0.15.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jfreechart-1.0.12.jar
jinput-2.0.6-ihmc2.jar
jinput-platform-2.0.6-natives-linux.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-windows.jar
jl1.0.jar
jmf-2.1.1e.jar
jsapi.jar
jsch-0.1.55.jar
js.jar
json-20180813.jar
json-lib-2.4-jenkins-2.jar
json-simple-1.1.jar
jsoup-1.8.3.jar
jsr305-2.0.1.jar
jssc-2.8.0.jar
jtok-core-1.9.3.jar
junit-4.0.jar
junit-4.10.jar
jutils-1.0.0.jar
jwnl-1.3.3.jar
jxl-2.4.2.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
jzlib-1.1.3.jar
kabeja-0.4.jar
kabeja-svg-0.4.jar
kabeja-xslt.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-windows-x86.jar
localizer-1.7.jar
log4j-1.2.16.jar
marytts-common-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
maven-plugin-api-2.0.1.jar
mbrola.jar
Medusa-7.1.jar
miethxml-toolkit.jar
miethxml-ui.jar
miglayout-core-4.2.jar
miglayout-swing-4.2.jar
mockito-all-1.9.5.jar
motej.0.9.jar
mujoco-java-2.2.0-pre.5.jar
nrjavaserial-5.1.1.jar
nrsdk-3.33.0-jar-with-dependencies.jar
nrV4J-3.8.1.jar
okhttp-2.0.0.jar
okhttp-urlconnection-2.0.0.jar
okio-1.0.0.jar
opennlp-maxent-3.0.3.jar
opennlp-tools-1.5.3.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
pdf-transcoder.jar
protobuf-java-3.8.0.jar
reactfx-2.0-M5.jar
richtextfx-0.6.jar
rosjava-0.1.6.jar
rsyntaxtextarea-2.6.0.jar
slf4j-api-1.7.7.jar
slf4j-simple-1.6.1.jar
smack-3.2.1.jar
smackx-3.2.1.jar
smil-boston-dom-java-2000-02-25.jar
stack-alloc.jar
stapler-1.237.jar
svg-dom-java-1.1.jar
swing-layout-1.0.3.jar
tiger-types-1.3.jar
tink-1.3.0-rc1.jar
trove4j-2.0.2.jar
undofx-2.1.1.jar
usb4java-1.2.0.jar
usb4java-javax-1.2.0.jar
usb-api-1.0.2.jar
vecmath-1.3.1.jar
voice-cmu-slt-hsmm-5.2.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
vvecmath-0.3.2.jar
WalnutiQ-2.3.3.jar
wellbehavedfx-0.1.1.jar
wordnet-random-name-1.2.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
xml-apis-ext.jar
xml-apis.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar
================================================
FILE: DEPENDENCIES_unknown.md
================================================
annotation-indexer-1.4.jar
asm5-5.0.1.jar
asm-all-3.1.jar
asm-debug-all-4.2.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
bluecove-2.1.1.jar
bluecove-gpl-2.1.1.jar
bridge-method-annotation-1.14.jar
bridge-method-injector-1.14.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
clojure-1.8.0.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
easybind-1.0.4-SNAPSHOT.jar
emotionml-checker-java-1.1.jar
ezmorph-1.0.6.jar
fast-md5-2.7.1.jar
firmata4j-2.3.4.1.jar
flowless-0.4.jar
github-api-1.101.jar
GithubPasswordManager-0.6.1.jar
gson-2.5.jar
guava-14.0.1.jar
hsqldb-2.0.0.jar
ihmc-native-library-loader-1.3.1.jar
jama-1.0.3.jar
Jampack-1.0.jar
JavaCad-0.27.0.jar
javacpp-1.5.7.jar
JavaEWAH-1.1.6.jar
jbullet-2.72.2.4.jar
jbullet-2.72.2.4-sources.jar
jcommon-1.0.15.jar
jfreechart-1.0.12.jar
jinput-2.0.6-ihmc2.jar
jinput-platform-2.0.6-natives-linux.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-windows.jar
jl1.0.jar
jmf-2.1.1e.jar
jsapi.jar
jsch-0.1.55.jar
js.jar
json-20180813.jar
json-lib-2.4-jenkins-2.jar
json-simple-1.1.jar
jsoup-1.8.3.jar
jsr305-2.0.1.jar
jssc-2.8.0.jar
junit-4.0.jar
jutils-1.0.0.jar
jwnl-1.3.3.jar
jxl-2.4.2.jar
jzlib-1.1.3.jar
kabeja-0.4.jar
kabeja-svg-0.4.jar
kabeja-xslt.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-windows-x86.jar
localizer-1.7.jar
marytts-common-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
maven-plugin-api-2.0.1.jar
mbrola.jar
Medusa-7.1.jar
miethxml-toolkit.jar
miethxml-ui.jar
miglayout-core-4.2.jar
miglayout-swing-4.2.jar
motej.0.9.jar
mujoco-java-2.2.0-pre.5.jar
nrjavaserial-5.1.1.jar
nrsdk-3.33.0-jar-with-dependencies.jar
nrV4J-3.8.1.jar
okhttp-2.0.0.jar
okhttp-urlconnection-2.0.0.jar
okio-1.0.0.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
protobuf-java-3.8.0.jar
reactfx-2.0-M5.jar
richtextfx-0.6.jar
rosjava-0.1.6.jar
rsyntaxtextarea-2.6.0.jar
slf4j-api-1.7.7.jar
slf4j-simple-1.6.1.jar
smack-3.2.1.jar
smackx-3.2.1.jar
smil-boston-dom-java-2000-02-25.jar
stack-alloc.jar
stapler-1.237.jar
swing-layout-1.0.3.jar
tiger-types-1.3.jar
tink-1.3.0-rc1.jar
trove4j-2.0.2.jar
undofx-2.1.1.jar
usb4java-1.2.0.jar
usb4java-javax-1.2.0.jar
usb-api-1.0.2.jar
vecmath-1.3.1.jar
voice-cmu-slt-hsmm-5.2.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
vvecmath-0.3.2.jar
WalnutiQ-2.3.3.jar
wellbehavedfx-0.1.1.jar
wordnet-random-name-1.2.jar
ws-commons-util-1.0.2.jar
================================================
FILE: ISSUE_TEMPLATE.md
================================================
### Installed Version
### OS type and version number
### Expected behavior
### Actual Behavior
### Steps to reproduce the behavior
================================================
FILE: LICENSE
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License.
"The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version".
The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:
a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:
a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.
================================================
FILE: README.md
================================================
BowlerStudio
==========
[](https://gitter.im/CommonWealthRobotics/BowlerStudioDevelopment?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
[](https://github.com/CommonWealthRobotics/BowlerStudio/actions/workflows/verify.yml)
[](https://github.com/CommonWealthRobotics/BowlerStudio/releases)
[](https://bestpractices.coreinfrastructure.org/projects/2904)
# [Download Latest](https://commonwealthrobotics.com/#downloads)
# What is BowlerStudio?
BowlerStudio assists you in every step of a robotics project from concept to completion. Tools enable users to:
* Interface with motors, sensors, and other electronics hardware.
* Create 3d models for fabrication, and for simulating the motions of your project.
* Give your robot sight with image processing on camera feeds and Kinect data.
* Operate 3d printers and other CNC machines.
* Create custom graphical user interfaces to control yours robots.
* Create and control animations.
==========
## The Nitty-Gritty Version
BowlerStudio Robotics development IDE is based on
* [JCSG](https://github.com/miho/JCSG)
* [Java-Bowler](https://github.com/NeuronRobotics/java-bowler)
* [Jinput](https://github.com/jinput/jinput)
* [motej](http://motej.sourceforge.net/)
* [Usb4Java](https://github.com/usb4java/usb4java)
* [NrJavaSerial](https://github.com/NeuronRobotics/nrjavaserial)
* [BlueCove](https://github.com/hcarver/bluecove)
* JavaFX 8 3d engine.
* [JBullet](http://jbullet.advel.cz/) physics engine ported from the popular Bullet C++ framework.
* [Jetty](http://www.eclipse.org/jetty/) Web Framework
BowlerStudio is a device manager, scripting engine, CAD package, and simulation tool all in one application. A user can develop the kinematic of an robot arm using the D-H parameters-based automatic kinematics engine. With this kinematics model, the user can then generate the CAD for new unique parts to match the kinematic model. The user can then export the model to an STL, and connect a Bowler 3d printer to BowlerStudio. The printer can print out the part (using the newly generated STL) while the user connects a DyIO and begins testing the servos with the kinematics model. When the print is done, the user can assemble the arm with the tested servos and run the model again to control the arm with Cartesian instructions. Once this is complete, the user can then attach a wiimote to train the robot arm through a set of tasks, recording them with the animation framework built into BowlerStudio. To be sure the arm is moving to the right place, the user can attach a webcam to the end and use OpenCV to verify the arm's position, or use the arm (in conjunction with the webcam with OpenCV enabled) to track and grab objects (IE "eye-in-hand" tracking).
Every step of this task can be performed from within BowlerStudio!
Let's go through the main features:
# Scripting With Gist
### About scripts and Gist
Scripts are bits of code that BowlerStudio can load and run. BowlerStudio allows you to open a local file and run it, but BowlerStudio is most powerful when the code lives on Github Gist (a code snippet hosting service from Github). Simply give BowlerStudio the URL for a Gist you want to load and execute. Gists can be selected and edited using the built in browser, or inline in another script using the Gist ID.
### Java and Groovy
BowlerStudio can load and run scripts written in Java, Groovy, and Python. Which parser is used is determined by the file extension. Files that end in .java or .groovy will be run through the Groovy compiler. These Groovy scripts are compiled fully and run directly in the JVM. This means they will execute at full speed, just like a regular application.
### Python
Python, on the other hand, by virtue of its structure, will generally execute much slower then Java. With the reduction in speed you get lots of flexibility and a clean and easy to understand syntax. The python code can also create and return objects to BowlerStudio (such as CAD CSG objects, or UI Tabs).
### Return Objects
A script can return a few object types that will be handled by BowlerStudio:
Objects of type "CSG" and "MeshView" will be added to the 3d display. If a transform is added to either of these and updated by a script the user can move an object in the 3d view.
Objects of type "Tab" will be added to the Tabmanager and displayed in BowlerStudio. This is an easy way to make control panels or state displays and monitors.
Objects of type "BowlerAbstractDevice" (or any subclass) will be added to the connections manager and made available to all other scripts. These can be external devices or virtual communication bus devices. A bowler Server/Client pair is the preferred mechanism for communication between scripts.
### Device Access
All scripts are passed all connected devices by name when the script is run. The name associated with the device in the connections tab is the name to use in the script to access that device. A script can also create and return a device (EG to connect to a specific device in order to give that device a specific name). The device returned will be added to the list of available devices and be available to other scripts. A user can define their own devices to facilitate communication between scripts.
# Bowler Devices
BowlerDevices (such as the Neuron Robotics DyIO) are devices that implement the Bowler Communication System. BowlerDevices are servers of features to applications. The DyIO, for example, is a server of microcontroller features. These devices implement a micro domain-specific language as a protocol. This language synchronizes the device with the application by building the communication system at runtime using a namespace/RPC system.
As such, the device is treated as a collection of namespaces. Each namespace has a set of RPCs for communication, some synchronous (IE they are application initiated) and some asynchronous (IE device initiated). In addition, each RPC has full method introspection. This means that all parameters and datatypes (including how to pack and interpret all packets) are able to be queried over the communication system. A Library need only implement the core packet parser and every device will assemble its own communication layer live.
# Cameras
Cameras can be connected to Bowler Studio using one of 3 supported drivers:
OpenCV's native Java bindings are provided by installing OpenCV using your OS specific installer (unfortunately not available for Mac at this time).
JavaCV is a meta-library that adds support for a wide range of camera device integrations and image processing options. This is a big project and integrated now with a full scripting system.
CHDK-PTP-Java is a Java library that adds support for SLR Cannon cameras. CHDK is a camera OS that makes the cameras features available over USB, and the Java library makes those images and controls available to Java and or scripting engine.
# Image processing
Image processing is provided be a variety of libraries included in this application. OpenCV and ARToolkit are some of the most widely used image recognition libraries available, and now you can use them directly from our scripting environment!
# Kinematics Engine
The Bowler Kinematics engine is based on [D-H parameters](https://www.youtube.com/embed/rA9tm0gTln8)- the standard mathematical definition of kinematics chains. This standard simplifies the calculation process and allows us to run forward kinematics equations for arbitrary defined chains in real time. For inverse kinematics, a collection of kinematic engines are available for optimizing for speed and accuracy.
# Real-Time validated
For applications where real time is required, there is no need to leave the Bowler OS. The Bowler Java stack has been validated as real-time capable when run on JamaicaVM (the real-time Java implementation). The Bowler Kinematics engine is run in a real-time loop for neurosurgery applications (Bowler and Java are fast and reliable enough for brain surgery!)
# 3D CAD
Users can write scripts using Java, Groovy or Python to generate CSG style CAD. This programmatic CAD engine JCSG was inspired by OpenSCAD, but implemented in pure Java with JavaFX visualizations. JCSG implements all basic shape generation and manipulation, using Java's library packaging and distribution for libraries of parts. Gist hosting of parts can also simplify sharing and loading of dependent libraries.
# Virtualization
### Virtual links
Virtual PID devices allow users to make applications that can be simulated with virtual links before ever connecting a real device.
Users can also use the PIDLab to learn about designing and implementing PID controllers with a built in motor physics simulation.
### Virtual Camera
Coming soon! Soon users will be able to interact with the 3D environment camera from their code just like a real camera. Users will be able to manipulate it just like it was another 3d object.
### Virtual Sensors
Coming soon! Soon we will be able to provide virtual sensor devices, simulating real world sensors within the 3d environment.
# Make A Contribution
BowlerStudio is an open source project and is always looking for help with both the application code and the tutorials content.
### Java Contributions
If you are a Java developmer, skip ahead to [The Build Instructions](#command-line). The application is a light plugin framework for UI, 3D and Device interaction. You can look at this repository for issues.
### Adding Tutorials
All of the content for BowlerStudio Tutorials is housed on our [Neuronrobotics.github.io](https://github.com/CommonWealthRobotics/CommonWealthRobotics.github.io) web page. Fork that repository and make contributions based on the README.md file in the root of the repository. To merge the changes into the main website, send a pull request with your changes to official repository.
Examples of tutorials that need to be added are [A simple Java Programming Introduction](https://github.com/CommonWealthRobotics/CommonWealthRobotics.github.io/issues/59). This tutorial set would go through the basic syntax of java and what all of the symbols mean and how to use them.
Another example of a tutorial that could be added is one for [JavaCad Cheatsheet](https://github.com/CommonWealthRobotics/CommonWealthRobotics.github.io/issues/58) where you would add a 'cheat sheet' of commands to use in the JavaCad system.
If a tutorial is missing and not described as needed by an issue, feel free to add additional issues.
## How to Build BowlerStudio
### Requirements
- Internet connection (dependencies are downloaded automatically)
- IDE: [Gradle](http://www.gradle.org/) Plugin (not necessary for command line usage)
- The Binary installer for BowlerStudio must be installed before develpment.
### IDE
Open the `BowlerStudio` [Gradle](http://www.gradle.org/) project in your favorite IDE (tested with NetBeans 7.4) and build
by calling the `assemble` task.
#### Windows Setup Instructions
- Download and install Sloeber Eclipse or an alternative Java IDE of your choice.
- Install BowlerStudio via the provided installer. This will ensure that the correct JVM is accessible.
- Enable Clone a Git repository in Eclipse (Window > Show View > Other... > Git > Git Repositories > Clone a Git repository)
- Clone this repository via HTTPS and use your [GitHub personal access token](https://github.com/settings/tokens).
- Make sure to enable the option to clone submodules.
- Set the default JVM in Eclipse to the following file path: `C:\Program Files (x86)\Commonwealth Robotics BowlerStudio\BowlerStudioApp\jre`. (Window > Preferences > Java > Installed JREs)
- In the Eclipse gradle configuration, set the `javahome` path to the following file path: `C:\Program Files (x86)\Commonwealth Robotics BowlerStudio\BowlerStudioApp\jre`. (Window > Preferences > Gradle > Jave home)
- Import the cloned project into Eclipse using gradle. (File > Import... > Gradle > Existing Gradle Project)
- The path to add can be found in Eclipse by right-clicking the git repo and selecting Copy Path to Clipboard. Remove the /.git from the directory before importing.
### Command Line
Navigate to the [Gradle](http://www.gradle.org/) project (e.g., `path/to/BowlerStudio`) and enter the following command:
#### Bash (Linux/OS X/Cygwin/other Unix-like shell)
##### Ubuntu 18.04 Dependencies
```
sudo apt install curl
```
##### Ubuntu 16.04 Dependencies
```
sudo apt-get install git gradle
```
##### Ubuntu 14.04, install extra dependencies
```
sudo add-apt-repository "deb http://ppa.launchpad.net/mad-hephaestus/commonwealthrobotics/ubuntu xenial main" -y
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 71EA898B
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ trusty universe multiverse"
sudo apt-get update -qq
sudo apt-get install -y --force-yes gradle
```
##### All Unix
```
bowlerstudio # run this to get the JVM downloaded into $HOME/bin/java8/jre
git clone https://github.com/CommonWealthRobotics/BowlerStudio.git
JAVA_HOME=$HOME/bin/java8/jre
export JAVA_HOME
cd BowlerStudio
git submodule update --init --recursive
git submodule update --recursive
./gradlew shadowJar
$JAVA_HOME/bin/java -jar build/libs/BowlerStudio*.jar
```
Now you can use the Eclipse Marketplace to install the Gradle Plugin
#### Windows (CMD)
gradlew jar
# History
Bowler Studio began [Feb 11, 2015](https://github.com/CommonWealthRobotics/BowlerStudio/releases/tag/0.0.1) with the goal of making a robotics IDE.
================================================
FILE: alllibs.txt
================================================
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :showAll
BowlerStudio:
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
libraries:
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
bowler-script-kernel:
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
java-bowler:
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
JCSG:
-compile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
xmlrpc-common-3.1.3.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
ws-commons-util-1.0.2.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
junit-4.0.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
-testCompile:
bowler-kernel.jar
mbrola.jar
rosjava-0.1.6.jar
jsapi.jar
jl1.0.jar
jbullet-2.72.2.4.jar
nrV4J-3.8.1.jar
asm-all-3.1.jar
jbullet-2.72.2.4-sources.jar
stack-alloc.jar
GithubPasswordManager-0.6.1.jar
tink-1.3.0-rc1.jar
json-20180813.jar
nrsdk-3.33.0-jar-with-dependencies.jar
bluecove-gpl-2.1.1.jar
motej.0.9.jar
bluecove-2.1.1.jar
voice-dfki-poppy-hsmm-5.2.jar
voice-dfki-prudence-hsmm-5.2.jar
voice-dfki-spike-hsmm-5.2.jar
voice-cmu-slt-hsmm-5.2.jar
marytts-lang-en-5.2.jar
marytts-runtime-5.2.jar
marytts-signalproc-5.2.jar
jama-1.0.3.jar
richtextfx-0.6.jar
flowless-0.4.jar
undofx-2.1.1.jar
reactfx-2.0-M5.jar
groovy-2.3.7.jar
ivy-2.2.0.jar
controlsfx-8.0.6.jar
stapler-1.237.jar
json-lib-2.4-jenkins-2.jar
marytts-common-5.2.jar
ezmorph-1.0.6.jar
commons-lang-2.6.jar
httpclient-4.5.1.jar
github-api-1.101.jar
commons-codec-1.13.jar
org.eclipse.jgit-5.6.0.201912101111-r.jar
okhttp-urlconnection-2.0.0.jar
wordnet-random-name-1.2.jar
mockito-all-1.9.5.jar
bridge-method-injector-1.14.jar
miglayout-swing-4.2.jar
JavaCad-0.27.0.jar
pdf-transcoder.jar
xml-apis-ext.jar
kabeja-svg-0.4.jar
miethxml-toolkit.jar
batik-all.jar
js.jar
xml-apis.jar
kabeja-0.4.jar
kabeja-xslt.jar
miethxml-ui.jar
commons-io-2.6.jar
jython-2.5.3.jar
jython-standalone-2.5.2.jar
clojure-1.8.0.jar
jetty-webapp-9.4.36.v20210114.jar
jetty-servlet-9.4.36.v20210114.jar
jetty-security-9.4.36.v20210114.jar
jetty-server-9.4.36.v20210114.jar
jetty-servlets-9.4.36.v20210114.jar
javax.servlet-api-3.1.0.jar
vecmath-1.3.1.jar
slf4j-simple-1.6.1.jar
CHDK-PTP-Java-0.5.3-SNAPSHOT.jar
WalnutiQ-2.3.3.jar
jxl-2.4.2.jar
de.huxhorn.sulky.3rdparty.jlayer-1.0.jar
gson-2.5.jar
jsoup-1.8.3.jar
jmf-2.1.1e.jar
firmata4j-2.3.4.1.jar
jfreechart-1.0.12.jar
xmlrpc-client-3.1.3.jar
rsyntaxtextarea-2.6.0.jar
batik-svggen-1.7.jar
svg-dom-java-1.1.jar
Medusa-7.1.jar
xmlrpc-common-3.1.3.jar
ws-commons-util-1.0.2.jar
junit-4.10.jar
protobuf-java-3.8.0.jar
wellbehavedfx-0.1.1.jar
easybind-1.0.4-SNAPSHOT.jar
javax.annotation-api-1.2.jar
commons-discovery-0.4.jar
commons-beanutils-1.8.0.jar
localizer-1.7.jar
tiger-types-1.3.jar
guava-14.0.1.jar
asm5-5.0.1.jar
commons-fileupload-1.2.1.jar
jsr305-2.0.1.jar
jzlib-1.1.3.jar
jsch-0.1.55.jar
JavaEWAH-1.1.6.jar
jtok-core-1.9.3.jar
slf4j-api-1.7.7.jar
bcpg-jdk15on-1.64.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15on-1.64.jar
okhttp-2.0.0.jar
bridge-method-annotation-1.14.jar
asm-debug-all-4.2.jar
maven-plugin-api-2.0.1.jar
miglayout-core-4.2.jar
jetty-http-9.4.36.v20210114.jar
jetty-io-9.4.36.v20210114.jar
jetty-util-ajax-9.4.36.v20210114.jar
jetty-continuation-9.4.36.v20210114.jar
jetty-xml-9.4.36.v20210114.jar
jetty-util-9.4.36.v20210114.jar
usb4java-javax-1.2.0.jar
httpcore-nio-4.1.jar
httpcore-4.4.3.jar
commons-logging-1.2.jar
jssc-2.8.0.jar
jcommon-1.0.15.jar
batik-awt-util-1.7.jar
batik-util-1.7.jar
xml-apis-1.3.04.jar
smil-boston-dom-java-2000-02-25.jar
smack-3.2.1.jar
smackx-3.2.1.jar
usb4java-1.2.0.jar
jinput-2.0.6-ihmc2.jar
ihmc-native-library-loader-1.3.1.jar
commons-lang3-3.11.jar
nrjavaserial-5.1.1.jar
commons-math3-3.6.1.jar
mujoco-java-2.2.0-pre.5.jar
json-simple-1.1.jar
vvecmath-0.3.2.jar
hamcrest-core-1.1.jar
commons-collections-3.2.2.jar
okio-1.0.0.jar
annotation-indexer-1.4.jar
jackson-databind-2.10.1.jar
usb-api-1.0.2.jar
libusb4java-1.2.0-linux-x86.jar
libusb4java-1.2.0-linux-x86_64.jar
libusb4java-1.2.0-linux-arm.jar
libusb4java-1.2.0-windows-x86.jar
libusb4java-1.2.0-windows-x86_64.jar
libusb4java-1.2.0-osx-x86.jar
libusb4java-1.2.0-osx-x86_64.jar
commons-net-3.3.jar
jutils-1.0.0.jar
jinput-platform-2.0.6-natives-windows.jar
jinput-platform-2.0.6-natives-osx.jar
jinput-platform-2.0.6-natives-linux.jar
jakarta.xml.bind-api-2.3.2.jar
javacpp-1.5.7.jar
icu4j-54.1.1.jar
emotionml-checker-java-1.1.jar
trove4j-2.0.2.jar
opennlp-tools-1.5.3.jar
opennlp-maxent-3.0.3.jar
hsqldb-2.0.0.jar
log4j-1.2.16.jar
fast-md5-2.7.1.jar
groovy-all-2.4.5.jar
Jampack-1.0.jar
swing-layout-1.0.3.jar
jackson-annotations-2.10.1.jar
jackson-core-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jwnl-1.3.3.jar
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.2/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 2m 39s
1 actionable task: 1 executed
================================================
FILE: build.gradle
================================================
buildscript {
repositories {
[
mavenCentral(),
maven {
url "https://plugins.gradle.org/m2/"
},
mavenLocal(),
maven {
url "https://repo.jenkins-ci.org/releases/"
}
]
}
dependencies {
classpath 'com.gradleup.shadow:shadow-gradle-plugin:8.3.9'
}
}
boolean is64Bit() {
////System.out.println("Arch: "+getOsArch());
return getOsArch().startsWith("x86_64") || getOsArch().startsWith("amd64");
}
boolean isARM() {
return getOsArch().startsWith("arm");
}
boolean isCortexA8(){
if(isARM()){
//TODO check for cortex a8 vs arm9 generic
return true;
}
return false;
}
boolean isWindows() {
////System.out.println("OS name: "+getOsName());
return getOsName().toLowerCase().startsWith("windows") ||getOsName().toLowerCase().startsWith("microsoft") || getOsName().toLowerCase().startsWith("ms");
}
boolean isLinux() {
return getOsName().toLowerCase().startsWith("linux");
}
boolean isOSX() {
return getOsName().toLowerCase().startsWith("mac");
}
String getExtension() {
if(isWindows()) {
return ".dll";
}
if(isLinux()) {
return ".so";
}
if(isOSX()) {
return ".jnilib";
}
return "";
}
String getOsName() {
return System.getProperty("os.name");
}
String getOsArch() {
return System.getProperty("os.arch");
}
plugins {
id 'com.github.jk1.dependency-license-report' version '1.17'
id 'java'
id 'signing'
id 'application'
id 'eclipse'
id 'com.diffplug.spotless' version '6.25.0'
}
spotless {
java {
lineEndings = com.diffplug.spotless.LineEnding.UNIX
// Eclipse formatter with your config file
eclipse('4.26').configFile('libraries/bowler-script-kernel/config/eclipse-formatter.xml') // Optional but recommended additions:
// Optional but recommended additions:
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
}
if (project == rootProject) {
apply plugin: 'application'
apply plugin: 'com.gradleup.shadow'
}else {
apply plugin: 'java-library'
}
import com.github.jk1.license.render.*
import com.github.jk1.license.importer.*
licenseReport {
// Set output directory for the report data.
// Defaults to ${project.buildDir}/reports/dependency-license.
outputDir = "$projectDir/build/licenses"
// Adjust the configurations to fetch dependencies. Default is 'runtimeClasspath'
// For Android projects use 'releaseRuntimeClasspath' or 'yourFlavorNameReleaseRuntimeClasspath'
// Use 'ALL' to dynamically resolve all configurations:
// configurations = ALL
configurations = ['runtimeClasspath']
// List the ids (in module:name format) to exclude from dependency report. Supports regular expressions.
// By default excludes is empty.
excludes = ['moduleGroup:moduleName']
// Don't include artifacts of project's own group into the report
excludeOwnGroup = false
// Don't exclude bom dependencies.
// If set to true, then all boms will be excluded from the report
excludeBoms = false
// Set custom report renderer, implementing ReportRenderer.
// Yes, you can write your own to support any format necessary.
renderers = [
new XmlReportRenderer('third-party-libs.xml', 'Back-End Libraries'),
new CsvReportRenderer('third-party-libs.csv')
]
}
//apply plugin: 'edu.sc.seis.launch4j'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
// NetBeans will automatically add "run" and "debug" tasks relying on the
// "mainClass" property. You may however define the property prior executing
// tasks by passing a "-PmainClass=" argument.
//
// Note however, that you may define your own "run" and "debug" task if you
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own compile.
ext.mainClass = 'com.neuronrobotics.bowlerstudio.BowlerStudio'
File buildDir = file(".");
configurations.all {
exclude module: 'slf4j-log4j12'
}
sourceSets {
test {
java {
srcDirs = [
"test/java/src" ] // Note @Peter's comment below
}
}
}
/*
launch4j {
mainClassName = ext.mainClass
icon = buildDir.getAbsolutePath()+"/src/main/resources/CommonWealthRobotics.ico"
}
*/
Properties props = new Properties()
props.load(new FileInputStream(buildDir.getAbsolutePath()+"/src/main/resources/com/neuronrobotics/bowlerstudio/build.properties"))
repositories {
maven {
url "https://repo.jenkins-ci.org/public/"
}
mavenCentral()
maven { url 'https://repo1.maven.org/maven2/'}
// maven {
// url "https://repo.myrobotlab.org/artifactory/myrobotlab/"
// content {
// includeGroup("de.dfki.mary")
// }
// }
maven { url 'https://maven-central.storage-download.googleapis.com/repos/central/data/'}
maven {url 'https://repo.jenkins-ci.org/public/'}
maven { url 'https://clojars.org/repo' }
maven { url 'https://jline.sourceforge.net/m2repo' }
maven { url 'https://repo.spring.io/milestone'}
//
// maven {
// url 'https://jenkinsci.artifactoryonline.com/jenkinsci/public/'
// allowInsecureProtocol = true
// }
maven {
url "https://raw.githubusercontent.com/DFKI-MLT/Maven-Repository/main"
}
// maven {
// url "https://repo.spring.io/libs-milestone/"
// }
maven {
url "https://maven.cloudsmith.io/marytts/marytts/"
}
maven { url 'https://plugins.gradle.org/m2/' }
//maven { url 'https://dl.bintray.com/clearcontrol/ClearControl' }
// maven { url 'https://repo.spring.io/plugins-release/' }
maven { url "https://jitpack.io" }
maven { url "https://repo.eclipse.org/content/groups/releases/" }
maven { url "https://dl.bintray.com/dfki-lt/maven/" }
maven { url "https://raw.github.com/marytts/marytts/master/repository/" }
maven { url "https://repo.jenkins-ci.org/public/" }
maven { url "https://raw.githubusercontent.com/DFKI-MLT/DFKI-LT-MAVEN/master/repository" }
maven {
url 'https://commonwealthrobotics.com/maven/'
allowInsecureProtocol = true
}
maven { url "https://clojars.org/repo" }
}
dependencies {
implementation 'org.kohsuke.stapler:stapler:1.263'
// https://mvnrepository.com/artifact/org.kohsuke.stapler/stapler
//implementation group: 'org.kohsuke.stapler', name: 'stapler', version: '1881.vd39f3ee5c629'
implementation group: 'org.json', name: 'json', version: '20180813'
implementation 'com.google.crypto.tink:tink:1.3.0-rc1'
implementation 'gov.nist.math:jama:1.0.2'
implementation group: 'org.fxmisc.richtext', name: 'richtextfx', version: '0.6'
implementation group: 'org.controlsfx', name: 'controlsfx', version: '8.0.6'
implementation group: 'commons-lang', name: 'commons-lang', version: '2.6'
implementation group: 'commons-codec', name: 'commons-codec', version: '1.7'
// https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit
implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '5.13.1.202206130422-r'
implementation group: 'com.squareup.okhttp', name: 'okhttp-urlconnection', version: '2.0.0'
implementation group: 'org.mockito', name: 'mockito-all', version: '1.9.5'
implementation group: 'com.infradna.tool', name: 'bridge-method-injector', version: '1.14'
//compile group: 'com.neuronrobotics', name:'GithubPasswordManager', version:'0.6.1'
implementation 'com.miglayout:miglayout-swing:4.2'
implementation 'commons-io:commons-io:2.6'
implementation group:'org.python',name:'jython',version:'2.5.3'
implementation group:'org.python',name:'jython-standalone',version:'2.5.2'
implementation 'org.clojure:clojure:1.8.0'
// jetty server
implementation "org.eclipse.jetty:jetty-server:9.4.36.v20210114"
implementation "org.eclipse.jetty:jetty-servlet:9.4.36.v20210114"
implementation "org.eclipse.jetty:jetty-servlets:9.4.36.v20210114"
implementation "org.eclipse.jetty:jetty-webapp:9.4.36.v20210114"
implementation "javax.servlet:javax.servlet-api:3.1.0"
//compile 'org.clojure:tools.nrepl:0.2.10'
//compile "overtone:overtone:0.9.1"
//compile "edu.cmu.sphinx:sphinx4-core:5prealpha-SNAPSHOT"
//compile "edu.cmu.sphinx:sphinx4-data:5prealpha-SNAPSHOT"
implementation group: 'java3d', name: 'vecmath', version: '1.3.1'
implementation 'org.slf4j:slf4j-simple:1.6.1'
//implementation "com.neuronrobotics:CHDK-PTP-Java:0.5.3-SNAPSHOT"
//compile "com.neuronrobotics:java-bowler:3.25.4"
//compile fileTree (dir: '../java-bowler/build/libs/', includes: ['nrsdk-3.23.3-jar-with-dependencies.jar'])
implementation "com.neuronrobotics:WalnutiQ:2.3.3"
/*
String basedir =System.getenv("OPENCV_DIR")+"/java/opencv-249.jar";
if(isWindows()){
basedir =System.getenv("OPENCV_DIR")+"\\..\\..\\java\\opencv-249.jar";
println("OPENCV_DIR="+basedir);
compile files(basedir)
}
if(isOSX()){
basedir =System.getenv("OPENCV_DIR")+"../../java/opencv-249.jar";
println("OPENCV_DIR="+basedir);
if(System.getenv("OPENCV_DIR")!=null)
compile files(basedir)
else
//If you set your OPENCV_DIR environment variable, then we wouldnt have to do hacky things
compile files('/Applications/BowlerStudio.app/Contents/MacOS/opencv249build/bin/opencv-249.jar')
}
if(isLinux()){
//compile files('/usr/share/java/opencv-249.jar')
if(new File("/usr/share/OpenCV/java/").exists()){
System.out.println("Using the legacy opencv dir ")
compile fileTree (dir: '/usr/share/OpenCV/java/', includes: ['*opencv-24*.jar'])
}else{
compile fileTree (dir: '/usr/share/java/', includes: ['*opencv-24*.jar'])
}
}
*/
//compile group: 'jfree', name: 'jfreechart', version: '1.0.12'
implementation group: 'jexcelapi', name: 'jxl', version: '2.4.2'
//compile group: 'com.google.zxing', name: 'zxing-parent', version: '3.2.0'
//compile group:'com.github.ellzord', name:'JALSE', version:'1.0.9'
implementation group:'de.huxhorn.sulky', name:'de.huxhorn.sulky.3rdparty.jlayer', version:'1.0'
//compile("org.springframework.boot:spring-boot-starter-web:1.2.7.RELEASE")
implementation 'com.google.code.gson:gson:2.5'
implementation 'org.jsoup:jsoup:1.8.3'
implementation 'org.apache.httpcomponents:httpclient:4.5.1'
//compile 'cz.advel.jbullet:jbullet:20101010-1'
//compile 'org.bubblecloud.jbullet:jbullet:2.72.2.4'// replaced by local jar because jbullet maven went down
//compile "alda:alda:1.0.0-rc14"
//Deep Learning 4 j and dependancies
/*
compile 'org.deeplearning4j:deeplearning4j-core:0.4-rc3.8'
//compile 'org.nd4j:nd4j-x86:0.4-rc3.8'
compile 'org.deeplearning4j:deeplearning4j-nlp:0.4-rc3.8'
compile 'org.deeplearning4j:deeplearning4j-ui:0.4-rc3.8'
compile 'com.google.guava:guava:19.0'
compile 'org.nd4j:canova-nd4j-image:0.0.0.14'
compile 'org.nd4j:canova-nd4j-codec:0.0.0.14'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.5.1'
*/
// JScience:
//compile 'org.jscience:jscience:4.3.1'
implementation 'javax.media:jmf:2.1.1e'
//Weka
//compile 'nz.ac.waikato.cms.weka:weka-stable:3.6.13'
//Firmata
implementation 'com.github.kurbatov:firmata4j:2.3.4.1'
implementation group: 'jfree', name: 'jfreechart', version: '1.0.12'
//compile fileTree (dir: '../bowler-script-kernel/build/libs', includes: ['BowlerScriptingKernel-0.25.4.jar'])
testImplementation group: 'junit', name: 'junit', version: '4.10'
//compile "org.jfxtras:jfxtras-common:8.0-r4"
//compile "org.jfxtras:jfxtras-fxml:8.0-r4"
//compile "org.jfxtras:jfxtras-controls:8.0-r4"
//compile "org.jfxtras:jfxtras-agenda:8.0-r4"
//compile "org.jfxtras:jfxtras-window:8.0-r4"
//compile "org.jfxtras:jfxtras-menu:8.0-r4"
//compile "org.jfxtras:jfxtras-labs:8.0-r4"
//compile 'com.github.movisens:SmartGattLib:1.7'
// https://mvnrepository.com/artifact/org.apache.xmlrpc/xmlrpc-client
implementation group: 'org.apache.xmlrpc', name: 'xmlrpc-client', version: '3.1.3'
// https://mvnrepository.com/artifact/com.abercap/odoo-java-api
//compile group: 'com.abercap', name: 'odoo-java-api', version: '1.1.0.RELEASE'
//http://www.jocl.org/
//compile group: 'org.jocl', name: 'jocl', version: '2.0.0'
// https://mvnrepository.com/artifact/com.nativelibs4java/jnaerator
//compile group: 'com.nativelibs4java', name: 'jnaerator', version: '0.11'
// https://mvnrepository.com/artifact/com.github.kurbatov/firmata4j
// https://mvnrepository.com/artifact/com.fifesoft/rsyntaxtextarea
implementation("com.fifesoft:rsyntaxtextarea:3.6.0")
//compile 'org.bubblecloud.jbullet:jbullet:2.72.2.4'
// https://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-svggen
implementation group: 'org.apache.xmlgraphics', name: 'batik-all', version: '1.17'
// https://mvnrepository.com/artifact/org.axsl.org.w3c.dom.svg/svg-dom-java
implementation group: 'org.axsl.org.w3c.dom.svg', name: 'svg-dom-java', version: '1.1'
//compile fileTree (dir: 'libraries/bowler-script-kernel/libs/', includes: ['*.jar'])
implementation project('libraries:bowler-script-kernel:java-bowler')
implementation project('libraries:bowler-script-kernel:JCSG')
implementation project('libraries:bowler-script-kernel')
//compile project(':libraries:bowler-script-kernel:JCSG')
implementation project('libraries:bowler-script-kernel:GithubPasswordManager:GithubPasswordManager')
//compile project(':kinematics-chef')
//compile 'com.neuronrobotics:kinematics-chef-core:0.0.15'
//compile fileTree (dir: 'libraries/java-bowler/libs/', includes: ['*.jar'])
implementation 'com.google.guava:guava:19+'
implementation group: 'org.kohsuke', name: 'wordnet-random-name', version: '1.2'
//https://github.com/HanSolo/Medusa
implementation group: 'eu.hansolo', name: 'Medusa', version: '7.1'
//MuJoCo
implementation group: 'org.bytedeco', name: 'javacpp', version: '1.5.7'
implementation group: 'com.neuronrobotics', name: 'mujoco-java', version:'3.1.3-pre.11'
// Zip and unzip, tar and untar
implementation 'org.apache.commons:commons-compress:1.26.2'
}
// create a fat-jar (class files plus dependencies
// excludes VRL.jar (plugin jar files must not start with 'vrl-\\d+')
jar {
//zip64 true
jar.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// project class files compiled from source
//from files(sourceSets.main.output.classesDir)
manifest {
attributes(
"Main-Class": 'com.neuronrobotics.bowlerstudio.BowlerStudio',
"Manifest-Version": "1.0",
"Created-By": "CommonWealth Robotics Cooperative",
"Specification-Title": props."app.name",
"Specification-Version": props."app.version",
"Specification-Vendor": "CommonWealth Robotics Cooperative",
"Implementation-Title": props."app.name",
"Implementation-Version" : props."app.version",
"Implementation-Vendor": "CommonWealth Robotics Cooperative"
)
}
}
tasks.withType(JavaCompile).configureEach {
options.compilerArgs += ['--enable-preview']
}
tasks.withType(Test).configureEach {
jvmArgs '--enable-preview'
}
tasks.withType(JavaExec).configureEach {
jvmArgs '--enable-preview'
}
task ('showAll') {
doLast {
allprojects.each {
println(it.name+':')
println('-compile:')
configurations.compile.each { c ->
println(' '+c.name)
}
println '-testCompile:'
configurations.testCompile.each { r->
println(' '+ r.name)
}
}
}
}
eclipse{
jdt {
// sourceCompatibility = 1.8
// targetCompatibility = 1.8
file {
withProperties { properties ->
properties.setProperty('org.eclipse.jdt.core.compiler.problem.forbiddenReference', 'ignore')
}
}
}
}
application {
mainClass = 'com.neuronrobotics.bowlerstudio.BowlerStudio'
}
if (project == rootProject) {
shadowJar {
dependsOn 'spotlessApply'
zip64 true
manifest {
attributes 'Main-Class': 'com.neuronrobotics.bowlerstudio.BowlerStudio'
}
if (project == rootProject) {
archiveBaseName.set('BowlerStudio')
archiveClassifier.set('')
archiveVersion.set('')
} else {
archiveBaseName.set('BowlerStudio')
archiveClassifier.set('')
archiveVersion.set('')
}
mergeServiceFiles()
}
}
================================================
FILE: debian/.gitignore
================================================
/changelog.bak
/.changelog.swp
================================================
FILE: debian/README.Debian
================================================
bowlerstudio for Debian
----------------------
-- Kevin Harrington Sun, 26 Jun 2016 11:43:09 -0400
================================================
FILE: debian/README.source
================================================
bowlerstudio for Debian
----------------------
-- Kevin Harrington Sun, 26 Jun 2016 11:43:09 -0400
================================================
FILE: debian/bowlerstudio-docs.docs
================================================
README.source
README.Debian
================================================
FILE: debian/bowlerstudio.doc-base.EX
================================================
Document: bowlerstudio
Title: Debian bowlerstudio Manual
Author:
Abstract: This manual describes what bowlerstudio is
and how it can be used to
manage online manuals on Debian systems.
Section: unknown
Format: debiandoc-sgml
Files: /usr/share/doc/bowlerstudio/bowlerstudio.sgml.gz
Format: postscript
Files: /usr/share/doc/bowlerstudio/bowlerstudio.ps.gz
Format: text
Files: /usr/share/doc/bowlerstudio/bowlerstudio.text.gz
Format: HTML
Index: /usr/share/doc/bowlerstudio/html/index.html
Files: /usr/share/doc/bowlerstudio/html/*.html
================================================
FILE: debian/changelog
================================================
bowlerstudio (1.24.0) bionic; urgency=medium
* adding svg loading
* adding a buton to launch advanced editors
* removed prints
* add info for items
* bugfix
* adding API for fail over install
* approprate construstor order
* adding tooltips for the buttons
* Adding the launcher class for Eclipse/groovy
* fix junk import
* modularized
* deal with gists better
* adding auto-run from external editor
* 0.16.0
* jcsg
* update addFile wizard to create repos instead of gists
* changing fork from gist fork to git repo forking
* Adding windows inkscape file
* adding windows
* allow eclipse on windows
* Tested working on windows!
* check for ignore contents existing
* adding windows support
* #225 Check for null string before checking the stack
* 1.17.1
* bugfix
* ficing the delimiters for windows in the subclass
* Use more than one option for inkscape
* 1.17.4
* eclipse loading stuff again
* jcsg
* jcsg
* SVG loading
* bugfix in the color loading
* Disable the advanced editor button if the editor is open
* adding a search for inkscape exe
* adding arduino to the advanced editors
* launch using the finle name
* find the workspace
* dealing wiht the escaped slashes on windows
* 1.18.1
* dramatic jog widget performance boost
* change controller wrapper api
* new game controller framework
* controller with multiple sources
* 1.20.0
* new jog configuration
* Adding the game contoller mapping wizard
* Calibrate game controllers as a plugin tab
* add tooltips for plugin buttons
* Moving javaFX depenancies to the kernel
* kernel
* close the running script and restart in a thread on file change
* 1.21.0
* addin a mobile base jogging
* 1.22.0
* #227 #228 #229
* revbump jetty to 9.4.36.v20210114
* close #206
* add clearer printing while installing and opening eclipse
* check to see if the workspace exists before checking the lock file
* eclipse opening
* adding print statements to entering kernel mode
* disconnect listeners
* kernels
* fixing bounding issue
* 1.23.2
* 1.23.3 Fixing the loading of default creatures by pulling first
* Adding a pull step to the XML commit
* prevent infinet loops
* app.version=1.24.0
-- Kevin Harrington Sun, 21 Feb 2021 10:38:43 -0500
bowlerstudio (1.14.0) bionic; urgency=medium
* fix l;aunching bug
* remove the junk progress viewer
* kernel version change
* adding SVGLoad API
-- Kevin Harrington Wed, 30 Dec 2020 15:32:07 -0500
bowlerstudio (1.13.3) bionic; urgency=medium
* adding 1.13.3
-- Kevin Harrington Sat, 26 Dec 2020 18:03:43 -0500
bowlerstudio (1.13.1) bionic; urgency=medium
[ Octogonapus ]
* Create gradle-wrapper-validation.yml
[ Kevin Harrington ]
* Delete .DS_Store
* Delete .DS_Store
* Delete .DS_Store
* Close #169
* 1.5.4 start
* close #170
* close 159
* 1.5.5
* close #163
* close #179
* Better logging for #175
* Close #177
* to 1.5.7
* close #178
* to 1.5.8
* more robust to networless startup
* Loading application stable with no network
* update to gradle 6.2
* Delete readme.html
* unused imports
* 1.5.10
* serial update
* close #160
* only call login once
* JCSG
* kernel
* kernel
* kernel
* kernel
* updated issue reporting
* kernel
* 1.5.13
* clear all watched files on exit
* Also for #190
* 1.5.14
* #194 Catch the exception pull throws and remove the junk URL
* 1.5.15
* adding dependant API to solve #195
* adding the engineering units
* To begin with for #195 link limits to zero
* added to support #195
* Adding jog buttons and limit-zero linking for #195
* kernel
* attempting to add the gauge display #195
* Adding a test widget to test the link configurations
* Implementing the bounds on the dial gauge.
* fix java-bowler javadoc
* Moving tester app into test sources
* #195 Adding the ability to set limits in engineering units
* Adding calibration widget
* changing what link to look at
* focus on the limb root, not the links, keeps the camera orentation clean
* formatting
* adding interface to focus on affine
* creating the focus on affine function
* 1.6.1
* updating the Jog Widget
* 1.6.2
* Update LICENSE
* java bowler
* kernel
* kernel
* bugfix
* kernel
* adding a link gauge controller class
* setting the gauge at the link
* hanging of the gauge widget from the 3d display
* alligned the link gauge center
* Allign the link gauge limits with the devices limits
* kernel
* testing the gauge display
* Close #184 and only report once when the same exception is thrown.
* tuning the gauge display
* 1.6.4
* Close #196
* 1.6.4
* Adding an instantanious storage and retrival value
* Split the Mobile base jog off from the limb jog widgets
* Change the display format to remove the sliders that make no sense for positions.
* 1.6.6
* 1.6.7
* kernel
* ensure the target is not changed unless changed explicatly.
* 1.7.0
* move the target as adjusting the link configuration to see if
* 1.7.1
* no sliders for DH parameters
* Move the slider underneith the rest of the Engineering Units widget
* no slider for the zero value
* Focus the D-H widget on the link before the link being adjusted
* bound the jogging to the limits set in the slider
* Add events to jogging the angles
* dont zero out the rotation in the jog widget
* nrjavaserial
* kernel
* formatting
* sort the fields
* link slider less jumpy
* 1.7.2
* fixed the editing of an event
* sort the list of possible vitamins
* bugfix in DH widget
* spacing out the dh widgets
* correct name of A value
* Switching to webflow
* WebFlow enabled for BowlerStudio
* do not go into unknown state when refresh is hit after login
* switching to the defined scopes
* 1.8.1
* take key from the command line
* close #198
* close #175 again
* 1.8.2
* check for exceptions in the UI thread
* Catch and print the users exception rather than reporting it
* kernel
* only provide as opotions the link types from the userdefined area
* kernel
* pass the owner down through the menuies
* kernel
* support multible bases at the root level for comprehention
* select the correct base at root
* kernel events
* 1.9.0
* move this function into the transform set for the limb
* update the limb locations on set of the root transform
* adjusting the job speed
* close #200
* COmpressing camera control into single class
* move affin into contructor
* cleanup
* camera startup orentation
* Camera startup returned to original framing
* startup camera must be in UI thread
* 1.9.3
* kernel
* 1.9.4
* this fixes the default orentation
* removing junk api
* code generation section
* kernel
* kernel
* adding version number
* 1.9.6
* adding paralell robots to the menufactory
* adding parallel widget
* mod the paralell widget
* make the parallel widget work
* updated teh parallel widget
* kernel
* version
* catch exception caused by paralell groups
* renaming
* adding and removing working
* kernel
* close #212
* kernel
* 1.10.5
* dropping synchronized
* cleaning out cruft and switching PID ticks to float from integer
* compile
* DH settings more intuitive in the UI
* 1.11.0
* adding perms for deleting repos
* 1.12.0
* updating commons-io
* kernel
* remove DyIO classes
* Full installer release to add --force-gpu to linux installer
* 1.13.1
-- Kevin Harrington Tue, 08 Dec 2020 15:47:24 -0500
bowlerstudio (1.5.3) bionic; urgency=medium
* password manager
* updating kernel
-- Kevin Harrington Fri, 20 Mar 2020 12:43:22 -0400
bowlerstudio (1.5.2) bionic; urgency=medium
* 1.5.2
-- Kevin Harrington Thu, 19 Mar 2020 15:24:46 -0400
bowlerstudio (1.5.1) bionic; urgency=medium
* kernel
* 1.5.1
-- Kevin Harrington Thu, 19 Mar 2020 14:53:57 -0400
bowlerstudio (1.5.0) bionic; urgency=medium
* chasing down memory leak and found this
* fixing the memory leak
-- Kevin Harrington Wed, 11 Mar 2020 18:19:17 -0400
bowlerstudio (1.4.7) bionic; urgency=medium
* check the owner updated to not fail
* 1.4.6
* assets spoolup procedure
* clearing physics on exit
* startup with no assets working
* address the memory leak
* addressed memory leak
-- Kevin Harrington Fri, 06 Mar 2020 15:42:36 -0500
bowlerstudio (1.4.5) bionic; urgency=medium
* 1.4.5
* kernel
* check the device for null and print error is none is loaded
* close #166
-- Kevin Harrington Thu, 27 Feb 2020 15:03:36 -0500
bowlerstudio (1.4.4) bionic; urgency=medium
* 1.4.3
* close #149
* Refresh the menu for #148
* close #148
* Close #153
* 1.4.4
* kernel
-- Kevin Harrington Mon, 10 Feb 2020 07:49:11 -0500
bowlerstudio (1.4.2) bionic; urgency=medium
* kernel to close #144
* adding the SVG loader
* adding a parser for SVG
* 1.4.2
* kernel
-- Kevin Harrington Tue, 04 Feb 2020 21:46:34 -0500
bowlerstudio (1.4.1) bionic; urgency=medium
* remove junk exception handler
* close #142 Only highlight when the controller is open
* close #139
* 1.4.1
-- Kevin Harrington Mon, 03 Feb 2020 18:48:44 -0500
bowlerstudio (1.4.0) bionic; urgency=medium
* Stagger the opening of tabs to avoid collision
* Cleaned up the connection manager
* 1.4.0
-- Kevin Harrington Sat, 01 Feb 2020 16:56:21 -0500
bowlerstudio (1.3.2) bionic; urgency=medium
* removing junk
* #120 shoudle reso;ve bey reading the branch
* close #124
* 1.3.2
* close #127
* Close #129
* Add new repo in copy creature immediatly to the workspace
* correct crash on load when downgrading
* paralell loading the menu of GitHub
* #135 Check for null tabs
* #134 Catch the index out of bounds exception
* catch and reset teh values
* load devices on launch
* pull befor rinning both dep injectors
* kernel
* getting rid of loading scripts makes the copy process cleaner
-- Kevin Harrington Fri, 31 Jan 2020 21:00:51 -0500
bowlerstudio (1.3.1) bionic; urgency=medium
* Adding Kotlin
* tested kotlin tab working
* 1.3.0
* Close #126 By loading repos as list.
* kernel
* kernel
* removing stale depenancy
* adding 64 bit zipping
* adding 64 bit zipping
-- Kevin Harrington Sat, 18 Jan 2020 18:15:39 -0500
bowlerstudio (1.2.4) bionic; urgency=medium
* kernel
* build
* vitamins
* string insertion method no longer nibbles bytes off the end
* startup sequence with no files and no login tested working
* kernel
* close #113 By catching this stack trace and ignoring it
* version
* ensure that all new vitamins have teh required fields
* ensure starter data doesnt look right
* kernel
-- Kevin Harrington Tue, 14 Jan 2020 10:45:20 -0500
bowlerstudio (1.2.2) bionic; urgency=medium
* Resolve #100
* updating library
* This should address #104
* 1.2.0
* Close #106 and Close #105
* Catch and swallow printing exceptions Close #110
* Ensure #110 is handled properly in the future
* kernel
-- Kevin Harrington Wed, 08 Jan 2020 16:35:22 -0500
bowlerstudio (1.1.0) bionic; urgency=medium
* renamed the label on the git file add
* version bump
* Added a vitamins menu
* adding uncaught exception handlers
* Adding a new Vitamin wizard
* Adding the vitamin creation callbacks
* basic workflow added
* Basic editing of data
* Adding functioning New Vitamins wizard
* ensure that motors have all required fields
* Vitamins menu for editing works
* New vitamin wizard is working
* Close #98
* better issue reporting
* cleaned up codegen section
* sanatized configurations
* kernel
-- Kevin Harrington Mon, 06 Jan 2020 17:45:52 -0500
bowlerstudio (1.0.11) bionic; urgency=medium
* Only load menu items when the mouse enters the repository
* only one thread allowing for the loading of configuration data.
* kernel
* Bugfixes to address additional issues raised
* loading assets the proper git way
-- Kevin Harrington Sat, 04 Jan 2020 16:14:59 -0500
bowlerstudio (1.0.9) bionic; urgency=medium
* 1.0.9
* #180 This was a side effect of the branching system beginning to work.
* more issue reporting
* adding exception reporting
* kernel
-- Kevin Harrington Sat, 04 Jan 2020 13:29:21 -0500
bowlerstudio (1.0.8) bionic; urgency=medium
* close #76
* updated kernel
* menue update
* kernel and faster menue loading
* adding branches and commit listing
* Branch setting works
* removing unused imports
* reset commits when a commit event is detected
* Adding branch select and commit select
* removed suspicious slash
* safer kernel url parsing
* kerne
* 1.0.8
* formatting
* adding more complete messages to creation of branches
* Menu driven commits and branches
-- Kevin Harrington Fri, 03 Jan 2020 14:15:24 -0500
bowlerstudio (1.0.7) bionic; urgency=medium
* loading the name of the device from the link
* cleaner launching scripts
* adding the updating code for the launcher
* kernel
* catch uncaught exception
* Repaired the copy a creature feature
* kernel
-- Kevin Harrington Mon, 30 Dec 2019 01:46:02 -0500
bowlerstudio (1.0.6) bionic; urgency=medium
* Update README.md
* Create FUNDING.yml
* Update FUNDING.yml
* Update README.md
* Create COC.md
* Update FUNDING.yml
* Update FUNDING.yml
* Update FUNDING.yml
* Update FUNDING.yml
* Update FUNDING.yml
* Update FUNDING.yml
* Update FUNDING.yml
* Update README.md
* Update README.md
* more robust error handeling
* high level error handeling
* Update README.md
* Update README.md
* kernel
* Update README.md
* Update README.md
* Create a new creature with sub directories and loader script
* error handling
* adding issue reporting
* spelling
* deep copy of creatures tested working
* 1.0.6
-- Kevin Harrington Sun, 29 Dec 2019 15:52:58 -0500
bowlerstudio (1.0.5) bionic; urgency=medium
* removing offending clones and ensure only one pull thread at a time
* add the tutorial git to the configurationDatabase
* 1.0.5
-- Kevin Harrington Sun, 29 Dec 2019 00:53:30 -0500
bowlerstudio (1.0.4) bionic; urgency=medium
* add exception reporting to close #50
* Adding code for #50
* Storing the tutorial brancha nd base url in the configurations database
* 1.0.4
* kernel
-- Kevin Harrington Sat, 28 Dec 2019 23:41:27 -0500
bowlerstudio (1.0.3) bionic; urgency=medium
* kernel
* Commented code for computing the total number of verticies
* stable save of configurations
* remove redundant pulls
* Device manager to the left of terminal, not tabbed with it
* cleaner disconnectiong of devices and closing of stale configuration window
* removed the dhlab plugin form the mobile base
* Remove the MobileBase UI and cad from BowlerStudio on disconnect
-- Kevin Harrington Fri, 27 Dec 2019 16:42:08 -0500
bowlerstudio (1.0.2) bionic; urgency=medium
* javadoc fix
* test fixed
* select all items made by a line of code rather than just the one
* 1.0.2
-- Kevin Harrington Sun, 22 Dec 2019 15:29:23 -0500
bowlerstudio (1.0.1) bionic; urgency=medium
* thread safing the clear of highlights
* THread safing the selection code
* thread-safing the Device manager
* #68
* restructure to make the location of the 3d windo more sane
* exception caught, but no resolution
* removing the event listener
* attempt to remove the scene
* just catch the exception for now
* exit on error
* refactoring to chase down #68
* kernel
* nrToAffine should be in a UI thread
* change the jog widget to use the set all joints method #68
* set the affine from the UI thread
* move the affine set into the platform runlater #68
* Updating kernel for #68
* Close #68
* code cleanup in jog widget
* version 1.0.0 released!
* 1.0.1
-- Kevin Harrington Sun, 22 Dec 2019 13:07:17 -0500
bowlerstudio (0.36.1) bionic; urgency=medium
* print statements
* removing print statements
* adding a public removeObjects to the static calls
* adding public API for selecting a CSG
* revbump
* #68 This may resolve the issue, but extensive testing is needed
-- Kevin Harrington Sat, 21 Dec 2019 13:26:53 -0500
bowlerstudio (0.36.0) bionic; urgency=medium
* adding git@ uri support
* updating jgit
* rev bump kernel
* udpating jgit
* removing the clone conflict loop
-- Kevin Harrington Thu, 19 Dec 2019 14:10:11 -0500
bowlerstudio (0.35.1) bionic; urgency=medium
* kernel updated
* version bump
-- Kevin Harrington Wed, 18 Dec 2019 18:40:32 -0500
bowlerstudio (0.35.0) bionic; urgency=medium
* kernel
* kernel
* kernel
* new version
* #67 Default to virtual if no other link type exist.
* close #66
* compileing
* moving the make a copy button
* added the mass adjust widget
* loading the ass of the robots body
* close #64
* adding a transform widget for the IMU centroid
* revbump
-- Kevin Harrington Wed, 18 Dec 2019 17:24:31 -0500
bowlerstudio (0.34.1) bionic; urgency=medium
* password manager
* kernel
* 0.34.1
* Fixed the logout cleanup
-- Kevin Harrington Thu, 28 Nov 2019 13:09:01 -0500
bowlerstudio (0.34.0) bionic; urgency=medium
* kernel
* kernel
* kernel
* adding 2 factor authentication
* updated the version number
* close #6
* tagged the kernel update
-- Kevin Harrington Wed, 27 Nov 2019 17:44:44 -0500
bowlerstudio (0.33.3) bionic; urgency=medium
* cleaned catching errors
* 0.33.2
* switching to new github api
-- Kevin Harrington Thu, 15 Aug 2019 16:20:25 -0400
bowlerstudio (0.33.1) bionic; urgency=medium
* pull password manager from library
* kernel runtime bug
* adding exception handeling to button clicks
* all limbs homed to zero degrees directly
-- Kevin Harrington Tue, 06 Aug 2019 20:52:54 -0400
bowlerstudio (0.33.0) bionic; urgency=medium
[ Kevin Harrington ]
* changing default physics compute time
[ Technocopia PC 01 ]
* jcsg
[ Kevin Harrington ]
* Switching over to password manager in kernel
* new password manager
* updated password loading
* move the delete function to the kernel wher it belongs
* 0.33.0
* print on login
-- Kevin Harrington Sun, 28 Jul 2019 16:50:30 -0400
bowlerstudio (0.32.7) bionic; urgency=medium
* kernel
* merge
* clear the text string
* Robust loading when uplink is unavailible
-- Kevin Harrington Mon, 22 Jul 2019 20:45:29 -0400
bowlerstudio (0.32.6) bionic; urgency=medium
* do not add degenerate files to the configurations
* when encountering an erronious file, remove from configs in the future and keep going.
* 0.32.6
* kernel
-- Kevin Harrington Sat, 06 Jul 2019 11:15:48 -0400
bowlerstudio (0.32.5) bionic; urgency=medium
* kernel
* auto-pull latest tutorials
-- Kevin Harrington Fri, 05 Jul 2019 12:57:42 -0400
bowlerstudio (0.32.4) bionic; urgency=medium
[ Kevin Harrington ]
* cleanup
* fixing the scrilling freez issue
[ hephaestus ]
* resolved the most recent macos issue
-- Kevin Harrington Fri, 28 Jun 2019 03:27:34 -0400
bowlerstudio (0.32.3) bionic; urgency=medium
* version
* only refesh on mouse entry
* 0.32.3
-- Kevin Harrington Mon, 24 Jun 2019 09:36:08 -0400
bowlerstudio (0.32.1) bionic; urgency=medium
* more robust focus grabbing on mouse entered
-- Kevin Harrington Mon, 24 Jun 2019 09:02:32 -0400
bowlerstudio (0.32.0) bionic; urgency=medium
* Fixed docking of window to a very small size
-- Kevin Harrington Mon, 24 Jun 2019 07:33:08 -0400
bowlerstudio (0.31.9) bionic; urgency=medium
[ Technocopia PC 01 ]
* when a file is added or the git us pulled, refresh menu
* kernel update
[ Kevin Harrington ]
* better javafx initializer
* javafx initializer
* removing javafx launching via depricated means
* kernel
-- Kevin Harrington Sat, 22 Jun 2019 20:47:44 -0400
bowlerstudio (0.31.8) bionic; urgency=medium
* loading the new tab into workspace
* thread wrap loading the tab into the workspace
* restructure the menu loading
* restructured the workspace manager
* 0.31.8
* allow for non-blocking menu loading
* load menue with known message
* kernel
* if the rank changes, save
* stable rank order, and refresh of UI only when the rank changes
-- Kevin Harrington Fri, 21 Jun 2019 18:05:31 -0400
bowlerstudio (0.31.7) bionic; urgency=medium
* when no message is given, use the file name
* 0.31.7
* login event for configurations
* re-load the configurations database on login
* larger max workspace
-- Kevin Harrington Fri, 21 Jun 2019 12:25:07 -0400
bowlerstudio (0.31.6) bionic; urgency=medium
* Closes #57 Adding files to empty repos
* adding basic adding feature
* adding calls to the workspace manager
* adding workspace manager
* calls to workspace manager
* null check
* adding file open windows to the workspace menu
* set up the files after pull
* change it to pull
* add repo to workspace button
* bugfix
-- Kevin Harrington Thu, 20 Jun 2019 18:31:49 -0400
bowlerstudio (0.31.4) bionic; urgency=medium
* catch the exception in the lambda
* Fix the flicker
* delay the print to ensure that the window loads after the web tab loads
* 0.31.4
-- Kevin Harrington Thu, 20 Jun 2019 00:47:16 -0400
bowlerstudio (0.31.3) bionic; urgency=medium
* Loading an image as the tray icon for the splash
* 0.31.3
-- Kevin Harrington Wed, 19 Jun 2019 18:09:17 -0400
bowlerstudio (0.31.2) bionic; urgency=medium
* kernel
* more robust refeshing of tab panel
* build 0.31.2
-- Kevin Harrington Wed, 19 Jun 2019 15:58:56 -0400
bowlerstudio (0.31.1) bionic; urgency=medium
* working marytts jar
* ignore
* kernel
-- Kevin Harrington Tue, 18 Jun 2019 12:17:28 -0400
bowlerstudio (0.31.0) bionic; urgency=medium
* minimized flicker
* cleanup
* editable
* minimal needed for refresh
* cleanup
* changing the speach kernel
* ignore
* text to spech update
* 0.31.0
-- Kevin Harrington Tue, 18 Jun 2019 10:53:09 -0400
bowlerstudio (0.30.5) bionic; urgency=medium
* #63
* #63 adding individual invokelaters and a retry loop with timing gating
* close #63
* 0.30.5
* Removing the flashing for #63
-- Kevin Harrington Mon, 17 Jun 2019 13:15:37 -0400
bowlerstudio (0.30.4) bionic; urgency=medium
* UI loading in kernel
* updated travis
* setting the modular frame on loading
* 0.30.4
-- Kevin Harrington Sun, 16 Jun 2019 14:41:45 -0400
bowlerstudio (0.30.3) bionic; urgency=medium
* freetts
* defaulting the CAD manager to config mode
* 0.30.3
-- Kevin Harrington Mon, 10 Jun 2019 16:01:36 -0400
bowlerstudio (0.30.2) bionic; urgency=medium
* adding obj export now that obj string bug is fixed
* 0.30.2
-- Kevin Harrington Sun, 02 Jun 2019 12:24:54 -0400
bowlerstudio (0.30.1) xenial; urgency=medium
[ hephaestus ]
* xenial
[ Kevin Harrington ]
-- Kevin Harrington Fri, 31 May 2019 08:52:58 -0400
bowlerstudio (0.30.0) xenial; urgency=medium
* Added parabola
-- Kevin Harrington Fri, 31 May 2019 08:01:51 -0400
bowlerstudio (0.29.8) xenial; urgency=medium
[ hephaestus ]
* xenial
[ Kevin Harrington ]
-- Kevin Harrington Thu, 30 May 2019 16:31:16 -0400
bowlerstudio (0.29.7) xenial; urgency=medium
* kernel updates
* 0.29.7
-- Kevin Harrington Thu, 30 May 2019 09:35:12 -0400
bowlerstudio (0.29.6) xenial; urgency=medium
* null checks on the interface frame
* wait for splash to be ready before returning
* serialVersionUID
* 0.29.6
-- Kevin Harrington Mon, 20 May 2019 19:50:35 -0400
bowlerstudio (0.29.5) xenial; urgency=medium
* kernel
* 0.29.5 start
* updating the hardware setting menues
* formatting
* Prevent fault on null passed here
* formatting
* regenerate on link configuration changes
* sanatize text input
* Remember the open file and open another from the same directory
* bound the link setting
* inter-connecting the bounding to ensure a slider never shows invalid data
* kernel
-- Kevin Harrington Sun, 19 May 2019 21:39:00 -0400
bowlerstudio (0.29.4) xenial; urgency=medium
* moving splash screen to a manager class
* 0.29.4-dev
* Adding a psudo-splash screen using Jframe
* set font after loading tab to prevent NPE
* java-bowler update
* Re-display slash on closing to indicate saving state
* Adding toggle buttons for config mode
* adding a cad configuration mode
* Stable loading of tabs
* Better defaults for jog widget
* tab loading failure reporting
* Set the font with a delay and a fail-over loop in the tab
* if spash availible, use the better one
* use the same splash for all
-- Kevin Harrington Sat, 18 May 2019 02:43:48 -0400
bowlerstudio (0.29.3) xenial; urgency=medium
[ Kevin Harrington ]
* Update README.md
* 0.29.3
* jcsg
[ McKinney ]
* Adding the kinematics-chef
* Adding the kinematics-chef
* Adding the kinematics-chef
[ Kevin Harrington ]
* from compile to implementation
* updating gradle
* travis update
* removing kinematics chef source
* kinematics chef submodule
* adding the maven switch-over
* maven version of kinematicsChef working
* removing kinematics chef untill the circular kernel dep is resolved.
* added back KC after modifying the depencies
* removing kc again
* adjusting dh widget
* remove kinematics
* Fixing the "double enter" bug
* Correcting the error of file tabs loading and interfearing with each other at boot time
* no silent fails
* formatting
* return logical bounds
* Update .gitmodules
* Update README.md
* Update README.md
* removing submodule
* updating submodules
-- Kevin Harrington Wed, 15 May 2019 17:29:28 -0400
bowlerstudio (0.29.2) xenial; urgency=medium
* 0.35.2
* 0.29.2
-- Kevin Harrington Sun, 06 Jan 2019 16:07:15 -0500
bowlerstudio (0.29.0) xenial; urgency=medium
* =Updating gradle
* updated kernel
* removing OpenCV
* moving dockfx off server
* Updaing build
* Updaing build
* gradle version
* tests working
* remove test
* comments
* reove javadoc violations
* Update README.md
* merging
* removed opencv components
* fixing travis
* javadoc fix
* fixed travis
* removing the opencv from the build tree
* updating JCSG
* 0.29.0
-- Kevin Harrington Sun, 06 Jan 2019 14:17:56 -0500
bowlerstudio (0.28.1) xenial; urgency=medium
* 0.28.1
-- Kevin Harrington Wed, 18 Jul 2018 17:14:47 -0400
bowlerstudio (0.28.0) xenial; urgency=medium
* jcsg
* 0.28.0
-- Kevin Harrington Wed, 18 Jul 2018 15:25:23 -0400
bowlerstudio (0.27.6) xenial; urgency=medium
* Change from exception to throwable dispalys and highlights
* easier clearing of the highlights
* Avoud competition with the click to highlight
* kernel
-- Kevin Harrington Sat, 07 Jul 2018 19:02:21 -0400
bowlerstudio (0.27.5) xenial; urgency=medium
* Better loading of exceptions and SVG manipulations
-- Kevin Harrington Sat, 07 Jul 2018 11:52:27 -0400
bowlerstudio (0.27.4) xenial; urgency=medium
* bugfix
* 0.27.4
-- Kevin Harrington Thu, 05 Jul 2018 18:17:00 -0400
bowlerstudio (0.27.3) xenial; urgency=medium
* Adding the version number to the splash screen
* error out on 32bit systems
* Arror message on 32 bit mode JVM in UI
* Gracefull loading of unknown links
-- Kevin Harrington Thu, 05 Jul 2018 16:51:30 -0400
bowlerstudio (0.27.2) xenial; urgency=medium
* rev bump
* Massivly faster slicer
* kernel
-- Kevin Harrington Thu, 05 Jul 2018 13:59:57 -0400
bowlerstudio (0.27.1) xenial; urgency=medium
* kernel
-- Kevin Harrington Fri, 29 Jun 2018 10:15:26 -0400
bowlerstudio (0.27.0) xenial; urgency=medium
* kernel
* kernel
* usinf the javacad sources
* 0.27.0
-- Kevin Harrington Thu, 28 Jun 2018 15:08:24 -0400
bowlerstudio (0.26.2) xenial; urgency=medium
* updating java-bowler
* java -bowler
* java-bowler
* Java-bowler to submodule
* Java-bowler to submodule
* Adding java-bowler submodule
* addign the java-bowler build to the final build
* Rmoving submodule
* Rmoving submodule
* Compiling with 2 submodules
* build with submodule
* Adding the auto-wrapping of objects that act like devices with a connect and disconnect method
* java-bowler
* java-bowler
* move filter to java-bowler
* formatting and use DMDevice
* device loading more efficient for scripts
* working with the fix for mobile base updates
* builds as jar
* fixed the drifting window issue
* kernel
* kernel
-- Kevin Harrington Mon, 25 Jun 2018 10:02:48 -0400
bowlerstudio (0.26.1) xenial; urgency=medium
[ hephaestus ]
* xenial
[ Kevin Harrington ]
-- Kevin Harrington Sun, 03 Jun 2018 16:44:12 -0400
bowlerstudio (0.26.0) xenial; urgency=medium
* 0.26.0
-- Kevin Harrington Sun, 03 Jun 2018 16:25:06 -0400
bowlerstudio (0.25.9) xenial; urgency=medium
* 0.25.8
* Build archive working
-- Kevin Harrington Sat, 02 Jun 2018 22:41:43 -0400
bowlerstudio (0.25.7) xenial; urgency=medium
* Filter devices for existance in the device manager already
* use the built in UI with filter
* bugfix
* kernel
-- Kevin Harrington Mon, 28 May 2018 21:25:23 -0400
bowlerstudio (0.25.6) xenial; urgency=medium
* slower jogging
-- Kevin Harrington Sun, 27 May 2018 19:49:40 -0400
bowlerstudio (0.25.5) xenial; urgency=medium
* kernel
* 0.25.5
* process percentage realistic
* kernel
-- Kevin Harrington Fri, 25 May 2018 22:50:28 -0400
bowlerstudio (0.25.4) xenial; urgency=medium
[ hephaestus ]
* xenial
[ Kevin Harrington ]
-- Kevin Harrington Tue, 22 May 2018 20:10:39 -0400
bowlerstudio (0.25.3) xenial; urgency=medium
* kernel
* 0.25.2
* kernel
* 0.25.3
-- Kevin Harrington Thu, 17 May 2018 14:12:09 -0400
bowlerstudio (0.25.1) xenial; urgency=medium
* moving lower bound to 0
* kernel update
* fixing the cold-start issue for the image assets
* kernel
* getter vor camera view
* User draw modes for wireframe
* removed stale code
* stale imports
* moving MobileBaseCadManager and FIle Watcher into kernel
* updating kernel to use abstracted interface
* Moving script loading of movbile bases into kernel
* implementing updated API
* library update
* 0.31.0 kernel
* ordering for clarity
* updating kernel
* kernel
* updated library
* movign git file copy to kernel
* loading messages more accurate
* use javacad intermediate jar in kernel
* updating JavaCad
* catch exceptions of hotfixes
-- Kevin Harrington Tue, 09 Jan 2018 23:57:10 -0500
bowlerstudio (0.25.0) xenial; urgency=medium
* updaing kernel to one that builds in travis
* Updaing gradle permissions
* adding the opencv depenancies
* same travis as working kernel
* update travis
* try xenial verison
* command line flags for quiet
* adding connecting line to the polygon display
* updating the SVGFactory to call the built in slicer
* Filter out the csgDatabase.json file from the gist run
* adding JCSG with new slicer
* adding a cad EXPORT path
* javacad update
* updating the loading of objects to manufacturing files
* updating JCSG
* adding the hotfix script
* updating the syntax highlighting
* never edit the csgDatabse.json
-- Kevin Harrington Wed, 29 Nov 2017 18:56:53 -0500
bowlerstudio (0.24.0) xenial; urgency=medium
* Updating a database value if found in the root of a repository.
* FIxing the file watcher file state upate.
* updating JavaCad
* using CSG names to make STL files
-- Kevin Harrington Tue, 14 Nov 2017 21:59:50 -0500
bowlerstudio (0.23.1) xenial; urgency=medium
* Fixing the bounding and rotation problem in the Transform widget when close to Euler singularities.
* 0.23.1
* Engineering units sliders should be more sane about the ticks
* adding the place limb widget to the menu
* Making the Transform widget more readable
* exception handeling on file selection
* only auto-highlight when the check box is checked
-- Kevin Harrington Wed, 18 Oct 2017 14:55:40 -0400
bowlerstudio (0.23.0) xenial; urgency=medium
* convert lines to cylindar
* make thicknesses match the line equivalent
* smaller stroke
* dump all the STL;s into a single directory as single parts
* stagger teh loading to avoid collisions
* deal with the inititail case
* Much improved progress monitor for cad generation
* 0.22.1
* Adding a menu item to generate Kinematic STL's
* adding the link number into the file name
* Adding the link to CSG mapper as a function making teh export of named files easier.
* Update ISSUE_TEMPLATE.md
* Update ISSUE_TEMPLATE.md
* Tutorial loading of GIT should happen outside of the internal thread to ensure loaded git before moving on
* more testing of vitamins
* updating to 0.23.0
* Loading file from gist in web was broken
* Ensure new links have a type
* Loading link of non-zero radius
* type and type string need to beset, this should be handled by the library
* when the hardware limits are reset, the slider for the link should be reset
* Text field should auto size to the file and Git url
* compute the box size using the font
* carrot moves to the start of a file
-- Kevin Harrington Sun, 01 Oct 2017 15:05:02 -0400
bowlerstudio (0.21.3) xenial; urgency=medium
[ Kevin Harrington ]
* adding fonts menues
* setting the font size is working
* cleaner creature lab menues
* adding menu option to hide objects in assemblies
[ Student ]
* Cleaning the loading path in MacOS
* cleaner fault state launches
* setting the stylesheet after the platform is shown
* try catch around user agent
* slower camera spin
* updateing dockfx to 12
* moving the Application stylesheet loading
* fiddeling with the loading of the user agent sheets
[ Kevin Harrington ]
* converting axis to lines not boxes
* 3d line generation
* 3d line interface
* more complete removal of stale objects
* include polygon to the removel datatypes
* adding smoother lines and sharper end terminaion
* adding the polygon to wireframe conversion to add the manipulator
* inset the axis
-- Kevin Harrington Mon, 17 Jul 2017 11:46:13 -0400
bowlerstudio (0.21.2) xenial; urgency=medium
[ Kevin Harrington ]
* 0.21.2 update
* updating kernel
[ Octogonapus ]
* Removed AssetFactory from local src and importing the version from the kernel instead
[ Kevin Harrington ]
* updating java-bowler
* using the studio build info from the kernel
* load a mobile base form git
* Cleanly catching the caso of generated class
-- Kevin Harrington Tue, 11 Jul 2017 09:49:54 -0400
bowlerstudio (0.21.1) xenial; urgency=medium
* updating the default creature URL
* updating kernel
* updating kernel
* removing excessive prints
* stagerring code loading
* removing the CSG pringing
* pulling repos rather thatn loading a file
* moving the physics engine into the kernel
* adding the print and println function to bowlerstudio static api
* Adding the permutations of the call
* changing to standard thread
* updating kernel
* updating kernel version
-- Kevin Harrington Wed, 10 May 2017 08:59:01 -0400
bowlerstudio (0.21.0) xenial; urgency=medium
* adding additional libraries to the imports
* removing synchronization in any UI accessed threads
* updating javacad
-- Kevin Harrington Thu, 04 May 2017 09:52:30 -0400
bowlerstudio (0.20.9) xenial; urgency=medium
* removing junk annotation
* updating the kernel to use branches
* removing hard coded "master"
* making the tutorial access master rather than the default "source"
* updaing kernel
* updating kernel
* Updating JCSG
* 0.20.9
-- Kevin Harrington Fri, 28 Apr 2017 00:25:03 -0400
bowlerstudio (0.20.8) xenial; urgency=medium
[ Kevin Harrington ]
* switching the internal loader of ht emenue to the offical repo
[ Kevin Harrington ]
* ignoring eclipse project files
* surpressing restricted api warnings
[ Kevin Harrington ]
* Adding the git submodule instrunctions
* null manufacturing call should just not add the part, not fail
* when an object is sent to manufacturing, show the new one
* setting the controllers carefully
* updating the verion to 0.20.8
[ harrington ]
* fixing the build on windows
* load JNI on windows from correct location
[ Kevin Harrington ]
* fixing jni
* windows build should be working now
* #21 Move from overlays to tab
* #21 removing the overlays entirely
* moving controls into a new tab #21
* Anchoring the treeview to the archor panel #21
* anchor the tree
-- Kevin Harrington Sun, 26 Mar 2017 21:26:08 -0400
bowlerstudio (0.20.7) xenial; urgency=medium
* 14.04 instructions update
* Update README.md
* updating the tutorials URL at boot time
* updating bowler kernel
* new version
* updating kernel
* updating the URL's
* removing the exception printing
* update javacad
* 0.20.7
-- Kevin Harrington Mon, 06 Mar 2017 11:50:52 -0500
bowlerstudio (0.20.6) xenial; urgency=medium
* 14.04 instructions update
* Update README.md
* updating the tutorials URL at boot time
* updating bowler kernel
* new version
* updating kernel
* updating the URL's
* removing the exception printing
* update javacad
-- Kevin Harrington Mon, 06 Mar 2017 11:13:57 -0500
bowlerstudio (0.20.5) xenial; urgency=medium
* adding loading progress info
* splash loading working
* more loading info
* public splash rendering
* leaving only the print stream in the static declaration
* Text should only be appended when there is text to append.
-- Kevin Harrington Fri, 10 Feb 2017 22:58:23 -0500
bowlerstudio (0.20.4) xenial; urgency=medium
* Wider margin for cancle double click
* buffered output stream for log with tail clipping
* reduce the memory footprint of the camera spin.
* higher efficency camera
* making the camera use static objects wherever possible
* Load the ASSETS FORM THE CORRECT REPOSITORY
* force the mainline version in when the version updates
* save changes when they are made to the configurations
* changing asset print
* deeper read-back buffer
* moving the garbage collect to the start side
* Auto spin should not be enabled by default
* attempting to run the swingnode bounds
* more robust rerendering
* moving kernel to submodule
* compile the submodule version of kernel
* Adding imports
* adding the vehicle update
* return on any error
* using wheel position as opposed to its delta
* adding dependancies
* fixed the import of kernel jars
* removing old splash
* adding new splash
* cleaning up image assets
* upating javacad
* updating javacad
-- Kevin Harrington Mon, 23 Jan 2017 20:33:04 -0500
bowlerstudio (0.20.3) xenial; urgency=medium
* Reverse the interpolation for smoother transition
* removing the cancel from all clicks
* fixing the cancle detection
* adding an acceleration to the camera spin
* the sin scaling should be across Pi/2
* Sinusoidal scaling is now working
* slower spin interpolation
* Basif fin and replace widgit loading on ctrl f signel
* close #17 Find Replace Widget
-- Kevin Harrington Mon, 02 Jan 2017 00:13:49 -0500
bowlerstudio (0.20.2) xenial; urgency=medium
[ Kevin Harrington ]
* 0.21.1
* removing junk files
* Changing the use of the file watcher
* Moving change watcher inot local code to ensure thread management works with the javafx conventions
* Update to single thread per file watchers
* After much hunting i think the magic Yo is gone
* Request focus is needed even with new RSyntax
* remove the debug hook
* Close #2
* Adding blocks to elevation to conform to the bounding standards set by the rotation object.
* updateing the transform object to Apache-commons-math3
* The camera rotation cna not be a singularity!
* catch any exception and clear gits
* Updating the kernel to use more strict java-bowle rotation bounding.
* Adding a vehicle wrapper to the control class
* adding a wheel wrapper
* Fixing the link widjet so it displays current value
* adding a weel module to the physics engine
* putting the physics components back intot he update wrapping function
* Adding the looping mechanism
* move wheel updates into mobile base physics for user control
* use the wheel transform to compute the location of the new wheel.
* only add and remove ridgid bodys if they are not parts of vehicles.
* adding the rotation test for the conversion to bullet and affine
[ Octogonapus ]
* Added way to change asset repo #9
[ Kevin Harrington ]
* CSG rotation to CSG was broken and now works
* Attempting to update the camera, WIP
* 0.20.2
* Adding a mechanism to clear out the assets based on the current version check
* updated the script access to the camera adjustments
* load the URL from the database for assets before loading asset files
* default value
* Verified that the asset change repo is working
* Updating Java-Bowler
* Use ZYX order for the tests
* making the degenerate angle of all 0 is displayed as all 0
* Camera rotation for the new rontation schema has been fully integrated
* updated the kernel with robust angle error checking
* Switched the rotation button action
* Fixing the transform orentation hack
* Adding focus interpolation
* smoother camer transitions
* Smooth camera transition between manipulated scgs and regular csgs.
* simpler no-transform loading
* remove the interpolator
* by moving the motions into the removal, the transitions are a bit smoother.
* smooth transition for selection from a file
* Assing the starting camera rotation back in
* The x and y rotations needed inversion to be constistant with the rest of the rotations.
* Updating kernel to include rotation with qutaurning values swapped
* removing work around
* Auto spin the camera when the mouse input goes idle for 10 seconds. A user check box disables this
-- Kevin Harrington Sat, 31 Dec 2016 11:27:26 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 23:19:44 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 23:15:58 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 23:14:05 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 23:07:07 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 22:35:28 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 22:28:22 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 22:26:12 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 21:59:08 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 21:55:03 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 21:42:42 -0500
bowlerstudio (0.20.0) xenial; urgency=medium
[ Kevin Harrington ]
* 0.19.6
[ Kevin Harrington ]
* catch error s and exceptions
* cleanup
* clean warnings
* The zoom level and enable/disable grid
* Adding the axis to the hide feature
* Adding the ability for scripts to display to 3d window
* Loading of image nodes ttested working
* when an image is loaded the creature lab should display
* Faster turn over for loading creaturelav
* if any other exceptiuon besides the expected one comes up, print right away
* Adding the ability to clear the screen
* Making the zoom scale by distance to avoid jumpy navigation
* remove print
* Exiting the application after clearing cache
* Using the open flag to prevent multiple openings
* Reversing the motion directions
* Adding the bezier extrude
* Fixing the JavaCad depancy tree.
-- Kevin Harrington Tue, 29 Nov 2016 21:41:07 -0500
bowlerstudio (0.19.5) xenial; urgency=medium
* 0.19.4
* checking for valid tutorial URL as commonwealth not NR
* retry opening tab
* removing the focus request and relying on the one below
* When setting a database value the internal caches should be cleared, ofrcing a reloading of the database files.
* Adding try catch in flush widget to prevent thread lock
* Adding an event path for refreshing the menus on adding a file.
* adding the refreshing of the menues when a file is created or from a menu option
* do not use iterators with a threaded opening
* adding an err printout of all console prints
* Adding the configuration to BowlerConnection allowing it to use the classloader when loading from FXML
* close #1
-- Kevin Harrington Tue, 11 Oct 2016 15:10:01 -0400
bowlerstudio (0.19.4) xenial; urgency=medium
* 0.19.4
* checking for valid tutorial URL as commonwealth not NR
* retry opening tab
* removing the focus request and relying on the one below
* When setting a database value the internal caches should be cleared, ofrcing a reloading of the database files.
* Adding try catch in flush widget to prevent thread lock
* Adding an event path for refreshing the menus on adding a file.
* adding the refreshing of the menues when a file is created or from a menu option
-- Kevin Harrington Wed, 05 Oct 2016 19:17:37 -0400
bowlerstudio (0.19.3) xenial; urgency=medium
[ Kevin Harrington ]
* Updating the readme links
* Changing the documention cache root to the new website server
[ Kevin Harrington ]
* Update README.md
[ Kevin Harrington ]
* updating JCSG, GRAPES
* adding a parameter listener for all objects
* 0.19.3
-- Kevin Harrington Sat, 17 Sep 2016 10:54:36 -0400
bowlerstudio (0.19.2) xenial; urgency=medium
* Adding Apache XML RPC Client for accessing Odoo servers
* Adding Odoo command and control
* Adjusting to the new type interface
* Repairing the Physics centered displays
* Adding OpenCL and nativelibs4j
* removing opencl for size
* moving vitamins out of kernel
* Assing a Firmata Link provider
* Adding a connection option to the menue for firmata
* Adding support for Firmata
* Adding rotory and prismatic options
* moving firmata linak adding into the link class as a static
* Opening of creature lab should more stable
* Should make opening creature lab more stable
* updateing to kernel 0.23.0
-- Kevin Harrington Fri, 02 Sep 2016 14:41:46 -0400
bowlerstudio (0.19.1) xenial; urgency=medium
[ Sainath Batthala ]
* Documented openUrlInNewTab, speak functions in BowlerStudio.java
[ Kevin Harrington ]
* Update README.md
* Update README.md
[ Kevin Harrington ]
* More stable casting of the list
* adding better arduino support
* Moving Physics engine into BowlerStudio
* Moving the simplified cad out of the system and telling the physics engine to compute the hull directly on all the points.
* 0.19.0
* using the for loop variable, duh
* WOring full robot physics
* updating the link slider with the links current value
* should move link if NOT passive
* preserving the links color
* tweaking the physics engine params
* The cad list should not be changed by the physics, a copy should be made
* defaulting physics engine to fast mode
* param tweaking for physics engine
* seems to cause wild flailing now
* Reverting physics configuration
* Physics for walking is working but the driving explodes
* load mass from robots configuration
* loading objects to current object
* load string list parameters as combo box
* catch all UI exceptions
* use the Abstract class iinterface for non specific types
* loading and updating the non number parameters
* Each regenerate shpould get its own exception catch
* The value needs to be updated BEFORE the listener is called
* Forcing the CSGCached version update here
* Kernel now suports the string list parametrics for CSG's and the vitamins library for accessing lots of standrd hardware
* 0.19.1
-- Kevin Harrington Sat, 13 Aug 2016 12:14:50 -0400
bowlerstudio (0.18.10) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 19:25:46 -0400
bowlerstudio (0.18.10) xenial; urgency=medium
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 19:24:53 -0400
bowlerstudio (0.18.9.1) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 19:18:28 -0400
bowlerstudio (0.18.9) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 19:11:24 -0400
bowlerstudio (0.18.9) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 18:45:43 -0400
bowlerstudio (0.18.9) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 18:44:01 -0400
bowlerstudio (0.18.9) xenial; urgency=medium
* adding files to regular git
* adding a file extention to the new file menue
* Selecting links that hit limits
* catching drive exceptions and displaying ghtem
* when limit hit the limiting link should highlightitself now
* both local and perminant storage is consulted for loading
* make loading and unloading of the data from json a standard type
* fixed the double adding of transforms
* DyIO interface working with curie
* updating to lates kernel
-- Kevin Harrington Mon, 25 Jul 2016 17:56:29 -0400
bowlerstudio (0.18.8-1ubuntu2) xenial; urgency=medium
* adding the printout when a connection fails
* retry on serial port to force v4
* conecting the device not the connection to startup
* making the regenerate function synchronized
-- Kevin Harrington Fri, 15 Jul 2016 17:31:38 -0400
bowlerstudio (0.18.8-1ubuntu1) xenial; urgency=medium
[ Kevin Harrington ]
* Adding java-bowler 2.21.0
* adding the physics engine static methods back in
* switching to actual login sucess checking form login file existance
* fixing the window displays so the login updates it
* updating to the gradle version of the kernel
* use git repos when displaying files to allow for the browsing of regular github repos
* 0.18.7
* configurations on no network mode not working
* Loading the widgets even when the network is out
[ Kevin Harrington ]
[ Kevin Harrington ]
[ Kevin Harrington ]
[ Kevin Harrington ]
-- Kevin Harrington Wed, 29 Jun 2016 09:39:56 -0400
bowlerstudio (0.18.6-1ubuntu1~33.gbp533ad1ubuntu1) xenial; urgency=medium
* changing the initial release to xenial
* Adding java-bowler 2.21.0
* adding the physics engine static methods back in
* switching to actual login sucess checking form login file existance
* fixing the window displays so the login updates it
* updating to the gradle version of the kernel
* use git repos when displaying files to allow for the browsing of regular github repos
* 0.18.7
* configurations on no network mode not working
* Loading the widgets even when the network is out
-- Kevin Harrington Tue, 28 Jun 2016 10:25:47 -0400
bowlerstudio (0.18.6-1ubuntu1~33.gbp533ad1) xenial; urgency=medium
** SNAPSHOT build @533ad1e3ef178e8643a4227dd33eb510575dd4ba **
[ Kevin Harrington ]
** SNAPSHOT build @533ad1e3ef178e8643a4227dd33eb510575dd4ba **
* changing release to xenial
-- Kevin Harrington Sun, 26 Jun 2016 23:34:47 -0400
bowlerstudio (0.18.6-1ubuntu1~26.gbp19eead) 0.18.6; urgency=medium
** SNAPSHOT build @19eead97c9ad3b27a90798f63afcafa2d869eec7 **
[ Kevin Harrington ]
* xenial
[ Kevin Harrington ]
* updating the changlog
* changelog
* adding debian build files to build debs from gradle
[ Kevin Harrington ]
* ignores
[ Kevin Harrington ]
-- Kevin Harrington Sun, 26 Jun 2016 22:35:38 -0400
bowlerstudio (0.18.6-1) xenial; urgency=medium
* Initial release
-- Kevin Harrington Sat, 25 Jun 2016 15:23:12 -0400
================================================
FILE: debian/compat
================================================
7
================================================
FILE: debian/control
================================================
Source: bowlerstudio
Package: bowlerstudio
Priority: extra
Maintainer: Customer Support
Architecture: all
Version: 0.18.6
Depends: oracle-java8-set-default,libopencv2.4-java,libopencv2.4-jni,slic3r,jarwrapper,arduino
Provides: bowlerstudio
Conflicts: modemmanager,nr-rdk-java
Replaces: modemmanager,nr-rdk-java
Description: Robotics Development Engironment and runtime.
A scripting platform for writing, designing, simulating
and manufacturing robots.
================================================
FILE: debian/copyright
================================================
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: bowlerstudio
Source:
Files: *
Copyright:
License:
.
# If you want to use GPL v2 or later for the /debian/* files use
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
Copyright: 2016 Kevin Harrington
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid picking licenses with terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.
================================================
FILE: debian/install
================================================
usr/share/bowlerstudio/BowlerStudio.jar /usr/share/bowlerstudio/
usr/share/bowlerstudio/NeuronRobotics.ico /usr/share/bowlerstudio/
usr/share/bowlerstudio/NeuronRobotics.png /usr/share/bowlerstudio/
usr/share/bowlerstudio/dyio-3.14.6.xml /usr/share/bowlerstudio/
usr/bin/bowlerstudio /usr/bin/
usr/share/bowlerstudio/NeuronRobotics.png /usr/share/themes/base/neuronrobotics/icons/
usr/share/bowlerstudio/BowlerStudio.desktop /usr/share/applications/
usr/share/bowlerstudio/81-neuronrobotics.rules /etc/udev/rules.d/
usr/share/doc/bowlerstudio/copyright /usr/share/doc/bowlerstudio/
usr/share/doc/bowlerstudio/changelog.gz /usr/share/doc/bowlerstudio/
================================================
FILE: debian/outfile
================================================
3.0 (quilt)
================================================
FILE: debian/rules
================================================
JAVA_HOME=/usr/lib/jvm/default-java
%:
dh $@ --with javahelper
override_dh_auto_build:
dh_auto_build -- dist
override_dh_install:
dh_auto_build -- package-debian
dh_install
override_jh_exec:
exit 0
================================================
FILE: genDeps.sh
================================================
#!/bin/bash
#./gradlew showAll>alllibs.txt
sort alllibs.txt |grep .jar|uniq >DEPENDENCIES_shallow.md
echo "" > DEPENDENCIES.md
echo "" > DEPENDENCIES_unknown.md
for VARIABLE in $(cat DEPENDENCIES_shallow.md)
do
LOCATION=$(locate -l 1 $VARIABLE)
FILE=$(unzip -l $LOCATION | grep LICENSE|grep -v "LICENSE.")
stringarray=($FILE)
LOCENSELOC=$(echo ${stringarray[3]})
if [ -z "$LOCENSELOC" ]
then
FILE=$(unzip -l $LOCATION | grep LICENSE|grep ".txt"|grep -v "documentation")
stringarray=($FILE)
LOCENSELOC=$(echo ${stringarray[3]})
fi
if [ -z "$LOCENSELOC" ]
then
FILE=$(unzip -l $LOCATION | grep license|grep ".txt"|grep -v "documentation")
stringarray=($FILE)
LOCENSELOC=$(echo ${stringarray[3]})
fi
if [ -z "$LOCENSELOC" ]
then
FILE=$(unzip -l $LOCATION | grep LICENSE.md)
stringarray=($FILE)
LOCENSELOC=$(echo ${stringarray[3]})
fi
if [ -z "$LOCENSELOC" ]
then
FILE=$(unzip -l $LOCATION | grep license.html)
stringarray=($FILE)
LOCENSELOC=$(echo ${stringarray[3]})
fi
if [ -z "$LOCENSELOC" ]
then
echo "$VARIABLE No license file"
TYPE="No License "
echo "$VARIABLE">> DEPENDENCIES_unknown.md
else
echo "Licance file to be used: $VARIABLE $LOCENSELOC"
#echo "Searching $VARIABLE for $LOCENSELOC"
LICENSE=$(unzip -p $LOCATION $LOCENSELOC)
TYPE=$LICENSE
if [ -z "$TYPE" ]
then
echo "$VARIABLE No license file"
TYPE="No License $LOCATION"
else
shopt -s nocasematch;
if [[ "$LICENSE" =~ "apache" ]]; then
TYPE="Apache"
#echo "Apache license found"
elif [[ "$LICENSE" =~ "MIT License" ]]; then
TYPE="MIT License"
elif [[ "$LICENSE" =~ "BSD" ]]; then
TYPE="BSD"
elif [[ "$LICENSE" =~ "W3C" ]]; then
TYPE="W3C"
elif [[ "$LICENSE" =~ "CDDL" ]]; then
TYPE="CDDL"
else
echo " $LOCATION Unknown $LICENSE"
TYPE="Unknown"
#exit 1
fi
fi
echo "$VARIABLE , $TYPE">> DEPENDENCIES.md
fi
done
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradle.properties
================================================
rg.gradle.jvmargs=-Dprism.forceGPU=true
================================================
FILE: gradlew
================================================
#!/bin/sh
#
# Copyright 2015-2021 the original authors.
#
# 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
#
# https://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.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions $var, ${var}, ${var:-default}, ${var+SET},
# ${var#prefix}, ${var%suffix}, and $( cmd );
# * compound commands having a testable exit status, especially case;
# * various built-in commands including command, set, and ulimit.
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: jvm.json
================================================
{
"Linux-x64":{
"url":"https://cdn.azul.com/zulu/bin/",
"type":"tar.gz",
"name":"zulu25.32.21-ca-fx-jre25.0.2-linux_x64",
"jvmargs":[
"-Dprism.dirtyopts=false",
"-Dprism.forceGPU=true",
"-XX:MaxRAMPercentage=95",
"--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED",
"--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED",
"--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED"
]
},
"Linux-aarch64":{
"url":"https://cdn.azul.com/zulu/bin/",
"type":"tar.gz",
"name":"zulu25.32.21-ca-fx-jre25.0.2-linux_aarch64",
"jvmargs":[
"-Dprism.dirtyopts=false",
"-Dprism.order=es2",
"-Dprism.verbose=true",
"-Dprism.forceGPU=true",
"-XX:MaxRAMPercentage=95",
"--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED",
"--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED",
"--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED"
]
},
"Windows-x64":{
"url":"https://cdn.azul.com/zulu/bin/",
"type":"zip",
"name":"zulu25.32.21-ca-fx-jre25.0.2-win_x64",
"jvmargs":[
"-Dprism.dirtyopts=false",
"-XX:MaxRAMPercentage=95",
"--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED",
"--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED",
"--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED"
]
},
"Mac-x64":{
"url":"https://cdn.azul.com/zulu/bin/",
"type":"zip",
"name":"zulu25.32.21-ca-fx-jre25.0.2-macosx_x64",
"jvmargs":[
"-Dprism.dirtyopts=false",
"-Dprism.forceGPU=true",
"-XX:MaxRAMPercentage=95",
"--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED",
"--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED",
"--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED"
]
},
"Mac-aarch64":{
"url":"https://cdn.azul.com/zulu/bin/",
"type":"zip",
"name":"zulu25.32.21-ca-fx-jre25.0.2-macosx_aarch64",
"jvmargs":[
"-Dprism.dirtyopts=false",
"-Dprism.forceGPU=true",
"-XX:MaxRAMPercentage=95",
"--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED",
"--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED",
"--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED",
"--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED"
]
}
}
================================================
FILE: libraries/.gitignore
================================================
/.project
/.settings/
/.classpath
================================================
FILE: log/.gitignore
================================================
/server.log
================================================
FILE: makeJar.sh
================================================
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
export ARCH=x86_64
JVM=zulu25.32.21-ca-fx-jdk25.0.2-linux_x64
set -e
ZIP=$JVM.tar.gz
export JAVA_HOME=$HOME/bin/java21/
if test -d $JAVA_HOME/$JVM/; then
echo "$JAVA_HOME exists."
else
rm -rf $JAVA_HOME
mkdir -p $JAVA_HOME
wget https://cdn.azul.com/zulu/bin/$ZIP
tar -xvzf $ZIP -C $JAVA_HOME
mv $JAVA_HOME/$JVM/* $JAVA_HOME/
fi
echo "Java home set to $JAVA_HOME"
./gradlew spotlessCheck shadowJar
================================================
FILE: runMac.sh
================================================
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
export ARCH=x86_64
JVM=zulu25.32.21-ca-fx-jdk25.0.2-macosx_x64
set -e
ZIP=$JVM.tar.gz
export JAVA_HOME=$HOME/bin/java21/
if test -d $JAVA_HOME/$JVM/; then
echo "$JAVA_HOME exists."
else
rm -rf $JAVA_HOME
mkdir -p $JAVA_HOME
curl -L https://cdn.azul.com/zulu/bin/$ZIP -o $ZIP
tar -xvzf $ZIP -C $JAVA_HOME
mv $JAVA_HOME/$JVM/* $JAVA_HOME/
fi
echo "Java home set to $JAVA_HOME"
./gradlew --stop
#rm -rf ~/.gradle/caches/
#rm -rf ~/.gradle/daemon/
./gradlew clean build --refresh-dependencies
./gradlew shadowJar
$JAVA_HOME/bin/java \
-Dprism.forceGPU=true \
-XX:MaxRAMPercentage=95 \
--add-exports javafx.graphics/com.sun.javafx.css=ALL-UNNAMED \
--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED \
--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED \
--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED \
--add-exports javafx.controls/com.sun.javafx.scene.control.skin.resources=ALL-UNNAMED \
--add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
--add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED \
--add-opens javafx.graphics/javafx.scene=ALL-UNNAMED \
-jar build/libs/BowlerStudio.jar
================================================
FILE: searchLicense.sh
================================================
#!/bin/bash
for VARIABLE in $(cat DEPENDENCIES_unknown.md)
do
LOCATION=$(locate -l 1 $VARIABLE)
echo $VARIABLE
unzip -l $LOCATION | grep -i "license"
done
================================================
FILE: settings.gradle
================================================
include ':libraries:bowler-script-kernel'
include ':libraries:bowler-script-kernel:java-bowler'
include ':libraries:bowler-script-kernel:JCSG'
include ':libraries:bowler-script-kernel:GithubPasswordManager:GithubPasswordManager'
rootProject.name = 'BowlerStudio'
================================================
FILE: src/main/java/com/neuronrobotics/bowlerstudio/AddFileToGistController.java
================================================
package com.neuronrobotics.bowlerstudio;
import com.neuronrobotics.bowlerstudio.assets.AssetFactory;
import com.neuronrobotics.bowlerstudio.assets.FontSizeManager;
import com.neuronrobotics.bowlerstudio.scripting.ArduinoLoader;
import com.neuronrobotics.bowlerstudio.scripting.IScriptingLanguage;
import com.neuronrobotics.bowlerstudio.scripting.ScriptingEngine;
import eu.mihosoft.vrl.v3d.JavaFXInitializer;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.io.File;
import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.List;
import java.util.regex.Pattern;
import org.kohsuke.github.GHRepository;
/**
* Created by Ryan Benasutti on 2/6/2016.
*/
@SuppressWarnings("restriction")
public class AddFileToGistController extends Application {
@FXML
public TextField filenameField;
@FXML
public TextField repoName;
@FXML
private ComboBox projects;
@FXML
public Button addFileButton, cancelButton;
@FXML
private ComboBox extension;
@FXML // fx:id="langaugeIcon"
private ImageView langaugeIcon; // Value injected by FXMLLoader
private String extensionStr = ".groovy";
private String gitRepo;
@FXML
private TextArea description;
@FXML
private AnchorPane newProject;
@FXML
private AnchorPane addFile;
private MenuRefreshEvent refreshevent;
private boolean isArduino;
private static final Pattern NONLATIN = Pattern.compile("[^\\w-]");
private static final Pattern WHITESPACE = Pattern.compile("[\\s]");
private String forcedType = null;
public static String toSlug(String input) {
String nowhitespace = WHITESPACE.matcher(input).replaceAll("-");
String normalized = Normalizer.normalize(nowhitespace, Form.NFD);
String slug = NONLATIN.matcher(normalized).replaceAll("");
return slug.replaceAll("[^a-zA-Z0-9]", "");
}
// private GHGist gistID;
public AddFileToGistController(String gitRepo, MenuRefreshEvent event) {
this.setGitRepo(gitRepo);
// this.gistID = id;
this.refreshevent = event;
}
@SuppressWarnings("restriction")
@Override
public void start(Stage primaryStage) throws Exception {
isArduino = false;
FXMLLoader loader = AssetFactory.loadLayout("layout/addFileToGist.fxml", true);
Parent root;
loader.setController(this);
// This is needed when loading on MAC
loader.setClassLoader(getClass().getClassLoader());
root = loader.load();
FontSizeManager.addListener(fontNum -> {
int tmp = fontNum - 10;
if (tmp < 12)
tmp = 12;
root.setStyle("-fx-font-size: " + tmp + "pt");
});
extension.getItems().clear();
if (getGitRepo() != null) {
newProject.getChildren().clear();
} else {
addFile.setDisable(true);
}
List langs = ScriptingEngine.getAllLangauges();
ObservableList options = FXCollections.observableArrayList(langs);
//
for (String s : options) {
extension.getItems().add(s);
}
extension.getSelectionModel().select("Groovy");
Image icon;
String asset = "Script-Tab-" + extension.getSelectionModel().getSelectedItem() + ".png";
try {
icon = AssetFactory.loadAsset(asset);
langaugeIcon.setImage(icon);
FontSizeManager.addListener(fontNum -> {
langaugeIcon.setScaleX(FontSizeManager.getImageScale());
langaugeIcon.setScaleY(FontSizeManager.getImageScale());
});
} catch (Exception e2) {
// Auto-generated catch block
e2.printStackTrace();
}
extension.setOnAction(event -> {
try {
String selectedItem = extension.getSelectionModel().getSelectedItem();
setSelected(selectedItem);
} catch (Exception e1) {
// Auto-generated catch block
e1.printStackTrace();
}
});
BowlerStudio.runLater(() -> {
primaryStage.setTitle("Add File to Git Repo " + getGitRepo());
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.initModality(Modality.WINDOW_MODAL);
primaryStage.setResizable(true);
primaryStage.show();
});
}
private void setSelected(String selectedItem) throws Exception {
String file = "Script-Tab-" + selectedItem + ".png";
Image loadAsset = AssetFactory.loadAsset(file);
try {
langaugeIcon.setImage(loadAsset);
} catch (Throwable t) {
com.neuronrobotics.sdk.common.Log.error(t);
}
String key = selectedItem;
IScriptingLanguage l = ScriptingEngine.getLangaugesMap().get(key);
if (l != null) {
extensionStr = l.getFileExtension().get(0);
} else
extensionStr = ".groovy";
if (!extensionStr.startsWith(".")) {
extensionStr = "." + extensionStr;
}
isArduino = ArduinoLoader.class.isInstance(l);
setGitRepo(gitRepo);
}
@FXML
public void onAddFile(ActionEvent event) {
new Thread(() -> {
BowlerStudio.runLater(() -> {
Stage stage = (Stage) addFileButton.getScene().getWindow();
stage.close();
});
String filename = filenameField.getText();
if (!filename.endsWith(extensionStr)) {
filename = filename + extensionStr;
}
String fileSlug = filename.replace(extensionStr, "");
String message = description.getText();
if (message == null || message.length() == 0) {
message = filename;
}
if (getGitRepo() == null) {
setGitRepo(GistHelper.createNewGist(filename, message, true));
}
com.neuronrobotics.sdk.common.Log.error("Adding new file" + filename + " to " + getGitRepo());
try {
ScriptingEngine.pull(getGitRepo());
// String defaultContents =
String fullBranch = ScriptingEngine.getFullBranch(getGitRepo());
if (fullBranch == null)
fullBranch = ScriptingEngine.newBranch(getGitRepo(), "main");
ScriptingEngine.getLangaugeByExtension(extensionStr).getDefaultContents(getGitRepo(), filename);
ScriptingEngine.pushCodeToGit(getGitRepo(), fullBranch, filename, null, message);
File nf = ScriptingEngine.fileFromGit(getGitRepo(), filename);
try {
BowlerStudio.createFileTab(nf);
} catch (Exception ex) {
ex.printStackTrace();
}
refreshevent.setToLoggedIn();
} catch (Exception e) {
new IssueReportingExceptionHandler().except(e);
}
}).start();
}
@FXML
public void onCancel(ActionEvent event) {
BowlerStudio.runLater(() -> {
Stage stage = (Stage) cancelButton.getScene().getWindow();
stage.close();
});
}
public static void main(String[] args) {
JavaFXInitializer.go();
BowlerStudio.runLater(() -> {
Stage s = new Stage();
new Thread(() -> {
String url = "https://github.com/madhephaestus/TestRepo.git";
// url = null;
AddFileToGistController controller = new AddFileToGistController(url, new MenuRefreshEvent() {
@Override
public void setToLoggedIn() {
// Auto-generated method stub
}
});
try {
controller.start(s);
// setToLoggedIn("");
} catch (Exception e) {
com.neuronrobotics.sdk.common.Log.error(e);
}
}).start();
});
}
@FXML
void createProject(ActionEvent event) {
BowlerStudio.runLater(() -> {
newProject.setDisable(true);
});
new Thread(() -> {
try {
String text = description.getText();
if (text == null || text.length() < 5) {
text = "Project " + repoName.getText();
}
String txt = repoName.getText();
String slugVer = toSlug(txt);
if (!txt.contentEquals(slugVer)) {
BowlerStudio.runLater(() -> {
repoName.setText(slugVer);
Alert alert = new Alert(javafx.scene.control.Alert.AlertType.INFORMATION);
alert.setContentText("Repository Name must Valid: " + slugVer);
Node root = alert.getDialogPane();
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.setOnCloseRequest(ev -> alert.hide());
FontSizeManager.addListener(fontNum -> {
int tmp = fontNum - 10;
if (tmp < 12)
tmp = 12;
root.setStyle("-fx-font-size: " + tmp + "pt");
alert.getDialogPane().applyCss();
alert.getDialogPane().layout();
stage.sizeToScene();
});
alert.showAndWait();
BowlerStudio.runLater(() -> {
newProject.setDisable(false);
});
});
return;
}
GHRepository repository = ScriptingEngine.makeNewRepo(toSlug(repoName.getText()), text);
setGitRepo(repository.getHttpTransportUrl());
BowlerStudio.runLater(() -> {
addFile.setDisable(false);
});
} catch (Throwable e) {
// Auto-generated catch block
com.neuronrobotics.sdk.common.Log.error(e);
}
}).start();
}
public String getGitRepo() {
return gitRepo;
}
public void setGitRepo(String gitRepo) {
this.gitRepo = gitRepo;
if (gitRepo != null) {
String dirName = ScriptingEngine.getRepositoryCloneDirectory(gitRepo).getName();
if (filenameField != null)
BowlerStudio.runLater(() -> {
filenameField.setDisable(isArduino);
filenameField.setText(dirName);
});
}
}
public void setFileExtensionType(IScriptingLanguage lang) {
String string = lang.getShellType();
try {
setSelected(string);
BowlerStudio.runLater(() -> {
extension.setValue(string);
extension.setDisable(true);
});
} catch (Exception e) {
// Auto-generated catch block
com.neuronrobotics.sdk.common.Log.error(e);
}
}
public void start(Stage s, IScriptingLanguage iScriptingLanguage) throws Exception {
start(s);
BowlerStudio.runLater(() -> {
setFileExtensionType(iScriptingLanguage);
});
}
}
================================================
FILE: src/main/java/com/neuronrobotics/bowlerstudio/BowlerStudio.java
================================================
package com.neuronrobotics.bowlerstudio;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
//import com.neuronrobotics.kinematicschef.InverseKinematicsEngine;
import com.neuronrobotics.bowlerkernel.BowlerKernelBuildInfo;
import com.neuronrobotics.bowlerkernel.Bezier3d.IInteractiveUIElementProvider;
import com.neuronrobotics.bowlerkernel.Bezier3d.Manipulation;
import com.neuronrobotics.bowlerstudio.assets.AssetFactory;
import com.neuronrobotics.bowlerstudio.assets.BowlerStudioResourceFactory;
import com.neuronrobotics.bowlerstudio.assets.ConfigurationDatabase;
import com.neuronrobotics.bowlerstudio.assets.FontSizeManager;
import com.neuronrobotics.bowlerstudio.assets.StudioBuildInfo;
import com.neuronrobotics.bowlerstudio.creature.MobileBaseCadManager;
import com.neuronrobotics.bowlerstudio.creature.MobileBaseLoader;
import com.neuronrobotics.bowlerstudio.scripting.DownloadManager;
import com.neuronrobotics.bowlerstudio.scripting.GitHubWebFlow;
import com.neuronrobotics.bowlerstudio.scripting.IApprovalForDownload;
import com.neuronrobotics.bowlerstudio.scripting.IDownloadManagerEvents;
import com.neuronrobotics.bowlerstudio.scripting.IURLOpen;
import com.neuronrobotics.bowlerstudio.scripting.PasswordManager;
import com.neuronrobotics.bowlerstudio.scripting.ScriptingEngine;
import com.neuronrobotics.bowlerstudio.scripting.ScriptingFileWidget;
import com.neuronrobotics.bowlerstudio.scripting.external.GroovyEclipseExternalEditor;
import com.neuronrobotics.bowlerstudio.util.FileChangeWatcher;
import com.neuronrobotics.bowlerstudio.vitamins.Vitamins;
//import com.neuronrobotics.imageprovider.OpenCVJNILoader;
import com.neuronrobotics.javacad.JavaCadBuildInfo;
import com.neuronrobotics.sdk.addons.kinematics.DHParameterKinematics;
import com.neuronrobotics.sdk.addons.kinematics.FirmataLink;
import com.neuronrobotics.sdk.addons.kinematics.LinkConfiguration;
import com.neuronrobotics.sdk.addons.kinematics.MobileBase;
import com.neuronrobotics.sdk.addons.kinematics.math.TransformNR;
import com.neuronrobotics.sdk.common.BowlerAbstractDevice;
import com.neuronrobotics.sdk.common.ByteList;
import com.neuronrobotics.sdk.common.DeviceManager;
import com.neuronrobotics.sdk.common.IDeviceAddedListener;
import com.neuronrobotics.sdk.common.Log;
import com.neuronrobotics.sdk.config.SDKBuildInfo;
import com.neuronrobotics.sdk.util.ThreadUtil;
import eu.mihosoft.vrl.v3d.CSG;
import eu.mihosoft.vrl.v3d.CSG.OptType;
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabase;
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabaseInstance;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Rectangle2D;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.transform.Affine;
import javafx.stage.Stage;
import static com.neuronrobotics.bowlerstudio.scripting.DownloadManager.delim;
import java.awt.Desktop;
import java.awt.GraphicsEnvironment;
import java.awt.SplashScreen;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.Thread.UncaughtExceptionHandler;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@SuppressWarnings("restriction")
public class BowlerStudio extends Application {
final static SplashScreen splash = null;// = SplashScreen.getSplashScreen();
private static Scene scene;
private static boolean hasnetwork;
private static _Console out;
private static TextArea logViewRefStatic = null;
private static String firstVer = "";
private static Stage primaryStage2;
private static File layoutFile;
private static boolean deleteFlag = false;
private static IssueReportingExceptionHandler reporter = new IssueReportingExceptionHandler();
// private static String lastVersion;
private static UncaughtExceptionHandler hand;
@SuppressWarnings({"unchecked", "restriction"})
public static void main(String[] args) throws Exception {
initializeBowlerStudio(args);
launch();
}
public static void go() {
try {
embeddedLaunch(new String[0]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void embeddedLaunch(String[] args) throws Exception {
initializeBowlerStudio(args);
BowlerStudio.runLater(() -> {
Stage stage = new Stage();
new BowlerStudio().start(stage);
});
}
public static void initializeBowlerStudio(String[] args) throws Exception {
String relative = ScriptingEngine.getWorkingDirectory().getAbsolutePath();
File file = new File(relative + delim() + "bowler-workspace" + delim());
file.mkdirs();
ScriptingEngine.setWorkspace(file);
File logfile = new File(file.getAbsolutePath() + delim() + "bowlerStudioLog.txt");
if (logfile.exists())
logfile.delete();
try {
logfile.createNewFile();
Log.enableDebugPrint(true);
Log.enableDebugPrint();
Log.setFile(logfile);
Log.debug("Log file set to " + logfile.getAbsolutePath());
Log.warning("BowlerStudio Version " + StudioBuildInfo.getVersion());
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
Log.flush();
}));
} catch (IOException e) {
// TODO Auto-generated catch block
Log.error(e);
}
CSG.setDefaultOptType(OptType.Manifold3d);
DownloadManager.setSTUDIO_INSTALL("BowlerStudioInstall");
if (args.length != 0) {
// Log.error("Arguments detected, starting Kernel mode.");
// SplashManager.closeSplash();
BowlerKernel.runArgumentsAfterStartup(args, System.currentTimeMillis());
return;
}
try {
makeSymLinkOfCurrentVersion();
} catch (Throwable t) {
// t.printStackTrace();
Log.error("Symlink not creaded");
}
net.java.games.input.ControllerEnvironment.getDefaultEnvironment();
Thread.currentThread().setUncaughtExceptionHandler(new IssueReportingExceptionHandler());
if (!StudioBuildInfo.isOS64bit()) {
BowlerStudio.runLater(() -> {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("32 Bit Java Detected");
alert.setHeaderText("Insuffient Ram Capibilities in 32 bit mode");
alert.setContentText("This applications uses more that 4gb of ram\nA 32 bit JVM mode detected: "
+ System.getProperty("os.arch"));
Node root = alert.getDialogPane();
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.setOnCloseRequest(ev -> alert.hide());
FontSizeManager.addListener(fontNum -> {
int tmp = fontNum - 10;
if (tmp < 12)
tmp = 12;
root.setStyle("-fx-font-size: " + tmp + "pt");
alert.getDialogPane().applyCss();
alert.getDialogPane().layout();
stage.sizeToScene();
});
alert.showAndWait();
System.exit(1);
});
}
renderSplashFrame(2, "Testing Internet");
try {
final URL url = new URI("http://github.com").toURL();
final URLConnection conn = url.openConnection();
conn.connect();
conn.getInputStream();
setHasnetwork(true);
} catch (Exception e) {
// we assuming we have no access to the server and run off of the
// cached gists.
setHasnetwork(false);
e.printStackTrace();
}
StudioBuildInfo.setBaseBuildInfoClass(BowlerStudio.class);
Manipulation.setUi(new IInteractiveUIElementProvider() {
public void runLater(Runnable r) {
BowlerStudio.runLater(r);
}
public TransformNR getCamerFrame() {
return BowlerStudio.getCamerFrame();
}
public double getCamerDepth() {
return BowlerStudio.getCamerDepth();
}
@Override
public PerspectiveCamera getCamera() {
return CreatureLab3dController.getEngine().getFlyingCamera().getCamera();
}
});
renderSplashFrame(5, "Loging In...");
// ScriptingEngine.logout();
// switching to Web Flow auth
List listOfScopes = Arrays.asList("repo", "gist", "user", "admin:org", "admin:org_hook", "workflow");
GitHubWebFlow.setOpen(new IURLOpen() {
public void open(URI toOpe) {
try {
BowlerStudio.openExternalWebpage(toOpe.toURL());
} catch (MalformedURLException e) {
// Auto-generated catch block
e.printStackTrace();
}
}
});
PasswordManager.setListOfScopes(listOfScopes);
GitHubWebFlow.setMyAPI(() -> {
String line = System.getProperty("API-ID");
if (line != null)
return line;
return "1edf79fae494c232d4d2";
});
NameGetter mykey = new NameGetter();
GitHubWebFlow.setName(mykey);
String myAssets = AssetFactory.getGitSource();
if (PasswordManager.hasNetwork()) {
Log.error("Attempt to log in with disk credentials");
ScriptingEngine.waitForLogin();
if (ScriptingEngine.isLoginSuccess()) {
// if (BowlerStudio.hasNetwork()) {
// ScriptingEngine.setAutoupdate(true);
//
// }
renderSplashFrame(15, "Load Configs");
try {
firstVer = (String) ConfigurationDatabase.getObject("BowlerStudioConfigs", "firstVersion",
StudioBuildInfo.getVersion());
} catch (Throwable t) {
Log.error("Resetting the configs repo...");
// clear the configs repo
firstVer = (String) ConfigurationDatabase.getObject("BowlerStudioConfigs", "firstVersion",
StudioBuildInfo.getVersion());
}
ConfigurationDatabase.setObject("BowlerStudioConfigs", "currentVersion", StudioBuildInfo.getVersion());
renderSplashFrame(16, "Done Load Configs");
// myAssets = (String) ConfigurationDatabase.getObject("BowlerStudioConfigs",
// "assetRepo",
// myAssets);
renderSplashFrame(20, "DL'ing Image Assets");
Log.error("Asset Repo " + myAssets);
Log.error("Asset intended ver " + StudioBuildInfo.getVersion());
ScriptingEngine.cloneRepo(myAssets, null);
try {
ScriptingEngine.pull(myAssets, "main");
Log.error("Studio version is the same");
} catch (Exception e) {
e.printStackTrace();
ScriptingEngine.deleteRepo(myAssets);
ScriptingEngine.cloneRepo(myAssets, null);
}
if (ScriptingEngine.checkOwner(myAssets)) {
if (!ScriptingEngine.tagExists(myAssets, StudioBuildInfo.getVersion())) {
Log.error("Tagging Assets at " + StudioBuildInfo.getVersion());
ScriptingEngine.tagRepo(myAssets, StudioBuildInfo.getVersion());
}
}
if (BowlerStudio.hasNetwork()) {
renderSplashFrame(25, "Populating Menu");
}
} else {
renderSplashFrame(20, "DL'ing Image Assets");
ScriptingEngine.cloneRepo(myAssets, null);
ScriptingEngine.pull(myAssets, "main");
}
}
layoutFile = AssetFactory.loadFile("layout/default.css");
if (layoutFile == null || !layoutFile.exists()) {
ScriptingEngine.deleteRepo(myAssets);
ScriptingEngine.cloneRepo(myAssets, null);
layoutFile = AssetFactory.loadFile("layout/default.css");
}
if ((Boolean) ConfigurationDatabase.get("BowlerStudioUI", "DarkMode", true)) {
layoutFile = AssetFactory.loadFile("layout/darkmode.css");
}
// SplashManager.setIcon(AssetFactory.loadAsset("BowlerStudioTrayIcon.png"));
renderSplashFrame(50, "DL'ing Tutorials...");
// load tutorials repo
Tutorial.getHomeUrl(); // Dowload and launch the Tutorial server
// force the current version in to the version number
// Download and Load all of the assets
renderSplashFrame(60, "Vitamins...");
// load the vitimins repo so the demo is always snappy
ScriptingEngine.cloneRepo("https://github.com/CommonWealthRobotics/BowlerStudioVitamins.git", null);
renderSplashFrame(80, "Example Robots");
ScriptingEngine.cloneRepo("https://github.com/CommonWealthRobotics/BowlerStudioExampleRobots.git", null);
ScriptingEngine.pull("https://github.com/CommonWealthRobotics/BowlerStudioExampleRobots.git");
renderSplashFrame(81, "CSG database");
CSGDatabase.setInstance(new CSGDatabaseInstance(
new File(ScriptingEngine.getWorkspace().getAbsoluteFile() + "/csgDatabase.json")));
// Log.error("Loading assets ");
// Log.error("Loading Main.fxml");
renderSplashFrame(82, "Set up UI");
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
// This is a workaround for #8 and is only relavent on osx
// it causes the SwingNodes not to load if not called way ahead
// of time
javafx.scene.text.Font.getFamilies();
} catch (Exception e) {
reporter.uncaughtException(Thread.currentThread(), e);
}
// add a new link provider to the link factory
FirmataLink.addLinkFactory();
// Log.enableInfoPrint();
renderSplashFrame(91, "DL'ing Devices...");
// ThreadUtil.wait(100);
try {
ensureUpdated(false, "https://github.com/CommonWealthRobotics/DHParametersCadDisplay.git",
"https://github.com/CommonWealthRobotics/HotfixBowlerStudio.git",
"https://github.com/CommonWealthRobotics/DeviceProviders.git",
"https://github.com/OperationSmallKat/Katapult.git",
"https://github.com/CommonWealthRobotics/ExternalEditorsBowlerStudio.git",
"https://github.com/CommonWealthRobotics/freecad-bowler-cli.git",
"https://github.com/CommonWealthRobotics/blender-bowler-cli.git");
ScriptingEngine.gitScriptRun(CSGDatabase.getInstance(),
"https://github.com/CommonWealthRobotics/HotfixBowlerStudio.git", "hotfix.groovy", null);
ScriptingEngine.gitScriptRun(CSGDatabase.getInstance(),
"https://github.com/CommonWealthRobotics/DeviceProviders.git", "loadAll.groovy", null);
renderSplashFrame(92, "Vitamin Scripts...");
HashSet urls = new HashSet<>();
for (String type : Vitamins.listVitaminTypes()) {
String url = Vitamins.getScriptGitURL(type);
urls.add(url);
}
new Thread(() -> {
boolean wasState = ScriptingEngine.isPrintProgress();
// ScriptingEngine.setPrintProgress(false);
for (Iterator iterator = urls.iterator(); iterator.hasNext();) {
String url = iterator.next();
ensureUpdated(false, url);
}
ScriptingEngine.setPrintProgress(wasState);
}).start();
} catch (Exception e) {
e.printStackTrace();
reporter.uncaughtException(Thread.currentThread(), e);
}
DownloadManager.setDownloadEvents(new IDownloadManagerEvents() {
@Override
public void startDownload() {
SplashManager.renderSplashFrame(0, "Downloading...");
}
@Override
public void finishDownload() {
SplashManager.closeSplash();
}
});
DownloadManager.setApproval(new IApprovalForDownload() {
private ButtonType buttonType = null;
@Override
public boolean get(String name, String url) {
buttonType = null;
BowlerKernel.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Message");
alert.setHeaderText("Would you like add the " + name + " plugin?");
Node root = alert.getDialogPane();
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.setOnCloseRequest(ev -> alert.hide());
FontSizeManager.addListener(fontNum -> {
int tmp = fontNum - 10;
if (tmp < 12)
tmp = 12;
root.setStyle("-fx-font-size: " + tmp + "pt");
alert.getDialogPane().applyCss();
alert.getDialogPane().layout();
stage.sizeToScene();
});
Optional result = alert.showAndWait();
buttonType = result.get();
alert.close();
});
while (buttonType == null) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// Auto-generated catch block
e.printStackTrace();
}
}
return buttonType.equals(ButtonType.OK);
}
@Override
public void onInstallFail(String url) {
try {
URL urlObject = new URI(url).toURL();
BowlerStudio.openExternalWebpage(urlObject);
} catch (MalformedURLException e) {
// Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void notifyOfFailure(String name) {
BowlerKernel.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Message");
alert.setHeaderText("FAILED to install " + name + " plugin");
Node root = alert.getDialogPane();
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.setOnCloseRequest(ev -> alert.hide());
FontSizeManager.addListener(fontNum -> {
int tmp = fontNum - 10;
if (tmp < 12)
tmp = 12;
root.setStyle("-fx-font-size: " + tmp + "pt");
alert.getDialogPane().applyCss();
alert.getDialogPane().layout();
stage.sizeToScene();
});
Optional result = alert.showAndWait();
buttonType = result.get();
alert.close();
});
}
});
renderSplashFrame(92, "Launching UI");
}
private static class _Console extends OutputStream {
private static final int LengthOfOutputLog = 5000;
ByteList incoming = new ByteList();
Thread update = new Thread() {
public void run() {
Thread.currentThread().setUncaughtExceptionHandler(new IssueReportingExceptionHandler());
while (true) {
ThreadUtil.wait(150);
if (incoming.size() > 0)
try {
String text = incoming.asString();
incoming.clear();
if (text != null && text.length() > 0)
appendText(text);
text = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
public _Console() {
update.start();
}
@SuppressWarnings("restriction")
public void appendText(String v) {
if (v.length() > LengthOfOutputLog) {
v = v.substring(v.length() - LengthOfOutputLog, v.length());
}
String valueOf = v;
if (getLogViewRefStatic() != null) {
String text = getLogViewRefStatic().getText();
if (text.length() > LengthOfOutputLog) {
BowlerStudio.runLater(() -> {
try {
getLogViewRefStatic().deleteText(0, text.length() - LengthOfOutputLog);
getLogViewRefStatic().appendText(valueOf);
} catch (Throwable t) {
}
});
} else {
BowlerStudio.runLater(() -> {
getLogViewRefStatic().appendText(valueOf);
});
}
}
// System.err.print(valueOf);
}
public void write(int b) throws IOException {
incoming.add(b);
}
}
public static void runLater(long delay, Runnable action) {
runLater(java.time.Duration.ofMillis(delay), action);
}
public static void runLater(java.time.Duration delay, Runnable action) {
Throwable t = new Exception("Delayed UI Thread Exception here!");
// t.printStackTrace();
new Thread() {
public void run() {
setName("UI Delay Thread ");
try {
Thread.sleep(delay.getSeconds() * 1000);
} catch (InterruptedException e) {
// Auto-generated catch block
e.printStackTrace();
}
runLater(action, t);
}
}.start();
}
public static void runLater(Runnable r) {
if (Platform.isFxApplicationThread())
try {
r.run();
} catch (Throwable t) {
t.printStackTrace();
}
else
runLater(r, new Exception("UI Thread Exception here!"));
}
public static void runLater(Runnable r, Throwable ex) {
if (Platform.isFxApplicationThread())
try {
r.run();
} catch (Throwable t) {
t.printStackTrace();
}
else
Platform.runLater(() -> {
try {
r.run();
} catch (Throwable t) {
t.printStackTrace();
ex.printStackTrace();
}
});
}
public static OutputStream getOut() {
if (out == null)
out = new _Console();
return out;
}
public static MobileBase loadMobileBaseFromGit(String id, String file) throws Exception {
return MobileBaseLoader.fromGit(CSGDatabase.getInstance(), id, file);
}
public static void select(MobileBase base) {
if (CreatureLab3dController.getEngine().isAutoHightlight()) {
MobileBaseCadManager.get(CSGDatabase.getInstance(), base).selectCsgByMobileBase(base);
}
/*
* try {
*
* ArrayList csg =
* MobileBaseCadManager.get(base).getBasetoCadMap().get(base);
* CreatureLab3dController.getEngine(). setSelectedCsg(csg.get(0));
* CreatureLab3dController.getEngine(). setSelectedCsg(csg); } catch (Exception
* ex) { Log.error("Base not loaded yet"); }
*/
}
public static void select(MobileBase base, DHParameterKinematics limb) {
if (CreatureLab3dController.getEngine().isAutoHightlight()) {
MobileBaseCadManager.get(CSGDatabase.getInstance(), base).selectCsgByLimb(base, limb);
}
/*
* try {
*
* ArrayList limCad =
* MobileBaseCadManager.get(base).getDHtoCadMap().get(limb); try {
* CreatureLab3dController.getEngine() .setSelectedCsg(limCad.get(limCad.size()
* - 1)); } catch (Exception ex) { // initialization has no csgs yet }
* CreatureLab3dController.getEngine(). setSelectedCsg(limCad); } catch
* (Exception ex) { Log.error("Limb not loaded yet"); }
*/
}
/**
* Select a provided affine that is in a given global pose
*
* @param startingLocation the starting pose
* @param rootListener what affine to attach to
*/
public static void select(TransformNR startingLocation, Affine rootListener) {
if (CreatureLab3dController.getEngine().isAutoHightlight()) {
CreatureLab3dController.getEngine().setSelected(startingLocation, rootListener);
}
}
/**
* Select a provided affine that is in a given global pose
*
* @param rootListener what affine to attach to
*/
public static void select(Affine rootListener) {
if (CreatureLab3dController.getEngine().isAutoHightlight()) {
CreatureLab3dController.getEngine().setSelected(new TransformNR(), rootListener);
}
}
public static void select(MobileBase base, LinkConfiguration limb) {
if (CreatureLab3dController.getEngine().isAutoHightlight()) {
MobileBaseCadManager.get(CSGDatabase.getInstance(), base).selectCsgByLink(base, limb);
}
/*
* try {
*
* ArrayList limCad =
* MobileBaseCadManager.get(base).getLinktoCadMap().get(limb);
* CreatureLab3dController.getEngine() .setSelectedCsg(limCad.get(limCad.size()
* - 1)); CreatureLab3dController.getEngine(). setSelectedCsg(limCad); } catch
* (Exception ex) { Log.error("Limb not loaded yet"); }
*/
}
public static void select(File script, int lineNumber) {
if (CreatureLab3dController.getEngine().isAutoHightlight())
try {
CreatureLab3dController.getEngine().setSelectedCsg(script, lineNumber);
} catch (Exception ex) {
Log.error("File not found");
}
}
/**
* @param args the command line arguments
* @throws Exception
*/
public static String getBowlerStudioBinaryVersion() throws FileNotFoundException {
String latestVersionString;
File currentVerFile = new File(System.getProperty("user.home") + delim() + "bin" + delim() + getInstallDirStub()
+ delim() + "currentversion.txt");
String s = "";
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(currentVerFile)));
String line;
try {
while (null != (line = br.readLine())) {
s += line;
}
} catch (IOException e) {
}
latestVersionString = s.trim();
return latestVersionString;
}
private static void makeSymLinkOfCurrentVersion() throws Exception {
String version = getBowlerStudioBinaryVersion();
File installDir = new File(
System.getProperty("user.home") + delim() + "bin" + delim() + getInstallDirStub() + delim());
File link = new File(installDir.getAbsolutePath() + delim() + "latest");
File latest = new File(installDir.getAbsolutePath() + delim() + version);
if (link.exists())
link.delete();
try {
Files.createSymbolicLink(link.toPath(), latest.toPath());
} catch (Throwable t) {
// t.printStackTrace();
// link = new File("\""+link.getAbsolutePath()+"\"");
Path ret = Files.createSymbolicLink(link.toPath(), Paths.get(".", version));
Log.error("Path created " + ret);
}
}
public static void ensureUpdated(boolean check, String... urls) {
BowlerKernel.ensureUpdated(check, urls);
}
// private static void removeAssets(String myAssets)
// throws InvalidRemoteException, TransportException, GitAPIException,
// IOException, Exception {
// Log.error("Clearing assets");
// ScriptingEngine.deleteRepo(myAssets);
// AssetFactory.setGitSource((String)
// ConfigurationDatabase.getObject("BowlerStudioConfigs", "skinRepo", myAssets),
// StudioBuildInfo.getVersion());
// }
public static void closeSplash() {
SplashManager.closeSplash();
}
public static void renderSplashFrame(int frame, String message) {
SplashManager.renderSplashFrame(frame, message);
}
/**
* open an external web page
*
* @param uri
*/
public static void openExternalWebpage(URL uri) {
Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(uri.toURI());
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* @author Sainath
* @version 1.0
* @param url - The URL of the tab that needs to be opened
*/
public static void openUrlInNewTab(URL url) {
BowlerStudioModularFrame.getBowlerStudioModularFrame().openUrlInNewTab(url);
}
/**
* @author Sainath
* @version 1.0
* @param msg - message that needs to be spoken
* @return an integer
*/
public static int speak(String msg) {
return BowlerKernel.speak(msg);
}
public static ScriptingFileWidget createFileTab(File file) {
return BowlerStudioModularFrame.getBowlerStudioModularFrame().createFileTab(file);
}
@SuppressWarnings("restriction")
public static Scene getScene() {
return scene;
}
@SuppressWarnings("restriction")
public static void setScene(Scene s) {
scene = s;
}
@SuppressWarnings("restriction")
public static void clearConsole() {
runLater(() -> {
if (getLogViewRefStatic() != null)
getLogViewRefStatic().setText("");
});
}
public static boolean hasNetwork() {
return hasnetwork;
}
public static void setHasnetwork(boolean hasnetwork) {
BowlerStudio.hasnetwork = hasnetwork;
}
@SuppressWarnings("restriction")
public static TextArea getLogViewRefStatic() {
return logViewRefStatic;
}
public static void setLogViewRefStatic(@SuppressWarnings("restriction") TextArea logViewRefStatic) {
BowlerStudio.logViewRefStatic = logViewRefStatic;
}
public static void setCreatureLab3d(CreatureLab3dController creatureLab3dController) {
}
@SuppressWarnings("restriction")
@Override
public void start(Stage primaryStage) {
try { // do this ...
Thread thread = Thread.currentThread();
if (thread.getContextClassLoader() == null) {
// seriously Apple??
Log.error("ContextClassLoader Is Missing! (OSX) ");
thread.setContextClassLoader(getClass().getClassLoader()); // a
// valid
// ClassLoader
// from
// somewhere
// else
}
} catch (SecurityException e) {
reporter.uncaughtException(Thread.currentThread(), e);
}
PsudoSplash.setParentWindow(primaryStage);
Log.error("Class loader: " + Thread.currentThread().getContextClassLoader());
// new Thread(() -> {
Thread.currentThread().setUncaughtExceptionHandler(new IssueReportingExceptionHandler());
try {
String stylesheet = Application.STYLESHEET_MODENA;// "MODENA" or
// "CASPIAN"
// System.setProperty("javax.userAgentStylesheetUrl",
// stylesheet);
setUserAgentStylesheet(stylesheet);
} catch (Exception | Error e) {
reporter.uncaughtException(Thread.currentThread(), e);
}
// These must be changed before anything starts
PrintStream ps = new PrintStream(getOut());
System.setErr(ps);
Log.setMirrorStream(ps);
renderSplashFrame(93, "Loading resources");
try {
BowlerStudioResourceFactory.load();
} catch (Exception e1) {
reporter.uncaughtException(Thread.currentThread(), e1);
}
primaryStage2 = primaryStage;
BowlerStudioModularFrame.setPrimaryStage(primaryStage);
// Initialize your logic here: all @FXML variables will have been
// injected
FXMLLoader mainControllerPanel;
try {
mainControllerPanel = AssetFactory.loadLayout("layout/BowlerStudioModularFrame.fxml");
renderSplashFrame(96, "Setting controller");
mainControllerPanel.setController(new BowlerStudioModularFrame());
// renderSplashFrame(96, "Class loader");
// mainControllerPanel.setClassLoader(BowlerStudioModularFrame.class.getClassLoader());
try {
renderSplashFrame(96, "Controller load");
BowlerStudio.runLater(() -> {
try {
mainControllerPanel.load();
} catch (IOException e) {
throw new RuntimeException(e);
}
});
} catch (Exception e) {
reporter.uncaughtException(Thread.currentThread(), e);
System.exit(5);
}
renderSplashFrame(96, "UI Launch...");
Parent root = mainControllerPanel.getRoot();
double sw = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode()
.getWidth();
double sh = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode()
.getHeight();
Rectangle2D primaryScreenBounds = javafx.stage.Screen.getPrimary().getVisualBounds();
double scalew = primaryScreenBounds.getWidth();
double screenZoom = sw / scalew;
if (FontSizeManager.getDefaultSize() == FontSizeManager.systemDefaultFontSize) {
double newSize = sw / 2256.0 * (2 * FontSizeManager.systemDefaultFontSize) / screenZoom;
if (newSize < FontSizeManager.systemDefaultFontSize)
newSize = FontSizeManager.systemDefaultFontSize;
FontSizeManager.setFontSize((int) Math.round(newSize));
Log.error("Screen " + sw + "x" + sh);
}
sw = primaryScreenBounds.getWidth();
sh = primaryScreenBounds.getHeight();
double w;
double h;
w = sw - 40;
h = sh - 40;
Scene scene = new Scene(root, w, h, true);
setBowlerStudioCSS(scene);
BowlerStudio.runLater(() -> {
primaryStage.setScene(scene);
Log.error("Showing main applicaiton");
primaryStage.show();
// initialize the default styles for the dock pane and
// undocked
// nodes using the
// library's internal Default.css stylesheet
// unlike other custom control libraries this allows the
// user to
// override them globally
// using the style manager just as they can with internal
// JavaFX
// controls
// this must be called after the primary stage is shown
// https://bugs.openjdk.java.net/browse/JDK-8132900
FontSizeManager.addListener(fontNum -> {
BowlerStudioController bowlerStudio = BowlerStudioController.getBowlerStudio();
bowlerStudio.setFontSize(fontNum);
double tmp = FontSizeManager.getImageScale() * 9;
root.setStyle("-fx-font-size: " + ((int) tmp) + "pt");
});
});
primaryStage.setOnCloseRequest(arg0 -> {
// ThreadUtil.wait(100);
closeBowlerStudio();
});
BowlerStudio.runLater(() -> {
setTitle(null);
try {
Image loadAsset = new Image(PsudoSplash.getResource().toString());
primaryStage.getIcons().add(loadAsset);
} catch (Exception e) {
reporter.uncaughtException(Thread.currentThread(), e);
}
});;
primaryStage.setResizable(true);
DeviceManager.addDeviceAddedListener(new IDeviceAddedListener() {
@Override
public void onNewDeviceAdded(BowlerAbstractDevice arg0) {
Log.error("Device connected: " + arg0);
BowlerStudioModularFrame.getBowlerStudioModularFrame().showConectionManager();
}
@Override
public void onDeviceRemoved(BowlerAbstractDevice arg0) {
}
});
BowlerStudio.runLater(java.time.Duration.ofMillis((int) 2000), () -> {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Log.debug("Java Version : " + javaVersion);
Log.debug("JavaFX Version : " + javafxVersion);
Log.debug("BowlerStudio First Version: " + firstVer);
Log.debug("Java-Bowler Version: " + SDKBuildInfo.getVersion());
Log.debug("Bowler-Scripting-Kernel Version: " + BowlerKernelBuildInfo.getVersion());
Log.debug("JavaCad Version: " + JavaCadBuildInfo.getVersion());
Log.debug("Welcome to BowlerStudio!");
try {
File jarFile = new File(GroovyEclipseExternalEditor.getApplicationJarPath());
Log.debug("Application at " + jarFile + " is " + (jarFile.exists() ? "Found" : "Missing!"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
closeSplash();
if (!ScriptingEngine.isLoginSuccess() || PasswordManager.isAnonMode())
BowlerStudioModularFrame.getBowlerStudioModularFrame().menueController.onLogin(null);
} catch (Throwable e) {
reporter.uncaughtException(Thread.currentThread(), e);
}
// }).start();
}
public static void setTitle(String title) {
if (title == null)
title = StudioBuildInfo.getAppName() + " v " + StudioBuildInfo.getVersion();
if (primaryStage2 != null)
primaryStage2.setTitle(title);
}
public static void setBowlerStudioCSS(Scene scene) {
String nwfile = layoutFile.toURI().toString().replace("file:/", "file:///");
scene.getStylesheets().clear();
scene.getStylesheets().add(nwfile);
Log.error("Loading CSS from " + nwfile);
}
public static void setToRunButton(Button b) {
b.setText("Run");
b.setGraphic(AssetFactory.loadIcon("Run.png"));
b.getStyleClass().clear();
b.getStyleClass().add("button-run");
b.getStyleClass().add("button");
b.setMinWidth(80);
}
public static void setToStopButton(Button b) {
b.setText("Stop");
b.setGraphic(AssetFactory.loadIcon("Stop.png"));
b.getStyleClass().clear();
b.getStyleClass().add("button");
b.getStyleClass().add("button-stop");
b.setMinWidth(80);
}
@SuppressWarnings("restriction")
public static void closeBowlerStudio() {
BowlerStudio.runLater(() -> {
primaryStage2.hide();
});
new Thread() {
public void run() {
FileChangeWatcher.clearAll();
Thread.currentThread().setUncaughtExceptionHandler(new IssueReportingExceptionHandler());
renderSplashFrame(100, "Saving state..");
ConnectionManager.disconnectAll();
if (PasswordManager.hasNetwork()) {
if (ScriptingEngine.isLoginSuccess() && !PasswordManager.isAnonMode())
ConfigurationDatabase.save();
}
if (isDeleteFlag())
ScriptingEngine.deleteCache();
System.exit(0);
}
}.start();
}
public static void printStackTrace(Throwable e) {
printStackTrace(e, null);
}
public static void printStackTrace(Throwable e, File sourceFile) {
BowlerStudioController.highlightException(sourceFile, e);
}
public static void println(CSG... toDisplay) {
BowlerStudioController.setCsg(Arrays.asList(toDisplay));
}
public static void println(ArrayList toDisplay) {
BowlerStudioController.setCsg(toDisplay);
}
public static void print(CSG... toDisplay) {
for (CSG c : Arrays.asList(toDisplay))
BowlerStudioController.addCsg(c);
}
public static void print(ArrayList toDisplay) {
for (CSG c : toDisplay)
BowlerStudioController.addCsg(c);
}
public static boolean isDeleteFlag() {
return deleteFlag;
}
public static void setDeleteFlag(boolean deleteFlag) {
BowlerStudio.deleteFlag = deleteFlag;
}
public static void exit() {
closeBowlerStudio();
}
public static void invokeLater(Runnable object) {
RuntimeException ex = new RuntimeException("SwingUtilities called from here");
SwingUtilities.invokeLater(() -> {
try {
object.run();
} catch (Throwable t) {
t.printStackTrace();
Log.error("Swing method that failed called from: ");
ex.printStackTrace();
}
});
}
public static void moveCamera(TransformNR tf) {
runLater(() -> {
CreatureLab3dController.getEngine().moveCamera(tf);
});
}
public static void setCamera(TransformNR tf) {
TransformNR current = getCamerFrame();
TransformNR tfupde = current.inverse().times(tf);
runLater(() -> {
CreatureLab3dController.getEngine().moveCamera(tfupde);
});
}
public static TransformNR getCamerFrame() {
return CreatureLab3dController.getEngine().getFlyingCamera().getCamerFrame();
}
public static double getCamerDepth() {
return CreatureLab3dController.getEngine().getFlyingCamera().getZoomDepth();
}
public static void zoomCamera(double increment) {
runLater(() -> {
CreatureLab3dController.getEngine().zoomIncrement(increment);
});
}
public static TransformNR getTargetFrame() {
return CreatureLab3dController.getEngine().getTargetNR();
}
public static void loadMobilBaseIntoUI(MobileBase base) {
BowlerStudioController.getBowlerStudio().onScriptFinished(base, base, null);
}
public static void showExceptionAlert(Exception ex, String message) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText(message);
alert.setContentText(ex.getMessage());
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
String stackTrace = sw.toString();
TextArea textArea = new TextArea(stackTrace);
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
GridPane.setVgrow(textArea, Priority.ALWAYS);
GridPane.setHgrow(textArea, Priority.ALWAYS);
GridPane expContent = new GridPane();
expContent.setMaxWidth(Double.MAX_VALUE);
expContent.add(textArea, 0, 0);
alert.getDialogPane().setExpandableContent(expContent);
alert.showAndWait();
}
public static boolean checkValidURL(String url) {
try {
if ((url == null) || (url.length() < 5))
throw new NullPointerException();
if (url.startsWith("http"))
new URI(url).toURL();// check that the URL string contains a valid URL
else if (url.startsWith("git@")) {
// assume this is a URL
}
} catch (MalformedURLException e) {
// not a url
// Log.debug("Invalid URL "+url);
// e.printStackTrace();
return false;
} catch (URISyntaxException e) {
// not a url
// Log.debug("Invalid URL "+url);
// e.printStackTrace();
return false;
}
return true;
}
public static String getInstallDirStub() {
return DownloadManager.getSTUDIO_INSTALL();
}
public static void setInstallDirStub(String installDirStub) {
DownloadManager.setSTUDIO_INSTALL(installDirStub);
}
}
================================================
FILE: src/main/java/com/neuronrobotics/bowlerstudio/BowlerStudioController.java
================================================
package com.neuronrobotics.bowlerstudio;
import com.neuronrobotics.bowlerstudio.assets.AssetFactory;
import com.neuronrobotics.bowlerstudio.assets.ConfigurationDatabase;
import com.neuronrobotics.bowlerstudio.creature.IMobileBaseUI;
import com.neuronrobotics.bowlerstudio.creature.MobileBaseCadManager;
import com.neuronrobotics.bowlerstudio.scripting.IScriptEventListener;
import com.neuronrobotics.bowlerstudio.scripting.ScriptingEngine;
import com.neuronrobotics.bowlerstudio.scripting.ScriptingFileWidget;
import com.neuronrobotics.bowlerstudio.tabs.LocalFileScriptTab;
import com.neuronrobotics.bowlerstudio.util.FileChangeWatcher;
import com.neuronrobotics.bowlerstudio.util.IFileChangeListener;
import com.neuronrobotics.imageprovider.AbstractImageProvider;
import com.neuronrobotics.sdk.addons.kinematics.math.RotationNR;
import com.neuronrobotics.sdk.addons.kinematics.math.TransformNR;
import com.neuronrobotics.sdk.common.Log;
import com.neuronrobotics.sdk.util.ThreadUtil;
import eu.mihosoft.vrl.v3d.CSG;
import eu.mihosoft.vrl.v3d.Polygon;
import eu.mihosoft.vrl.v3d.Vector3d;
import eu.mihosoft.vrl.v3d.Vertex;
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabase;
import javafx.scene.Node;
import javafx.scene.control.Tab;
import javafx.scene.image.ImageView;
import javafx.scene.shape.MeshView;
import javafx.scene.shape.TriangleMesh;
import javafx.scene.transform.Affine;
import javafx.stage.Stage;
//import java.awt.Color;
//import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.WatchEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
@SuppressWarnings("restriction")
public class BowlerStudioController implements IScriptEventListener {
/**
*
*/
private ConnectionManager connectionManager;
private AbstractImageProvider vrCamera;
private static BowlerStudioController bowlerStudioControllerStaticReference = null;
private boolean doneLoadingTutorials = false;
private boolean runningExceptionHighlight = false;
public BowlerStudioController() {
if (getBowlerStudio() != null)
throw new RuntimeException("There can be only one Bowler Studio controller");
bowlerStudioControllerStaticReference = this;
size = ((Number) ConfigurationDatabase.getObject("BowlerStudioConfigs", "fontsize", 12)).intValue();
}
private HashMap openFiles = new HashMap<>();
private HashMap widgets = new HashMap<>();
private int size;
private static IMobileBaseUI mbui = new IMobileBaseUI() {
@Override
public void highlightException(File fileEngineRunByName, Throwable ex) {
BowlerStudioController.highlightException(fileEngineRunByName, ex);
}
@Override
public void setAllCSG(Collection toAdd, File source) {
try {
if (toAdd != null)
BowlerStudioController.setCsg(new ArrayList<>(toAdd));
} catch (Throwable t) {
t.printStackTrace();
}
}
@Override
public void addCSG(Collection toAdd, File source) {
// Auto-generated method stub
for (CSG b : toAdd)
BowlerStudioController.addCsg(b);
}
@Override
public Set getVisibleCSGs() {
return CreatureLab3dController.getEngine().getCsgMap().keySet();
}
@Override
public void setSelectedCsg(Collection selectedCsg) {
CreatureLab3dController.getEngine().setSelectedCsg(new ArrayList<>(selectedCsg));
}
@Override
public void setSelected(Affine rootListener) {
CreatureLab3dController.getEngine().setSelected(rootListener);
}
};
public void setFontSize(int size) {
this.size = size;
for (String key : widgets.keySet()) {
widgets.get(key).setFontSize(size);
}
}
// Custom function for creation of New Tabs.
public ScriptingFileWidget createFileTab(File file) {
if (openFiles.get(file.getAbsolutePath()) != null && widgets.get(file.getAbsolutePath()) != null) {
BowlerStudioModularFrame.getBowlerStudioModularFrame()
.setSelectedTab(openFiles.get(file.getAbsolutePath()));
return widgets.get(file.getAbsolutePath()).getScripting();
}
Tab fileTab = new Tab(file.getName());
openFiles.put(file.getAbsolutePath(), fileTab);
try {
LocalFileScriptTab t = new LocalFileScriptTab(file);
new Thread() {
public void run() {
String gitRepo = t.getScripting().getGitRepo();
if (gitRepo != null) {
String message = BowlerStudioMenu.gitURLtoMessage(gitRepo);
if (gitRepo.length() < 5 || (message == null))
message = "Project " + gitRepo;
if (BowlerStudio.checkValidURL(gitRepo)) {
BowlerStudioMenuWorkspace.add(gitRepo, message);
}
}
}
}.start();
String gitRepoStr = t.getScripting().getGitRepo();
String[] split = gitRepoStr.split("\\.");
String string = split[split.length - 2];
String[] url = string.split("/");
String slug = url[url.length - 2] + "/" + url[url.length - 1];
String key = slug + ":" + t.getScripting().getGitFile();
com.neuronrobotics.sdk.common.Log.debug("Loading local file from: " + file.getAbsolutePath() + "\n" + key);
if (key.length() == 1)
throw new RuntimeException("Failed to create a file key");
ArrayList files = new ArrayList<>();
files.add(gitRepoStr);
files.add(t.getScripting().getGitFile());
try {
if (key.length() > 3 && files.get(0).length() > 0 && files.get(1).length() > 0) {// catch degenerates
ConfigurationDatabase.setObject("studio-open-file", key, files);
ConfigurationDatabase.save();
}
} catch (java.lang.NullPointerException ex) {
// file can not be opened
}
fileTab.setContent(t);
ImageView icon = AssetFactory
.loadIcon("Script-Tab-" + ScriptingEngine.getShellType(file.getName()) + ".png");
icon.setFitHeight(30);
icon.setFitWidth(30);
fileTab.setGraphic(icon);
fileTab.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
if (isSelected) {
t.requestTextAreaFocus();
}
});
addTab(fileTab, true);
widgets.put(file.getAbsolutePath(), t);
System.err.println("Open Tab " + file.getAbsolutePath());
fileTab.setOnCloseRequest(event -> {
widgets.remove(file.getAbsolutePath());
openFiles.remove(file.getAbsolutePath());
ConfigurationDatabase.removeObject("studio-open-file", key);
ConfigurationDatabase.save();
t.getScripting().close();
Log.debug("Closing Tab Here " + file.getAbsolutePath());
});
FileChangeWatcher watcher = FileChangeWatcher.watch(file);
watcher.addIFileChangeListener(new IFileChangeListener() {
@Override
public void onFileDelete(File fileThatIsDeleted) {
BowlerStudioModularFrame.getBowlerStudioModularFrame().closeTab(fileTab);
}
@Override
public void onFileChange(File fileThatChanged, WatchEvent event) {
}
});
t.setFontSize(size);
return t.getScripting();
} catch (IOException e) {
// Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void clearHighlits() {
for (Entry set : widgets.entrySet()) {
set.getValue().clearHighlits();
}
}
public void setHighlight(File fileEngineRunByName, int lineNumber, java.awt.Color color) {
// com.neuronrobotics.sdk.common.Log.error("Highlighting line "+lineNumber+" in
// "+fileEngineRunByName);
if (openFiles.get(fileEngineRunByName.getAbsolutePath()) == null) {
createFileTab(fileEngineRunByName);
ThreadUtil.wait(100);
}
// BowlerStudioModularFrame.getBowlerStudioModularFrame().setSelectedTab(openFiles.get(fileEngineRunByName.getAbsolutePath()));
// com.neuronrobotics.sdk.common.Log.error("Highlighting "+fileEngineRunByName+"
// at line
// "+lineNumber+" to color "+color);
try {
widgets.get(fileEngineRunByName.getAbsolutePath()).setHighlight(lineNumber, color);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void highlightException(File fileEngineRunByName, Throwable ex) {
if (bowlerStudioControllerStaticReference != null)
bowlerStudioControllerStaticReference.highlightExceptionLocal(fileEngineRunByName, ex);
}
public static void clearHighlight() {
bowlerStudioControllerStaticReference.clearHighlits();
}
private void highlightExceptionLocal(File fileEngineRunByName, Throwable ex) {
// THis needs to gate on checking if this thread is running already
if (runningExceptionHighlight) {
ex.printStackTrace();
new RuntimeException("Only one exception Highlight can be called at once!").printStackTrace();
return;
}
new Thread() {
public void run() {
runningExceptionHighlight = true;
setName("Highlighter thread");
if (fileEngineRunByName != null) {
if (openFiles.get(fileEngineRunByName.getAbsolutePath()) == null) {
createFileTab(fileEngineRunByName);
}
BowlerStudioModularFrame.getBowlerStudioModularFrame()
.setSelectedTab(openFiles.get(fileEngineRunByName.getAbsolutePath()));
try {
widgets.get(fileEngineRunByName.getAbsolutePath()).clearHighlits();
} catch (java.lang.NullPointerException e) {
return;
}
// com.neuronrobotics.sdk.common.Log.error("Highlighting "+fileEngineRunByName+"
// at line
// "+lineNumber+" to color "+color);
StackTraceElement[] stackTrace = ex.getStackTrace();
for (StackTraceElement el : stackTrace) {
try {
// com.neuronrobotics.sdk.common.Log.error("Compairing
// "+fileEngineRunByName.getName()+" to
// "+el.getFileName());
if (el.getFileName().contentEquals(fileEngineRunByName.getName())) {
widgets.get(fileEngineRunByName.getAbsolutePath()).setHighlight(el.getLineNumber(),
java.awt.Color.CYAN);
}
} catch (Exception e) {
// StringWriter sw = new StringWriter();
// PrintWriter pw = new PrintWriter(sw);
// e.printStackTrace(pw);
// com.neuronrobotics.sdk.common.Log.error(sw.toString());
}
}
if (ex.getCause() != null) {
for (StackTraceElement el : ex.getCause().getStackTrace()) {
try {
// com.neuronrobotics.sdk.common.Log.error("Compairing
// "+fileEngineRunByName.getName()+" to
// "+el.getFileName());
if (el.getFileName().contentEquals(fileEngineRunByName.getName())) {
widgets.get(fileEngineRunByName.getAbsolutePath()).setHighlight(el.getLineNumber(),
java.awt.Color.CYAN);
}
} catch (Exception e) {
// StringWriter sw = new StringWriter();
// PrintWriter pw = new PrintWriter(sw);
// e.printStackTrace(pw);
// com.neuronrobotics.sdk.common.Log.error(sw.toString());
}
}
}
}
try {
if (widgets.get(fileEngineRunByName.getAbsolutePath()) != null) {
String message = ex.getMessage();
// com.neuronrobotics.sdk.common.Log.error(message);
if (message != null && message.contains(fileEngineRunByName.getName()))
try {
int indexOfFile = message.lastIndexOf(fileEngineRunByName.getName());
String fileSub = message.substring(indexOfFile);
String[] fileAndNum = fileSub.split(":");
String FileNum = fileAndNum[1];
int linNum = Integer.parseInt(FileNum.trim());
widgets.get(fileEngineRunByName.getAbsolutePath()).setHighlight(linNum,
java.awt.Color.CYAN);
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
com.neuronrobotics.sdk.common.Log.debug(sw.toString());
}
}
} catch (Exception ex1) {
}
try {
String sw = org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(ex);
com.neuronrobotics.sdk.common.Log.debug(sw.toString());
// space out the exception highlights, ensure any sub threads spawned here have
// time to finish
Thread.sleep(100);
} catch (Exception e) {
// Auto-generated catch block
e.printStackTrace();
}
runningExceptionHighlight = false;
}
}.start();
}
public void addTab(Tab tab, boolean closable) {
Exception ex = new RuntimeException();
BowlerStudio.runLater(() -> {
BowlerStudioModularFrame.getBowlerStudioModularFrame().addTab(tab, closable);
}, ex);
}
public static boolean removeObject(Object p) {
if (CSG.class.isInstance(p)) {
BowlerStudio.runLater(() -> {
CreatureLab3dController.getEngine().removeObject((CSG) p);
});
return true;
}
if (Node.class.isInstance(p) || Polygon.class.isInstance(p)) {
BowlerStudio.runLater(() -> {
CreatureLab3dController.getEngine().clearUserNode();
});
return true;
}
if (Tab.class.isInstance(p)) {
Tab newTab = (Tab) p;
BowlerStudioModularFrame.getBowlerStudioModularFrame().closeTab(newTab);
return true;
}
// ThreadUtil.wait(20);
return false;
}
// private boolean removeObject(Object p) {
// if (CSG.class.isInstance(p) || Node.class.isInstance(p) ||
// Polygon.class.isInstance(p)) {
// BowlerStudio.runLater(() -> {
// CreatureLab3dController.getEngine().removeObjects();
// CreatureLab3dController.getEngine().clearUserNode();
// });
// return true;
// }
// // ThreadUtil.wait(20);
// return false;
// }
public static void setCsg(List toadd, File source) {
BowlerStudio.runLater(() -> {
CreatureLab3dController.getEngine().removeObjects();
if (toadd != null)
for (CSG c : toadd) {
if (c != null)
BowlerStudio.runLater(() -> CreatureLab3dController.getEngine().addObject(c, source,
c.getColor().getOpacity(), CSGDatabase.getInstance()));
}
});
}
public static void setCsg(List toadd) {
setCsg(toadd, null);
}
public static void addCsg(CSG toadd) {
addCsg(toadd, null);
}
public static void setUserNode(List toadd) {
BowlerStudio.runLater(() -> {
CreatureLab3dController.getEngine().clearUserNode();
if (toadd != null)
for (Node c : toadd) {
CreatureLab3dController.getEngine().addUserNode(c);
}
});
}
public static void addUserNode(Node toadd) {
BowlerStudio.runLater(() -> {
if (toadd != null)
CreatureLab3dController.getEngine().addUserNode(toadd);
});
}
public static void setSelectedCsg(CSG obj) {
CreatureLab3dController.getEngine().setSelectedCsg(obj);
}
public static void highlightCsg(CSG obj) {
CreatureLab3dController.getEngine().setSelectedCsg(obj, true);
}
public static void setSelectedCsg(Vector3d v) {
Affine manipulator2 = new Affine();
TransformNR poseToMove = new TransformNR(v.x, v.y, v.z, new RotationNR());
CreatureLab3dController.getEngine().focusToAffine(poseToMove, manipulator2);
}
public static void setSelectedCsg(TransformNR poseToMove) {
Affine manipulator2 = new Affine();
CreatureLab3dController.getEngine().focusToAffine(poseToMove, manipulator2);
}
public static void setSelectedAffine(TransformNR poseToMove, Affine manipulator2) {
CreatureLab3dController.getEngine().focusToAffine(poseToMove, manipulator2);
}
public static void targetAndFollow(TransformNR poseToMove, Affine manipulator2) {
CreatureLab3dController.getEngine().targetAndFollow(poseToMove, manipulator2);
}
public static void setSelectedAffine(Affine af) {
CreatureLab3dController.getEngine().focusToAffine(af);
}
public static void addCsg(CSG toadd, File source) {
BowlerStudio.runLater(() -> {
if (toadd != null)
CreatureLab3dController.getEngine().addObject(toadd, source, toadd.getColor().getOpacity(),
CSGDatabase.getInstance());
});
}
public static void addObject(Object o, File source) {
addObject(o, source, null);
}
public static void addObject(Object o, File source, ArrayList cache) {
CreatureLab3dController.getEngine().addObject(o, source, cache);
}
public static MeshView createPolygonOutlineMesh(List vertices) {
TriangleMesh mesh = new TriangleMesh();
// This is a simplified approach - for true line rendering in 3D,
// you might want to use a more sophisticated mesh generation
// or consider using external 3D libraries like FXYZ3D
// Add vertices to mesh (this creates a basic wireframe approximation)
for (Vertex v : vertices) {
mesh.getPoints().addAll((float) v.getX(), (float) v.getY(), (float) v.getZ());
}
// Add texture coordinates (required but minimal for wireframe)
mesh.getTexCoords().addAll(0, 0);
// Add faces (connecting consecutive vertices)
for (int i = 0; i < vertices.size(); i++) {
int next = (i + 1) % vertices.size();
// Create degenerate triangles for line effect
mesh.getFaces().addAll(i, 0, next, 0, i, 0);
}
MeshView meshView = new MeshView(mesh);
meshView.setDrawMode(javafx.scene.shape.DrawMode.LINE); // Wireframe mode
return meshView;
}
public void addNode(Node o) {
CreatureLab3dController.getEngine().addUserNode(o);
}
@SuppressWarnings({"unchecked"})
@Override
public void onScriptFinished(Object result, Object Previous, File source) {
Log.warning("Loading script results " + result + " previous " + Previous);
// this is added in the script engine when the connection manager is
// loaded
clearObjects(Previous);
clearObjects(result);
ThreadUtil.wait(40);
ArrayList cache = new ArrayList<>();
if (List.class.isInstance(result)) {
List