Authors:
nedski
Apache

Changes Bar

Products: IntelliJ IDEA

Vendor: Nathan Brown

Email:

Website: N/A

SourceCode: Changes_Bar_1191.zip

Description:

Enhancement to Changes UI in IDEA, including Status bar based UI for Changes

This plugin has two main functions. Firstly it improves the interaction with Changelists, bringing some of the Changelist UI up to the main frame level by adding a status bar section for Changelist management. Here the currently selected default Changelist can be both seen and selected by a popup list, and a new Changelist may also be created. This helps the user to know exactly which Changelist they are working in at a glance, and thus avoid making modifications to files outside of the appropriate Changelist. Also the plugin (optionally) adds support for editing the comment of the Changelist which is selected in the Changes toolwindow, and supports Undo/Redo - something that the editor of the commit dialog does not, until version 7.

The other function of the plugin is to help manage Changelist 'collisions'. These occur when a file is modified first when one Changelist is selected and then is subsequently modified when another Changelist is selected. This can often happen when wide ranging edits are done, such as name or signature refactoring.

Changes Bar helps in collision situations by moving files which have been involved in a collision into a new autogenerated Changelist. This means that upon checkin, there is a record of collisions, and these can be dealt with appropriately.

The Changes Bar also alerts the user whenever a collision occurs by displaying a warning icon in the status bar, and (optionally) showing a popup. Once clicked this will clear the warning and open the Changes toolwindow for perusal of the detected problem.
Since 1.6, automation features are available when switching active Changelists, both to close files from other changelists and to automatically open all files from the newly selected Changelist. The plugin also adds an 'Active Changelist Scope' to the system scopes list, which can be employed anywhere that scopes are used, e.g. Inspection profiles, or in the project view.
Options can be modified in the Changes Bar section of the IDE Options area.
Downloads: 14119
Rating:
Participated in rating: 6
Version Since Build Until Build File/URL Size (Kb) Date Details
1.7.8. 80.8987. 85.*. Download 121.19 2009-04-28 15:28:49 details
1.6.3. 69.7126. . Download 123.5 2008-02-11 01:51:26 details
1.5. 60.6808. . Download 111.2 2007-08-06 15:38:43 details
1.1. 55.5766. . Download 31.07 2006-11-08 02:13:36 details
. .
16 updates are hidden show all updates

Recent change notes:

1.7.8 - Fixed exception when auto-closing files
1.7.7 - Added extension support for integration with CommitLog plugin
1.7.6 - Fixed deadlock
- Improved comment saving to occur on focus loss only and hopefully avoid loss of text
1.7.5 - Updated to work with 8.1 EAP
1.7.4 - Fixed another deadlock when conflict resolved
1.7.3 - Fixed a deadlock when conflict resolved
1.7.2 - Fixed an UnsupportedOperationException introduced
1.7.1 - Fixed a couple of NPEs introduced
1.7 - Update for Idea Version 8.0 (Diana)
- Now utilises Diana's built in Balloon popups
- Improved false alarms during VCS operations - plugin now checks for background VCS operations before displaying alert
1.6.3 - Fix for Assertion and NPE exceptions
1.6.2 - Fix to NPE in 'Active Changelist Scope'
- Collision detection now disabled during VCS commit
- Added code to cleanup old empty collision changelists if detected
1.6.1 - Rebuilt for compatibility with 1.5 JRE
1.6 - Added 'Active Changelist Scope' to system scopes list
- Added new Automation features for when switching active changelist : "Close files from other Changelists" and "Open files from activated Changelist"
- Fixed colour scheme issue with idea default look and feel.
1.5.2 - Fixed bug where the commit comment editor was attempting to be added to a disposed project. This should also fix the "Directory index is not initialized yet." error reported when using ClearCase.
Codebase now under source control in Google Code.
1.5.1 - Local Changes tab now focused when alert button/tip clicked, and conflict changelist is selected and expanded.
1.5 - Added Undo/Redo support to Commit Comment editor on Changes window
Fix to ensure file count on Changes Bar is kept more up to date
Changes Bar is not installed for projects that don't have a VCS configured - Note: the project must be closed and re-opened to enable Changes Bar if a VCS is configured Fix to stop Changes Bar holding on to a Project after a Project is closed. (Thanks to Taras Tielkes for reporting)
1.4 - Rendered conflict changelists in red with icon, to assist distinguishing of conflict changelists.
Removed conflict changelists from Changes Bar selection list, and ensured correct placement
Improved configuration gui
1.3.1 - Added title to Changelist selection popup to solve SpeedSearch box hiding first entry
1.3 - Added 'Message History' button to comment area of Changes window
Fixed multiple popups showing when multiple collisions occur.
1.2.3 - Fixed NPE seen when opening new project sometimes
1.2.2 - Restricted to Builds 6808 and later - new functionality since 1.2 not compatible with Idea 6.0
1.2.1 - Made comment editor show in Changes toolwindow by default
Fixed repaint issue in comment editor border when selecting Changelists
Added default text for New Changelist action text in cases that it isn't present in locale.
1.2 - Added support for Popup alert upon collision detection
Added support for comment box in Changes toolwindow
Added Changes Bar section to IDE Options
Recompiled for Selena (IDEA 7)
1.1 - Added support for cascading collisions
Added support for Error Reporting (using Etienne Studer's PluginErrorReportSubmitter)
Made valid only for IDEA 6.0 and above
1.0 - Initial Version

General usage instructions:

This plugin has two main functions. Firstly it brings some of the Changelist UI up to the main frame level, by adding a status bar section for Changelist management. Here the currently selected default Changelist can be both seen and selected by a popup list, and a new Changelist may also be created. This helps the user to know exactly which Changelist they are working in at a glance, and thus avoid making modifications to files outside of the appropriate Changelist.



The other function of the plugin is to help manage Changelist \'collisions\'. These occur when a file is modified first when one Changelist is selected and then is subsequently modified when another Changelist is selected. This can often happen when wide ranging edits are done, such as name or signature refactoring.



Changes Bar helps in collision situations by moving files which have been involved in a collision into a new autogenerated Changelist, with a name of the form [ORIGINAL]>!!<[CURRENT] where ORIGINAL and CURRENT are the original and currently selected Changelist names, respectively. This means that upon checkin, there is a record of collisions, and these can be dealt with appropriately.



Changes Bar also alerts the user whenever a collision occurs by displaying a warning icon in the status bar. Once clicked this will clear the warning and open the Changes toolwindow for perusal of the detected problem.

Comments:

Anonymous
2009-07-29 15:55:58
DEADLOCK in 9.0M1 whith two open projects

"Change List Updater" prio=10 tid=0x634bd400 nid=0x4e2d waiting for monitor entry [0x665fe000..0x665ff0b0]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.awt.Component.enable(Component.java:1342)
- waiting to lock (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.enable(JComponent.java:3563)
at java.awt.Component.enable(Component.java:1366)
at java.awt.Component.setEnabled(Component.java:1331)
at javax.swing.JComponent.setEnabled(JComponent.java:2647)
at javax.swing.AbstractButton.setEnabled(AbstractButton.java:2064)
at javax.swing.JMenuItem.setEnabled(JMenuItem.java:294)
at javax.swing.AbstractAction.setEnabledFromAction(AbstractAction.java:85)
at javax.swing.AbstractButton.actionPropertyChanged(AbstractButton.java:1196)
at javax.swing.JMenuItem.actionPropertyChanged(JMenuItem.java:393)
at javax.swing.AbstractButton$ButtonActionPropertyChangeListener.actionPropertyChanged(AbstractButton.java:1343)
at javax.swing.AbstractButton$ButtonActionPropertyChangeListener.actionPropertyChanged(AbstractButton.java:1332)
at javax.swing.ActionPropertyChangeListener.propertyChange(ActionPropertyChangeListener.java:71)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:75)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at javax.swing.AbstractAction.firePropertyChange(AbstractAction.java:254)
at javax.swing.AbstractAction.setEnabled(AbstractAction.java:214)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent$UndoAction.update(ChangesBarProjectComponent.java:1049)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.updateCommentEditorUndoRedoActions(ChangesBarProjectComponent.java:460)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.access$2300(ChangesBarProjectComponent.java:57)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent$12.undoableEditHappened(ChangesBarProjectComponent.java:425)
at javax.swing.text.AbstractDocument.fireUndoableEditUpdate(AbstractDocument.java:270)
at javax.swing.text.AbstractDocument.handleRemove(AbstractDocument.java:612)
at javax.swing.text.AbstractDocument.remove(AbstractDocument.java:576)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:652)
at javax.swing.text.JTextComponent.setText(JTextComponent.java:1693)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.setCommentEditorText(ChangesBarProjectComponent.java:214)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.updateCommentEditor(ChangesBarProjectComponent.java:719)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.changeListCommentChanged(ChangesBarProjectComponent.java:711)
at sun.reflect.GeneratedMethodAccessor97.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:88)
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:34)
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:65)
at $Proxy50.changeListCommentChanged(Unknown Source)
at com.intellij.openapi.vcs.changes.local.EditComment.doNotify(EditComment.java:11)
at com.intellij.openapi.vcs.changes.DelayedNotificator$1.run(DelayedNotificator.java:2)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
.
Anonymous
Rated:
2009-04-28 12:29:06
Exception is thrown when changing from one changelist to another and Changes Bar tries to close files in the editor. (IntelliJ IDEA 8.1 Build #9732 - Changes Bar 1.7.7)

java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:52)
at com.intellij.openapi.application.impl.ApplicationImpl.a(ApplicationImpl.java:51)
at com.intellij.openapi.application.impl.ApplicationImpl.assertIsDispatchThread(ApplicationImpl.java:140)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.a(FileEditorManagerImpl.java:267)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFile(FileEditorManagerImpl.java:410)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.closeFilesIfNecessary(ChangesBarProjectComponent.java:525)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.access$2800(ChangesBarProjectComponent.java:59)
at com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent$ChangeListAdapter.defaultListChanged(ChangesBarProjectComponent.java:905)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:87)
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:33)
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:64)
at $Proxy48.defaultListChanged(Unknown Source)
at com.intellij.openapi.vcs.changes.local.SetDefault.doNotify(SetDefault.java:1)
at com.intellij.openapi.vcs.changes.DelayedNotificator$1.run(DelayedNotificator.java:2)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
.
Anonymous
Rated:
2009-02-26 12:39:32
DeadLock in CommitChanges - Dialog:

this issue can be reproduced mostly,


1. commit a change
2. in the commit changes dialog edit the textarea
3. press the commit button
4. sometimes a deadlock appears


@see jtack snippet below, for a full stack see changesbar at google issues


-----
"Change List Updater" prio=10 tid=0x695ee800 nid=0x3333 waiting for
monitor entry [0x69ea6000..0x69ea7130]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.awt.Component.enable(Component.java:1342)
- waiting to lock (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.enable(JComponent.java:3563)
at java.awt.Component.enable(Component.java:1366)
at java.awt.Component.setEnabled(Component.java:1331)
at javax.swing.JComponent.setEnabled(JComponent.java:2647)
at javax.swing.AbstractButton.setEnabled(AbstractButton.java:2064)
at javax.swing.JMenuItem.setEnabled(JMenuItem.java:294)
at
javax.swing.AbstractAction.setEnabledFromAction(AbstractAction.java:85)
at
javax.swing.AbstractButton.actionPropertyChanged(AbstractButton.java:1196)
at javax.swing.JMenuItem.actionPropertyChanged(JMenuItem.java:393)
at
javax.swing.AbstractButton$ButtonActionPropertyChangeListener.actionPropertyChanged(AbstractButton.java:1343)
at
javax.swing.AbstractButton$ButtonActionPropertyChangeListener.actionPropertyChanged(AbstractButton.java:1332)
at
javax.swing.ActionPropertyChangeListener.propertyChange(ActionPropertyChangeListener.java:71)
at
java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at
javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:75)
at
java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at javax.swing.AbstractAction.firePropertyChange(AbstractAction.java:254)
at javax.swing.AbstractAction.setEnabled(AbstractAction.java:214)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent$UndoAction.update(ChangesBarProjectComponent.java:1114)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.updateCommentEditorUndoRedoActions(ChangesBarProjectCompon
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.access$2400
(ChangesBarProjectComponent.java:58)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent$13.undoableEditHappened(ChangesBarProjectComponent.java:45
at
javax.swing.text.AbstractDocument.fireUndoableEditUpdate(AbstractDocument.java:270)
at
javax.swing.text.AbstractDocument.handleRemove(AbstractDocument.java:612)
at javax.swing.text.AbstractDocument.remove(AbstractDocument.java:576)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:652)
at javax.swing.text.JTextComponent.setText(JTextComponent.java:1693)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.setCommentEditorText(ChangesBarProjectComponent.java:230)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.updateCommentEditor(ChangesBarProjectComponent.java:788)
at
com.anecdote.ideaplugins.changesbar.ChangesBarProjectComponent.changeListCommentChanged(ChangesBarProjectComponent.java:7
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:87)
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:33)
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:64)
at $Proxy49.changeListCommentChanged(Unknown Source)
at
com.intellij.openapi.vcs.changes.local.EditComment.doNotify(EditComment.java:11)
at
com.intellij.openapi.vcs.changes.DelayedNotificator$1.run(DelayedNotificator.java:2)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301
(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)


Locked ownable synchronizers:
- (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
.
Anonymous
Rated:
2008-10-26 03:57:52
the best
.
Anonymous
Rated:
2007-08-16 00:38:59
.
Anonymous
Rated:
2007-08-04 22:10:27
This is the best plugin for IntelliJ IDEA.
.
dgriffit
Rated:
2006-12-29 17:26:17
Wonderful!
.