mpicbg-scicomp / halcyon

Halcyon is JavaFX framework for designing dockable multiple window applications
GNU General Public License v2.0
5 stars 1 forks source link

Ctrl+DoubleClick on tree entry opens up panel in a separate non-dockable window #18

Closed royerloic closed 8 years ago

royerloic commented 8 years ago

Sometimes it is nice to open a HalcyonNode in a completely separate window. Reasons:

Ctrl + DoubleClick should open a node in a diferent window, which can be closed. If a window is already opened then it is brought into focus. A context menu (right click) can be added to give the possibility to open the node/panel in such an external window.

It would work similarly to an HalcyonExternal node, the difference is that external nodes are for non-Swing and non-JavaFX windows (JOGL based OpenGL windows)

royerloic commented 8 years ago

Part of this issue has already been addressed, but we still need:

Missing features: i) to be able to open up a not already opened panel as an independent panel. ii) use CTRL-CLICK in addition to the context menu.

Bugs: 1) It's not possible to open a panel in a separate window if it is not yet opened as a docked panel. 2) When right clicking on 'create panel' it deletes the corresponding entry in the node 3) the size of the external window (stage) should depend on what it is containing. It should not be always the same size independently of what is contained.... 4) If a panel is alread open externally, double clicking on the corresponding item in the tree should not open a new panel, but should bring up the externally opened window instead. This can be best acheived by calling a 'requestFocus' type function on the window/stage. 5) Clicking on "Create PAnel" in the context menu for a "Video 2D -StackCamera..." device causes an exception.

Change in behaviour: a) When closing an externally opened panel, it should be completely closed, it should not be added to the dock window. This makes sense because given 1) we can open windows externally -directly-

Renaming items in context menu: u) "Create a Panel" --> "open" (means open panel as docked item, same as double clicking item) v) "Make Independent" --> "open externally" (means open externally, same as Ctrl+DoubleClick) w) "Remove --> close" (means that the panel should be closed, whether it is internal, external, jfx, swing or other )

hkmoon commented 8 years ago

Can you give it a try with @7176e1a479d5aa5e546ac8347621fdaf69376249?

royerloic commented 8 years ago

Great! much better! A few things still:

0- Right now it's opening the panel on Ctrl+SingleClick instead of Ctrl+DoubleClick.

1- Ctrl+DoubleClick does not work well on mac because for some reason Ctrl+Click is associated to rightclick. This causes the context menu to popup temporarily before the panel is opened. So we should probably use Shift+DoubleClick instead...

2- Bug: be carefull we have these 'HalcyonOtherNode's (I just renamed that classto avoid confusion with the notion of opening external nodes) which are not Swing or JFX components, right now clicking 'open' on with the context menu causes an exception. Please do test that these nodes are handled properly. Same holds for swing nodes (for example the Groovy scripting thingy.)

3- Behaviour tweak: For example, is a laser is already opened externally, but it is hiding somewhere, it would be good if a simple DoubleClick on the corresponding item on the tree just brings it in focus (above other windows). This can be done with a 'requestFocus' type function of the stage/window. Right now, doubleclicking brings it back in the dock. But I think that it is a better behaviour to leave it outside. So the rule is: if it is opened outside and we double click it just leaves it there an bings it up in focus. But if you explicitly use the context menu, then of course you do exactly what the conext menu says. This means that the meaning of a doubleclick slightly changes if it open externally. Now Shift+DoubleClick does actually the same as if there was no Shift which just refocus (again this is only if the panel is already opened externally.)

4- Clicking on the "open externally" context menu and the panel opens externaly as it should. if then you press "open" the corresponding node in the tree disappears!! and the panel too... weird :-) See this video: https://www.dropbox.com/s/r8v6rq28zqdcnuj/DissapearBug.mov?dl=0

5- Make sure that closing the main Halcyon window also closes the other externally opened nodes and corresponding windows/stages...

hkmoon commented 8 years ago

1- Ctrl+DoubleClick does not work well on mac because for some reason Ctrl+Click is associated to rightclick. This causes the context menu to popup temporarily before the panel is opened. So we should probably use Shift+DoubleClick instead...

In the mac, ctrl-click is same as right-click. We probably change the way of it. Refer https://support.apple.com/kb/PH18768?locale=en_US.

royerloic commented 8 years ago

ok, so the best is to go for SHIFT+DOUBLECLICK

On 10 May 2016, at 14:44, HongKee Moon notifications@github.com wrote:

1- Ctrl+DoubleClick does not work well on mac because for some reason Ctrl+Click is associated to rightclick. This causes the context menu to popup temporarily before the panel is opened. So we should probably use Shift+DoubleClick instead...

In the mac, ctrl-click is same as right-click. We probably change the way of it. Refer https://support.apple.com/kb/PH18768?locale=en_US https://support.apple.com/kb/PH18768?locale=en_US.

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/ClearControl/Halcyon/issues/18#issuecomment-218146020

Dr. Loïc Alain Royer

Post-Doc - Myers Lab Max Planck Institute of Molecular Cell Biology and Genetics Pfotenhauerstr. 108 01307 Dresden

Too short? Here's why: http://emailcharter.org/

hkmoon commented 8 years ago

Could you give it a try with @c18c1d02a1645ae33179d5b0940b546c28ce4f68? Thanks!!

royerloic commented 8 years ago

It's great!! Thanks HongKee!! Ok, almost,

u) the bug 3 from the last list does not always work for scripting window item (SwingNode), I could not reproduce it consistently, so for now we ignore, once I figure out in which scenario it fails. Until then just ignore this. It's more a mental note for me.

v) Clicking on "Open externally" in the context menu does nothing at all if the node is already opened externally, it should just bring the corresponding window in focus.

That's it, maybe while using it more i might figure out something else...

Thanks!! Great Job!

hkmoon commented 8 years ago

Could you push the relevant change to ClearControl as you changed to HalcyonOtherNode from HalcyonExternalNode?

Thanks!!

royerloic commented 8 years ago

damn! sorry about that :-)

On 10 May 2016, at 16:44, HongKee Moon notifications@github.com wrote:

Could you push the relevant change to ClearControl as you changed to HalcyonOtherNode from HalcyonExternalNode?

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/ClearControl/Halcyon/issues/18#issuecomment-218179739

Dr. Loïc Alain Royer

Post-Doc - Myers Lab Max Planck Institute of Molecular Cell Biology and Genetics Pfotenhauerstr. 108 01307 Dresden

Too short? Here's why: http://emailcharter.org/