From: SourceForge.net <no...@so...> - 2007-09-09 00:48:54
|
Patches item #1782091, was opened at 2007-08-26 12:29 Message generated for change (Comment added) made by ezust You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=300588&aid=1782091&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Shlomy Reinstein (shlomy) Assigned to: Alan Ezust (ezust) Summary: An interface for dockable windows Initial Comment: The attached patch (jedit.patch) declares a minimalistic (at this stage) interface for dockable windows, that notifies them when the docking area is changed, so they can adjust (e.g. change the layout). In addition, this patch makes jEdit use the same instance of the dockable when the docking area is changed, instead of invoking the BeanShell code for creating the dockable each time. This new behavior is much more sensible, since it is now easy for dockables to maintain their state when they are moved between the docking areas, whereas the current behavior requires the dockable to maintain a view->instance mapping. Also, this patch includes a workaround for a component reparenting problem in Swing: If the dockable instance is moved from its docking area to a floating container (using "Float"), the instance is sometimes blank. The workaround is to create a new JPanel around it each time. For some reason, this also not always works. For backward compatibility, dockables are required to implement the new interface DockableWindow in order to use the new behavior. Dockables that do not implement DockableWindow do not use the new behavior, and instead a new instance is created each time the docking is changed. A corresponding patch is also attached for the GlobalPlugin (global.patch), that uses this jEdit patch, so you can see the differences in code and behavior. ---------------------------------------------------------------------- >Comment By: Alan Ezust (ezust) Date: 2007-09-08 17:48 Message: Logged In: YES user_id=935841 Originator: NO The GlobalPlugin patch is no longer there. I'd still like to try it out first. Please re-add? Also, there needs to be more API docs, which I'm adding to my version, if I end up being the one to commit this. ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-09-08 17:48 Message: Logged In: YES user_id=935841 Originator: NO The GlobalPlugin patch is no longer there. I'd still like to try it out first. Please re-add? Also, there needs to be more API docs, which I'm adding to my version, if I end up being the one to commit this. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-09-08 06:11 Message: Logged In: YES user_id=1477607 Originator: YES Attaching a new patch which does not require a change in the code, only an additional MOVABLE="TRUE" attribute in the dockable.xml in order to make a dockable instance move instead of recreated when the docking position is changed. The DockableWindow interface is not required in order to use the new behavior. If a dockable that has MOVABLE="TRUE" implements this interface, it is notified about the change in docking position using this interface, otherwise it is moved without being notified. The GlobalPlugin version in SVN is already adapted to the new behavior. File Added: patch ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-09-02 12:59 Message: Logged In: YES user_id=1477607 Originator: YES Reviving this patch because, as it turns out, the DockableWindowManager API cannot be used to get the existing dockable instance for the view when the docking position is changed. The DWM gets rid of the instance before it invokes the BeanShell code to get an instance for the new docking position. The problems with this patch will be handled one by one. But this patch already improves the existing state. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-08-27 22:22 Message: Logged In: YES user_id=1477607 Originator: YES Closing this because there is no real need in this patch. A plugin can use the DockableWindowManager API to get the existing instance of the dockable for the view, if exists, so it can easily supporting preserving state when moving between docking areas. The attached patch suffers from some problems that can be easily avoided by correctly handling dockable movements in the plugin. Hence, I am replacing this patch with an updated section in the plugin development section of the jEdit user guide. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-08-26 12:29 Message: Logged In: YES user_id=1477607 Originator: YES File Added: global.patch ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=300588&aid=1782091&group_id=588 |