[ANN] Compare Directories released

A "Compare Directories" plugin is now released. It allows the recursive comparison of the contents of two folders, assuming both folders contains files with the same name (like WinDiff does, if you know it, but in a more IntelliJ IDEA-like way).


I give here a few tips about to use it and some of the major features the plugin includes.

First you have 3 ways to start comparing two folders:
- you can select the two folders in the IDEA project tree; the contextual menu of any of these folders in the IDEA project tree view contains a "Compare directories" item at the very bottom of the menu. Just select it and you'll see!
- you can select one folder in the IDEA project tree; its contextual menu contains a "Compare directory with..." item at the very bottom of the menu. If you select it, a dialog box opens allowing you to choose the second folder to be compared (which can be outside your IDEA project).
- if no IDEA project node is selected, you can select "Compare Directories..." in the "Search" menu bar. A dialog box then opens allowing you to choose the two folders to be compared.

Then files with the same names in the selected folders are recursively compared. They can be either identical, different, different by blanks only (when compared files are not binary), left only or right only. The result is printed out in a tree view showing the compared folder structure, with icons showing for every tree node if the files are identical, different, different by blanks only (when compared files are not binary), left-only or right-only. Every comparison tree node has its own contextual menu, allowing the files of that node to be compared using the usual IDEA file compare window, or the left-side file or the right-side file to be opened in the IDEA editor.

Note that one of the folders or both folders can actually be ZIP files. ZIP files are then handled as compressed folders.

The comparison tree view can be filtered to show or hide identical, different, different-by-blanks-only, left-only or right-only nodes, using the buttons in the button bar of the "Compare Directories" panel. The button bar also allows interrupting or rerunning the whole comparison.

Comparison tree nodes can also be included/excluded like in the standard IDEA "Find" panel (see contextual menu of the comparison tree nodes or the "Insert"/"Delete" keys when such a node is selected). Nodes can also be "recomputed" in an isolated way to take file changes into account (using the appropriate contextual menu item).

Last feature: a left-only node and a right-only node in the same folder can be merged and the related files compared even if they have a different file name (select both nodes of the same folder, and a "merge" item appears in the node contextual menu if one is left-only and the other is right-only). Of course, a merged node can then be "un-merged" if wanted ("split" operation in the contextual menu of the merged node).

All comments and feedback are welcome.

Olivier.

0
Avatar
Permanently deleted user

I'm trying to use it right now and can't manage to get it working.

I'm using IDEA 5380.

I want to compare the contents of one of the folders of a project with a filesystem directory (not in an IDEA project).

I tried it 2 ways
1/
- select the project folder, right click, compare directories
- a dialog pops, with the selected folder affected to the "left" combo box, which is readonly, and the right combo box editable (seems ok)
- i pop the file chooser for the right combo box, and select the directory i want to compare it against, works fine
- i click ok, and then i get an error message telling me that %IDEA HOME%/bin does not exist (which is not the dir I selected, but was initially selected). Seems the selection i made does not get taken.
2/
- using the Search menu i manually select the file systems directories and click ok
- seems to work : a Compare tab opens from the left menu bar, but i get an error "Erreur inattendue pendant le raffraichissement de la fenetre outil".

Exceptions reported
Error during dispatching of java.awt.event.PaintEvent[PAINT,updateRect=java.awt.Rectangle[x=111,y=191,width=1452,height=642]] on frame0: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)

Error during dispatching of java.awt.event.PaintEvent[UPDATE,updateRect=java.awt.Rectangle[x=26,y=69,width=1305,height=905]] on frame0: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)



Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.SystemEventQueueUtilities$ComponentWorkRequest@7eecd7,notifier=null,catchExceptions=false,when=1152703233489] on sun.awt.windows.WToolkit@152643: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)



Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.SystemEventQueueUtilities$ComponentWorkRequest@7eecd7,notifier=null,catchExceptions=false,when=1152703242201] on sun.awt.windows.WToolkit@152643: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)



Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.SystemEventQueueUtilities$ComponentWorkRequest@7eecd7,notifier=null,catchExceptions=false,when=1152703243684] on sun.awt.windows.WToolkit@152643: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)
at javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(Unknown Source)




Error during dispatching of java.awt.event.PaintEvent[PAINT,updateRect=java.awt.Rectangle[x=111,y=23,width=1452,height=977]] on frame0: com.intellij.openapi.util.IconLoader$CachedImageIcon
java.lang.ClassCastException: com.intellij.openapi.util.IconLoader$CachedImageIcon
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTypeIcon(FileNodeRenderer.java:114)
at org.intellij.idea.dirdiff.view.FileNodeRenderer.getTreeCellRendererComponent(FileNodeRenderer.java:94)
at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)
at javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(Unknown Source)

0
Avatar
Permanently deleted user

Olivier DESCOUT wrote:

