Great work! Very impressive.
Can you share some information about the UI implementation?
Thank you
@Erel, and thank you for helping me through the creation process.
In this app I use all the libraries that are in my signature, except the jAgenda.
For the UI, I used the Scene Builder. The way I built the app is by making a class for each tab in the app. Because of the different users permission, I had to build a system that would allow me to use different build configurations and show or not show each tab, so using classes for each tab is nice. Some users in the company can only see the Chat page for example.
[EDIT] i.e. I have one layout per tab.
I designed a lot of custom controls, like the right panel you see in the calendar page. This on opens on hover, and closes itself when leaving.
Another great control is the calendar. I managed to regroup the grid view, the timeline and the 7 days calendar ( as well as a month by month grid view same as google calendar, but not in the app ) within one single library. So I can just select by code which kind of calendar I need.
To make it user friendly, many of my users asked me to have more animations. so I use a lot the transition library I did, as well as the animation and alpha animated methods that come with b4j.
For the drag and drop, I wrote my own drag and drop library, but I have to say it's very close to the one written by
@agraham . For the PDF exports, I use the PDFJet library by @
warwound.
One difficulty I had was how to use so many images and not run out of memory. I solutioned this partly by loading images only once, like the user photos, and saving them in a list of types. But I'm very happy about the responsiveness of the application. It's very fast, everything is preloaded from the database when the app opens. Once the app is opened, every update of calendar, project or task is broadcasted by tcp ip to the users, so I stop loading from the database.
I can give more precise details on more specific questions ;-)
[EDIT] All the chats and updates pass through a server. The server is built using the jNetwork library.