Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multitab support for docking #10

Closed
wants to merge 12 commits into from
Closed

Conversation

hkmoon
Copy link

@hkmoon hkmoon commented Jan 20, 2016

Multitab is supported for JavaFX.
Hopefully, people like it. Please, report bugs if there are.
The next step would be to store/load the dock preference in the configuration file.

dockfx

@jasons2000
Copy link

sounds good, what's the best way to test it, is there a demo of the new features ?

@hkmoon
Copy link
Author

hkmoon commented Jan 20, 2016

You can use org.dockfx.demo.DockFX which @RobertBColton has already created as well.
Just drag one titleBar and put in the middle of the other pane.
Cheers,

@jasons2000
Copy link

Ok, I guess I need to merge your pull requests into my local version?

@hkmoon
Copy link
Author

hkmoon commented Jan 20, 2016

Yup, that would be the first thing to do. ;)
Also you can clone https://github.com/hkmoon/DockFX.git.

@jasons2000
Copy link

Multitab, looks really good. I'm now thinking of replacing the use of normal JavaFX Tabs with yours, on an application I'm working on. I think this gives much gives more flexibility to the end user.

Easily, storing and loading of dock preferences is going to be important to makes this even better. If you are going to start this bit soon, I think it would be useful to discuss your approach with the wider community, I've certainly got some strong ideas on this.

I will come back with more feedback later today or tomorrow.

@jasons2000
Copy link

Ok, some more feedback. Thinking out aloud here. On products like IntelliJ you can drag to reorder the tabs, which is quite useful sometimes. Not sure how you'd represent this.visually with DockFX.

@Naios
Copy link
Contributor

Naios commented Jan 20, 2016

Your proposal looks really good, well done.
But it doesn't feel really natural since you are still required to drag the pane on the middle of the circle to enable the multitab layout or to add new tabs to the multitab-pane.

Probably it's much more natural as @jasons2000 already suggested,
to drag the pane in the tabs to add it to the multitab pane like it's common in popular IDE's.

@hkmoon
Copy link
Author

hkmoon commented Jan 20, 2016

@jasons2000 , @Naios , Thank you for all the feedbacks!
I wanted to make it consistent with what @RobertBColton created, which is the Dial Overlay.
However, that would be good to have the re-ordering tabs during the panel in the TabPane.
I will get back to you if the functionality is implemented.

@jasons2000
Copy link

@hkmoon, how are your changes going?

@RobertBColton
Copy link
Owner

I just wanted to offer some feedback on this and it looks great so far. I really appreciate the support, and I venture the users do as well.

I was also going to use the middle dock indicator icon as he did to add additional tabs if I got around to it, so I am fine with that. I can also understand why dragging over the tab area is more consistent and some may prefer that. Both could actually be done as well. But my idea was originally that docking on the center indicator would create a tab pane if one didn't exist, if there's no tabs there, how are you going to combine them into tabs? I was following the Qt Framework style basically.

I won't dictate it, but my recommendation is to honestly do it both ways.

I also want to update everyone on why I haven't been as active. I am waiting for some bugs to be fixed in OpenJDK that exist with the current master. Mostly they effect the Linux platform, but some of them also exist on Windows. I am the original filer on the tickets, and just by reading them you can see why they affect DockFX, as I've also noted in the comments. I did sign the Oracle Contributor Agreement hoping to fix them myself but keep running out of time between other projects and my schoolwork, so if anyone that can fix it for OpenJDK, please send your fixes upstream to them.
https://bugs.openjdk.java.net/browse/JDK-8133335
https://bugs.openjdk.java.net/browse/JDK-8133029
https://bugs.openjdk.java.net/browse/JDK-8148828
https://bugs.openjdk.java.net/browse/JDK-8134278
https://bugs.openjdk.java.net/browse/JDK-8133831
https://bugs.openjdk.java.net/browse/JDK-8133834

For these reasons right now I do not want to pull any new features into master. i'm going to review these changes some more and possibly merge them to master and possibly create a stable branch first if they exacerbate the existing bugs. JDK-8133335 and JDK-8133029 are the biggest show stoppers.

A couple of things I notice on first review @hkmoon

  1. Did you run the Google styleguide/formatter over the changes? I see some places it looks a little inconsistent.
  2. Can you revert the first change to the pom file, not the whole thing, just the line that changes it from RobertBColton/DockFX.
  3. Can you explain the other changes to the pom file? I assume you are doing a release with these features?

@hkmoon
Copy link
Author

hkmoon commented Feb 3, 2016

Welcome back, @RobertBColton,

I really appreciate your feedback and corrected the codes based on your requests.
Actually, I thought you stopped maintaining this project. That is why I tried to make it alive in public.
As you returned, the url is reverted to your original one.

A couple of things I notice on first review @hkmoon

  1. Did you run the Google styleguide/formatter over the changes? I see some places it looks a little inconsistent.

This is done by eclipse. My main IDE is intelliJ as each IDE has very subtle difference even I use the same style xml.

2 Can you revert the first change to the pom file, not the whole thing, just the line that changes it from RobertBColton/DockFX.

Done.

3 Can you explain the other changes to the pom file? I assume you are doing a release with these features?