A "Compare Directories" plugin is now released.


I keep getting this error whenever I open a project:

action with the ID "DirectoryCompare_Include" was already registered.
Registered action is com.intellij.openapi.actionSystem.ActionStub@c4fedd
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:48)
at
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerAction(ActionManagerImpl.java:2)
at
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerAction(ActionManagerImpl.java:24)
at
org.intellij.idea.dirdiff.view.CompareDirectoryView$UI.getTreeNodePopupMenu(CompareDirectoryView.java:326)
at
org.intellij.idea.dirdiff.view.CompareDirectoryView$UI.createUI(CompareDirectoryView.java:296)
at
org.intellij.idea.dirdiff.view.CompareDirectoryView.addComponents(CompareDirectoryView.java:98)
at
org.intellij.idea.dirdiff.CompareDirectoryPlugin.projectOpened(CompareDirectoryPlugin.java:59)
at com.intellij.openapi.project.impl.ProjectImpl.c(ProjectImpl.java:189)
at
com.intellij.openapi.project.impl.ProjectImpl.access$200(ProjectImpl.java:163)
at
com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:1)
at
com.intellij.openapi.project.impl.ProjectManagerImpl$1.projectOpened(ProjectManagerImpl.java:19)
at
com.intellij.openapi.project.impl.ProjectManagerImpl.d(ProjectManagerImpl.java:134)
at
com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:281)
at
com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:164)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:4)
at com.intellij.idea.IdeaApplication.c(IdeaApplication.java:11)
at com.intellij.idea.IdeaApplication.access$400(IdeaApplication.java:52)
at
com.intellij.idea.IdeaApplication$IdeStarter$2.run(IdeaApplication.java:3)
at
com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:0)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at
com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:142)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:170)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:139)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

0
Avatar
Permanently deleted user

Thank you for your feedback.

I fixed these two IDEA-6.0-specific bugs and uploaded a new plugin release on the plugin repository today, which should work on any 5.x or 6.x versions of IntelliJ IDEA.

0
Avatar
Permanently deleted user

I get the following exception from the Compare Directories plugin if I
type the delete key in the Goto Class dialog.

Thanks,
Bas



com.intellij.ide.util.gotoByName.ChooseByNameBase$MyTextField cannot be
cast to javax.swing.JTree
java.lang.ClassCastException:
com.intellij.ide.util.gotoByName.ChooseByNameBase$MyTextField cannot be
cast to javax.swing.JTree
at
org.intellij.idea.dirdiff.action.PopupMenuAction.getSelectedNodes(PopupMenuAction.java:61)
at
org.intellij.idea.dirdiff.action.ExcludeAction.actionPerformed(ExcludeAction.java:28)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.a(IdeKeyEventDispatcher.java:213)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.b(IdeKeyEventDispatcher.java:121)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:129)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:115)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)



java.lang.ClassCastException:
com.intellij.ide.util.gotoByName.ChooseByNameBase$MyTextField cannot be
cast to javax.swing.JTree
at
org.intellij.idea.dirdiff.action.PopupMenuAction.getSelectedNodes(PopupMenuAction.java:61)
at
org.intellij.idea.dirdiff.action.ExcludeAction.actionPerformed(ExcludeAction.java:28)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.a(IdeKeyEventDispatcher.java:213)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.b(IdeKeyEventDispatcher.java:121)
at
com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:129)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:115)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


0
Avatar
Permanently deleted user

Thank you for everyone's feedback. You found several bugs I could not detect before.

I just released a new version on the plugin manager with a fix for every issue you submitted and also improvements on many aspects of the plugin: displaying, speed, stability, portability and an integrated on-line help page.

By the way, about the on-line help, if any of you know a better way to integrate the plugin help set than simply append it at the end of the IDEA help page index, please let me know, because I don't like the way it is done today (I couldn't even make the HREFs to IDEA help pages work).

Olivier.

0
Avatar
Permanently deleted user

A new version of the plugin has been released, including :

  • a fix about the issue described here[/url] (directories, whose name has the archive file type extension).

  • another fix related to key strokes (Bas, the Delete key works again in the "Go to class"/"Go to file"/... popup box).

0
Avatar
Permanently deleted user

Olivier DESCOUT wrote:

Bas, the Delete key works again
in the "Go to class"/"Go to file"/... popup box


Great! I'm installing this right now (which is not very easy with build
#5646).

Thanks,
Bas

0
Avatar
Permanently deleted user

Oliver, Let me know where I could download the plugin that caused this error:
"Plugin Compare Panes failed to initialize:"
"com.intellij.openapi.util.IconLoader$CachedImageIcon".
"Please Remove the plugin and restart IntelliJ IDEA."

I'm not able to launch IntelliJ 6.0 at all.
What actually plugin caused this error.
I've scanned all the *.jar files for this class/string, but haven't found any that correspond to it.

Thanks,
Oleg.

0
Avatar
Permanently deleted user

This is IDEA string. But looks like cause of this exception is changed icons set for idea. No other reason why it was working before 6.0 and failed after with such error.

0
Avatar
Permanently deleted user

I'm sorry, but "Compare Panes" and "Compare Directories" are two completely different plugins and I am not the owner or maintainer of the "Compare Panes" plugin, only the "Compare Directories" one.

If I may suggest you a way of getting rid of "Compare Panes" plugin without getting rid of its functionalities, just try the following:
- select the whole contents of the first pane to be compared and copy it (Ctrl-A then Ctrl-C)
- select the whole contents of the second pane to be compared (Ctrl-A), right-click and choose "Compare with clipboard".
A new window is then opened showing all the differences between the two selections in a far much better, nicer, more user-friendly and powerful way than what the old "Compare Panes" plugin could do. And this works with the standard IDEA 5 and 6, without any plugin, by the way.

0
Avatar
Permanently deleted user

A new version of the plugin has been released.

It includes the following new features:
- support for multiple comparisons
- ability to launch a new comparison from a directory comparison panel
- Copy-To-Left/Copy-to-Right file copy facility to help manual directory-change merging

0
Avatar
Permanently deleted user

let me tell once again that this plugin absolutely ROCKS !!

I used it again to do a merge of 2 projects, amounting to about 100Mbytes each, and it's really fast and so tightly integrated into IDEA it is a pleasure to use.

But let me make a feature request that should not be difficult to implement :
Would it be possible to add actions "copy left to right" and "copy right to left" even if the two versions exist ? The current version only allows it when the file only exists in one side.

0
Avatar
Permanently deleted user

A new version of the plugin has been released.

It includes the following new features and improvements:
- It is now working with IDEA-7 Selena
- As suggested above by Thibault, the "copy left to right" and "copy right to left" actions are now allowed on every file and directory (but when the copy target is in a Zip file). Side-only files on the copy target side may be deleted (or not) if requested.

The tight integration with IDEA is also improved:
- The tabbed pane of the plugin tool window is even more IDEA-like (especially with the usual IDEA context menu on every tab).
- If a compared file is changed using the IDEA editor or a IDEA diff window, the compared result is automatically refreshed when the editor or diff window is closed.

0
Avatar
Permanently deleted user

seems to work fine, Thanks for this update =)

0
Avatar
Permanently deleted user

The plugin did not work with IDEA 7.0 Milestone 2, due to changes in the way IDEA handles tabbed panes in tool windows.
This is now fixed and a new release is available in the plugin repository.

Olivier.

0
Avatar
Permanently deleted user

I'm still heavily using this plugin, and stumbled upon a small issue.

I currently use it to compare jar files, and it seems they're not closed when difference computation is accomplished. The real fact is i can't delete the jar before closing the compare tab.

0
Avatar
Permanently deleted user

Thank you for this feedback. I quickly looked at your issue and could reproduce it (quite easily actually). I'll try and get a fix in the next days.

Do you mind if I e-mail you the fixed plugin when I get one and ask you for beta-testing it before I release it on the JetBrains repository?

0
Avatar
Permanently deleted user

No I don't mind at all :)

0
Avatar
Permanently deleted user

Thibaut, you may download one of these plugin files for beta testing. Both should fix the issue.

For IDEA 5/6 : http://olivier.descout.club.fr/downloads/CompareDirectories_plugin_IDEA6.080217-v0.9.7.zip
For IDEA 7 : http://olivier.descout.club.fr/downloads/CompareDirectories_plugin_IDEA7.080217-v0.9.7.zip

0
Avatar
Permanently deleted user

trying it right now

0
Avatar
Permanently deleted user

good work, it doesn't prevent deleting any more.

I've tested further, once one of the compared files have been deleted, you can rerun the search and it works as expected.
But if you then recreate the previously deleted file and rerun the search, it seems the plugin can't see the differences any more : it shows both files as being identical, which they are not.

My suggestion : either display a message to the user notifying this tab should not be used anymore when you detect file have been deleted, or make it work ;)

0
Avatar
Permanently deleted user

The latter seems better to me. ;) I'll see what I can do about it.

0
Avatar
Permanently deleted user

just to be clear : when i say "rerun" i mean click on the green arrow button on the existing CompareDirectory tab (not starting a new search, which works completely fine)

0
Avatar
Permanently deleted user

Thanks for the piece of info. Though in theory, there is no difference between "rerun" and "run a new" (except that the former case reuses an already opened panel) : compared directories are both fully rescanned before their files are compared. I suspect it is related to the IDEA file caching system. But the fact that one case works and the other doesn't is definitely a very good starting hint to try and fix it.

0
Avatar
Permanently deleted user

just found a new "bug" :)
This seems to happen when trying to copy files and the copy fails (i guess in my case because the target file was read only, i was copying the right file on the left one)

2008-03-19 13:25:11,030 ERROR - ellij.openapi.ui.DialogWrapper - Assertion failed: Access is allowed from event dispatch thread only
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:74)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:813)
at com.intellij.openapi.ui.Messages.showDialog(Messages.java:83)
at com.intellij.openapi.ui.Messages.showErrorDialog(Messages.java:187)
at org.intellij.idea.dirdiff.action.CopyAsAction$CopyThread.doCopyLeftRightFile(CopyAsAction.java:386)
at org.intellij.idea.dirdiff.action.CopyAsAction$CopyThread.run(CopyAsAction.java:300)
2008-03-19 13:25:11,061 ERROR - ellij.openapi.ui.DialogWrapper - IntelliJ IDEA 7.0.3 Build #7757
2008-03-19 13:25:11,061 ERROR - ellij.openapi.ui.DialogWrapper - JDK: 1.6.0_04
2008-03-19 13:25:11,061 ERROR - ellij.openapi.ui.DialogWrapper - VM: Java HotSpot(TM) Server VM
2008-03-19 13:25:11,061 ERROR - ellij.openapi.ui.DialogWrapper - Vendor: Sun Microsystems Inc.
2008-03-19 13:25:11,061 ERROR - ellij.openapi.ui.DialogWrapper - OS: Windows XP
2008-03-19 13:25:11,077 ERROR - pplication.impl.LaterInvocator - Assertion failed: enterModal() should be invoked in event-dispatch thread
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.application.impl.LaterInvocator.enterModal(LaterInvocator.java:33)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:22)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:813)
at com.intellij.openapi.ui.Messages.showDialog(Messages.java:83)
at com.intellij.openapi.ui.Messages.showErrorDialog(Messages.java:187)
at org.intellij.idea.dirdiff.action.CopyAsAction$CopyThread.doCopyLeftRightFile(CopyAsAction.java:386)
at org.intellij.idea.dirdiff.action.CopyAsAction$CopyThread.run(CopyAsAction.java:300)
2008-03-19 13:25:11,092 ERROR - pplication.impl.LaterInvocator - IntelliJ IDEA 7.0.3 Build #7757
2008-03-19 13:25:11,092 ERROR - pplication.impl.LaterInvocator - JDK: 1.6.0_04
2008-03-19 13:25:11,092 ERROR - pplication.impl.LaterInvocator - VM: Java HotSpot(TM) Server VM
2008-03-19 13:25:11,092 ERROR - pplication.impl.LaterInvocator - Vendor: Sun Microsystems Inc.
2008-03-19 13:25:11,092 ERROR - pplication.impl.LaterInvocator - OS: Windows XP

edit : Bad thing, is that this completely freezes IDEA with an error dialog that is impossible to close

Edited by: Thibaut on Mar 19, 2008 1:35 PM

0
Avatar
Permanently deleted user

This error was an easy one. At least, the error in DialogWrapper ("Assertion failed: Access is allowed from event dispatch thread only").
I fixed every single message the plugin shows in an error/warning message box; none of them shall make such an error now.

The IDEA freeze scares me a bit more. I can't see why a bare not-in-the-Swing-event-dispatch-thread error would freeze the whole app (well, usually it doesn't).

By the way, regarding the previous fix (about the zip file locking): did you get any further zip file locking with the fix I sent you? Because on my machine, some few zip files are still locked (even worse: they are locked by the IDEA process, meaning that I have to quit IDEA to get the file lock released!). And I'm still trying to find out why some zip files are still locked and others aren't (that's why I didn't publish the plugin on the IntelliJ repository by the way).

0
Avatar
Permanently deleted user

Gotcha! That locking bug was a pretty nasty one!
Now it's fixed and I should be able to publish this new release of the plugin quite soon.

But before that, I would like you to check the way the plugin handles copies on read-only files. Is it fine for you?
You may download the latest plugin version here.

Thanks,
Olivier.

0
Avatar
Permanently deleted user

sorry i'm away from the office for 2 weeks , so i won't be able to get back to you before a while.

But I've noticed the same as you : sometimes some of my files are locked by the idea process, but i'm not sure if this is related to your plugin or not.

Just to make sure, when i reported a "freeze", the exact behaviour is that the error modal dialog can't be dismissed (clicking on OK doesn't do anything) and as it can't be closed and is modal, only way to get over is to close IDEA.

0
Avatar
Permanently deleted user

Hi Olivier,

Sorry for the late reply, I completely forgot I was to check and reply to this after coming back from vacations !
I just checked, and it seems to work much better now, the plugin even displays a nice message if the target of a "copy file" operation is read only, nice job

Especially, the modal dialog bug seems to have been corrected

0

请先登录再写评论。