goGPS-Project / goGPS_Java

goGPS Java is a GNSS observation processing library.
http://www.gogps-project.org
59 stars 43 forks source link

A graphical user interface for goGPS Java #5

Closed ZiglioUK closed 8 years ago

ZiglioUK commented 9 years ago

Wouldn't it be nice to have a fully fledged GUI for goGPS Java? I don't have a full license for goGPS Matlab and its GUI doesn't work well on Matlab for Linux and doesn't work at all on Octave.

Now, desktop applications is difficult, something crossplatform desktop/mobile would be nice. But Java doesn't run in a browser and browser apps are second rate citizens on mobile. I'm not aware of any proposed development in this area.

ZiglioUK commented 9 years ago

One thing I'm playing with today is JavaFX. I've used Swing in the past, and hated it. I hate it because of the lack of closures in Java (before 8), the lack of data binding, it's generally awkward. JavaFX + Java 8 could be a bit better. One another option would be to run a WebView: http://www.java2s.com/Code/Java/JavaFX/UsingWebViewtodisplayHTML.htm In order to make it crossplatform (to mobiles) there's no much choice. Perhaps NativeScript could be the answer sometimes in the future: http://www.telerik.com/nativescript So one could write the UI in JavaScript and keep the core of the app in Java, to run on Android and Desktop. Or one could translate Java into native Windows using ikvm.net (http://www.ikvm.net/). It works really well. But what about iOS? http://robovm.com/ perhaps I don't have an iPhone myself but a lot of people do, as a matter of fact. No easy solution.

ege010 commented 9 years ago

I don't have the slightest idea about how to make a good GUI in Java... can't help you there :( But if anyone starts making a goGPS Java GUI, I could help with the design (which parameters and choices to show, etc)

nro2dai commented 9 years ago

I am also not expert on that.

I agree this point.

So one could write the UI in JavaScript and keep the core of the app in Java, to run on Android and Desktop.

I have prepared a simple WebUI long time ago to load dataset, process and show the output result on Web map. And I would like to improve the WebUI for simple use.

2015-03-27 11 23 16

ZiglioUK commented 9 years ago

Good old Open Layers :+1: Actually I was going to ask you guys about that Zoo Project as I don't know much about it. I use Open Layers 2 on our web site too, for the future I was planning on using Cesium. But World Wind could be an option too. Yesterday I saw this blog post about running JavaFX on Android: http://jperedadnr.blogspot.com.es/2015/03/javafx-on-mobile-dream-come-true.html I don't know how easy it is but in order to reproduce some functionality like the GUI for goGPS Matlab, I don't think we should discard JavaFX in principle. It can be deployed as a self contained app (http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm) and it supports WebView which we could use for displaying the final result as a map. I just think from the user perspective, launching a local web server could be tricky. Or were you thinking @nro2dai of offering a fully hosted goGPS Web solution?

nro2dai commented 9 years ago

ZOO is one of Web Processing Service(WPS) platforms to standardize web geo-processings and to allow WPS client to execute the processing service. (However, there are not many WPS-compliant software yet )

I use Open Layers 2 on our web site too, for the future I was planning on using Cesium.

Interesting :)

Or were you thinking @nro2dai https://github.com/nro2dai of offering a fully hosted goGPS Web solution?

Yes. Or preparing easy deploy solutions using VM or containers such as Docker, https://registry.hub.docker.com/u/nro2dai/zoo/

2015-03-27 11:35 GMT+09:00 Emanuele Ziglioli notifications@github.com:

Good old Open Layers [image: :+1:] Actually I was going to ask you guys about that Zoo Project as I don't know much about it. I use Open Layers 2 on our web site too, for the future I was planning on using Cesium. But Wold Wind could be an option too. Yesterday I saw this blog post about running JavaFX on Android: http://jperedadnr.blogspot.com.es/2015/03/javafx-on-mobile-dream-come-true.html I don't know how easy it. I think in order to reproduce some functionality like the GUI for goGPS Matlab, we shouldn't discard JavaFX in principle. It can be deployed as a self contained app ( http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm) and it supports WebView which we could use for displaying the final result as a map. I just think from the user perspective, launching a local web server could be tricky. Or were you thinking @nro2dai https://github.com/nro2dai of offering a fully hosted goGPS Web solution?

— Reply to this email directly or view it on GitHub https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-86791265.

ZiglioUK commented 9 years ago

Thanks @nro2dai, I had never heard about WPS before reading about goGPS. It sounds like as a spec it's been around for a while. It doesn't look like it's gaining much traction though, is it? Docker instead is all the rage these days, I can see from your example why, it's so easy to try!

I suppose we need to define what needs a graphical user interface wants to address. For post-processing a web interface it's probably ok. What about real time? that's where goGPS Java shines.

Question for @ege010 : at the goGPS workshop for the next FOSS4G-E in July, are all attendees supposed to have an active Matlab license? So, that would be another case where a working standalone Java GUI could help outsiders like me. I wonder if any of the GUI code in goGPS Matlab can be reused at all, I'll have a look.

JavaFX links (reminder to my future self) Scene Builder pages: http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-info-2157684.html http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-1x-archive-2199384.html http://stackoverflow.com/questions/12622837/can-java-scene-builder-integrate-into-eclipse-like-it-does-in-netbeans https://docs.oracle.com/javase/8/scene-builder-2/installation-guide/jfxsb-installation_2_0.htm http://code.makery.ch/library/javafx-8-tutorial/part1/