Actually, we have several open source projects which have DockFX dependency as I made some changes there. We also use bintray for the assembly distribution. It would be good for you to make your own repository to provide DockFX assembly for other projects that have DockFX dependency.
Please, let me know if this might conflict with your intention.

@hkmoon
Copy link
Author

hkmoon commented Feb 3, 2016

Hi @jasons2000,

@hkmoon, how are your changes going?

I am sorry that I could not find any time for developing it.
I will keep you updated when I can make the changes.

Cheers,
HK

@SamCooper
Copy link

Can I just add that I am following this work with great interest! I hope to use this in my products, so keep up the good work!

@RobertBColton I have a couple of ideas for enhancements, should I add them as issues (tagged appropriately) to your repo so that I don't forget them? I will try to add them myself but I am just starting out on JavaFX.

@RobertBColton
Copy link
Owner

@hkmoon Awesome, thank you. I understand now, I would still say for the purpose of this repo it should point to me in the pom, it's ok to have it point to yours in your version though. I encourage your maintenance of a spinoff, since I understand the need. Just for the reasons above I am conflicted on the best strategy to move forward. Are you also suggesting I create a Maven central repository? If that's anything like a package manager on Linux, I want to say I'd rather not be the maintainer, because there's so many different pm's. But I am alright with anybody else maintaining one. I am not really sure the general practice there, if original developers are usually the one's that maintain such packages?

@SamCooper Yes go right ahead and post an issue. I'd prefer that each feature you can identify be filed separately, as though you are filing a bug on OpenJDK itself (isolate the issue). I'd really like to make DockFX very robust and complete, and I do already have somewhat an idea of what that entails as the README.md describes. Also please be sure to consult the README again just to make sure I don't have one already listed.

Overall the ultimate goal here would be to get DockFX included in OpenJDK, and I was working with ControlsFX to do so but couldn't move forward because of the above issues. That's really what I'd like to see the most, is a docking control in the Java SE that is available to everyone, much like the Qt Framework.

@jpiersol
Copy link

@RobertBColton Do you have any updates as of late? It looks like there are a few folks who'd like to contribute to this project (@hkmoon, @jasons2000, myself, and others), and it would be awesome to see all the changes make it back into the original repo.

Perhaps development can continue despite the JDK bugs?

@jasons2000
Copy link

Amen to that

@SamCooper
Copy link

My suggestion would be to fork a repo that everyone interested can contribute to, obviously keeping Robert in the loop.

That way Robert can keep his at the point he would like to so that he can use it for verifying the JDK bugs or whatever he needs.

There is also no reason why Robert can't contribute to the fork either. When everything is sorted regarding the JDK then all the forks can be merged but obviously it will be simpler for Robert if there is one fork that he has to look at.

Just my 2p/c...

@jasons2000
Copy link

What has Robert got to say on the subject?

@jpiersol
Copy link

@SamCooper That sounds reasonable. However, it seems that there are existing forks (e.g., @hkmoon's) that could be communally developed but aren't being developed.

I'd propose creating a tag in order to note the JDK bugs, then opening up @RobertBColton's master branch for development. I think this would encourage DockFX development while still providing a way to address the JDK bugs.

@jpiersol
Copy link

For anyone reading this and wishing for further DockFX development, I'd like to second @jasons2000's comment in #7 and promote @hkmoon's fork: https://github.com/hkmoon/DockFX/tree/hkmoon

@hkmoon
Copy link
Author

hkmoon commented May 12, 2016

@jpiersol Thank you for the all comments. I am personally still improving the codes in https://github.com/ClearControl/DockFX project. You can fork it from there while Robert is contemplating on this project.

@jasons2000
Copy link

@hkmoon , what's the idea behind ClearControl. Also looks like you've moved to to gradle for build, what's your thoughts about this ?

@RobertBColton
Copy link
Owner

RobertBColton commented May 14, 2016

Just as a quick update on this, one of the issues has been fixed for JDK 9:
https://bugs.openjdk.java.net/browse/JDK-8148828

The two real show stoppers from making any progress with tabs are these two:
https://bugs.openjdk.java.net/browse/JDK-8133335
https://bugs.openjdk.java.net/browse/JDK-8092098

JavaFX will get draggable tab headers at some point. And my concern is that once it does, we would have to redo the whole thing over again.

@hkmoon
Copy link
Author

hkmoon commented May 14, 2016

@hkmoon , what's the idea behind ClearControl. Also looks like you've moved to to gradle for build, what's your thoughts about this ?

@jpiersol ClearControl is a our institute microscope control software project. All the GUI controls are wrapped by DockFX's dockable window where each device panel and some control panels (log, console, device tree, scripting panels and so on) are detachable/attachable on the DockPane.

DockFX is used as a framework to handling docking environment. That is why I have been still improving DockFX code from time to time, according to my collaborators' requests. However, sometimes the implemented features are too subjective to make a PR here. Therefore, we keep the DockFX repository in ClearControl.

@SamCooper SamCooper mentioned this pull request Jul 20, 2016
@hkmoon
Copy link
Author

hkmoon commented Jan 17, 2017

I will come back and create PR later. For now, I close this PR.

@hkmoon hkmoon closed this Jan 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants