While testing I noticed that the foreground color was not being respected. The foreground color should change the color of the annotations/reads but it changed the track label instead.
Also, a null pointer exception was generated when changing the color settings under the Annotation tab (see exception below).
Moving back to To-Do column.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.affymetrix.igb.action.ChangeColorActionA.performAction(ChangeColorActionA.java:97)
at com.affymetrix.igb.shared.Actions.setLabelColor(Actions.java:44)
at com.affymetrix.igb.shared.StylePanelImpl.labelColorComboBoxActionPerformedA(StylePanelImpl.java:85)
at com.affymetrix.igb.shared.StylePanel.labelColorComboBoxActionPerformed(StylePanel.java:146)
at com.affymetrix.igb.shared.StylePanel$$Lambda$125/987834065.actionPerformed(Unknown Source)
at com.jidesoft.combobox.AbstractComboBox.fireActionEvent(Unknown Source)
at com.jidesoft.combobox.AbstractComboBox.setSelectedItem(Unknown Source)
at com.jidesoft.combobox.ColorComboBox.setSelectedItem(Unknown Source)
at com.jidesoft.combobox.AbstractComboBox.setSelectedItem(Unknown Source)
at com.jidesoft.combobox.AbstractComboBox$3.itemStateChanged(Unknown Source)
at com.jidesoft.combobox.PopupPanel.fireItemStateChanged(Unknown Source)
at com.jidesoft.combobox.PopupPanel.setSelectedObject(Unknown Source)
at com.jidesoft.combobox.PopupPanel.setSelectedObject(Unknown Source)
at com.jidesoft.combobox.ColorChooserPanel.setSelectedColor(Unknown Source)
at com.jidesoft.combobox.ColorChooserPanel$d_.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at com.jidesoft.plaf.basic.BasicJideButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(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)
My testing verifies that IGB is still stable and operating as expected after the refactoring. Since this story is resolved it will now be closed.