ege010 commented 9 years ago

@ZiglioNZ, if I understood correctly, at FOSS4G-E the workshops will be carried out in Polimi's computer rooms, so the MATLAB platforms will be made available to attendees, just for the purpose of the workshop.

2015-03-29 0:22 GMT+01:00 Emanuele Ziglioli notifications@github.com:

Thanks @nro2dai https://github.com/nro2dai, I had never heard about WPS before reading about goGPS. It sounds like as a spec it's been around for a while. It doesn't look like it's gaining much traction though, is it? Docker instead is all the rage these days, I can see from your example why, it's so easy to try!

I suppose we need to define what needs a graphical user interface needs to address. For post-processing a web interface it's probably ok. What about real time? that's where goGPS Java shines.

Question for @ege010 https://github.com/ege010 : at the goGPS workshop for the next FOSS4G-E in July, are all attendees supposed to have an active Matlab license? So, that would be another case where a working standalone Java GUI could help outsiders like me. I wonder if any of the GUI code in goGPS Matlab can be reused at all, I'll have a look.

Reply to this email directly or view it on GitHub https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-87329254.

ZiglioUK commented 9 years ago

I'm pleased to announce https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.1 gogps_fx_0 1

nro2dai commented 9 years ago

Wow, great work! @ZiglioNZ

2015-06-17 21:57 GMT+09:00 Emanuele Ziglioli notifications@github.com:

I'm pleased to announce https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.1 [image: gogps_fx_0 1] https://cloud.githubusercontent.com/assets/1219039/8207335/e8686332-1554-11e5-903a-4f7969ecd60c.jpg

— Reply to this email directly or view it on GitHub https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-112789755.

ZiglioUK commented 9 years ago

Thank you @nro2dai ! If you guys have a chance to try it, I'd appreciate your feedback. I'm experiencing some exceptions due to empty lines, but not all the time. The front-end is pure html/js/css and binds to the java backend model with knockoutjs (thanks to DukeScript). I was familiar with KnockoutJs, having used it on our website for a few years. It's the first time though I use Bootstrap, a responsive (resizeable) framework for CSS, so the layout could definitely improve. I've managed to build it on Linux too. Unfortunately one has to build for each platform when running on that platform, so VMs or partitions running Windows 64, Windows 32, Linux 32, Linux 64 (haven't tried on ARM at all). Dukescript should work on Android too. Of course the part that deals with Serial Ports has to change in order to use Android's native APIs, rather than SerialIO.

ZiglioUK commented 9 years ago

New build https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.2

ege010 commented 9 years ago

Great! A couple of hints:

2015-06-18 13:28 GMT+02:00 Emanuele Ziglioli notifications@github.com:

New build https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.2

— Reply to this email directly or view it on GitHub https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-113120490.

nro2dai commented 9 years ago

Where is the root directory in case of Windows OS? I should prepare "data" and "out" directories, right?

2015-06-18 22:02 GMT+09:00 Eugenio Realini notifications@github.com:

Great! A couple of hints:

  • both Code Double Difference and Kalman filter modes in goGPS Java need a master observation file;
  • the dynamic model is used only by the Kalman filter mode.

2015-06-18 13:28 GMT+02:00 Emanuele Ziglioli notifications@github.com:

New build https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.2

— Reply to this email directly or view it on GitHub <https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-113120490 .

— Reply to this email directly or view it on GitHub https://github.com/goGPS-Project/goGPS/issues/5#issuecomment-113148840.

ZiglioUK commented 9 years ago

@nro2dai the default install folder with the javafx packager seems to be under C:\Users{you}\AppData\Local\goGPS_FX\app\

Now I'd like to change that so that it installs it under C:\Program Files. It's good though that the app itself defaults its "workspace" to a user folder as writing to Program Files triggers all sorts of warnings.

The default dir for Linux is under \opt. I still need to update the ant build script for Linux. Maybe the one for Windows also works on Linux, I must try. There were some warnings being triggered due to a 'lack of license' of some sort, something else to look into. An interesting thing would be to try and build for Mac @ege010

ZiglioUK commented 9 years ago

@ege010 oh, I hoped one could use Kalman in standalone mode too. What about the Matlab code? In that case I think I should move the mode and model selection to the bottom and change it to use radio buttons, so it's obvious when they're enabled or disabled based on rover, navigation and eventually master base selection

ZiglioUK commented 9 years ago

Update, bug fix: https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.3b

Added Master input selection (observation file or com port). That input is shown only in the code dd and kalman case.

Also added a list of satellites being processed with their SNR.

Firebug Lite starts minimized, and you can click on the icon to maximize it. Sometimes it also needs to be dragged up. By the way, Firebug is now cached in the web app folder.

The app now creates an "out" folder at startup if it doesn't exist. Now bundling JRE 1.8.045.

ZiglioUK commented 9 years ago

Build 0.4, if I have time I'll build it for Linux too https://github.com/goGPS-Project/goGPS_FX/releases/tag/0.4

Fixed Refresh Port List Added Snapshot Code Stand-alone mode Display serial port "friendly name" on Windows using JNA

image

image

ZiglioUK commented 8 years ago

Carrying onto this project for a standlone GUI: https://github.com/goGPS-Project/goGPS_FX Or there https://hub.docker.com/r/nro2dai/zoo/ for a web service