[ https://issues.apache.org/jira/browse/FELIX-249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tim Moloney updated FELIX-249: ------------------------------ Attachment: shell.gui.plugin-shutdown-choice-2.patch Another possible solution that allows shutting down with just one mouse click. Unfortunately, it always causes the following stack track. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at org.apache.felix.shell.gui.impl.ShellPanel$SimpleListModel.getElementAt(ShellPanel.java:120) at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:191) at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:304) at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:227) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143) at javax.swing.JComponent.paintComponent(JComponent.java:758) at javax.swing.JComponent.paint(JComponent.java:1022) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JViewport.paint(JViewport.java:747) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5104) at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285) at javax.swing.RepaintManager.paint(RepaintManager.java:1132) at javax.swing.JComponent._paintImmediately(JComponent.java:5052) at javax.swing.JComponent.paintImmediately(JComponent.java:4862) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:727) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:683) at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:663) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Invalid BundleContext. at org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:458) at org.apache.felix.framework.BundleContextImpl.getServiceReference(BundleContextImpl.java:257) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.shutdown(ShutdownPlugin.java:57) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.getGUI(ShutdownPlugin.java:44) at org.apache.felix.shell.gui.impl.ShellPanel$PropertyChangeRunnable.run(ShellPanel.java:157) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Invalid BundleContext. at org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:458) at org.apache.felix.framework.BundleContextImpl.getServiceReference(BundleContextImpl.java:257) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.shutdown(ShutdownPlugin.java:57) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.getGUI(ShutdownPlugin.java:44) at org.apache.felix.shell.gui.impl.ShellPanel$PropertyChangeRunnable.run(ShellPanel.java:157) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Invalid BundleContext. at org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:458) at org.apache.felix.framework.BundleContextImpl.getServiceReference(BundleContextImpl.java:257) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.shutdown(ShutdownPlugin.java:57) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.getGUI(ShutdownPlugin.java:44) at org.apache.felix.shell.gui.impl.ShellPanel$PropertyChangeRunnable.run(ShellPanel.java:157) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Invalid BundleContext. at org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:458) at org.apache.felix.framework.BundleContextImpl.getServiceReference(BundleContextImpl.java:257) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.shutdown(ShutdownPlugin.java:57) at org.apache.felix.shell.gui.plugin.ShutdownPlugin.getGUI(ShutdownPlugin.java:44) at org.apache.felix.shell.gui.impl.ShellPanel$PropertyChangeRunnable.run(ShellPanel.java:157) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) > Add a shutdown button to the shellGUI > ------------------------------------- > > Key: FELIX-249 > URL: https://issues.apache.org/jira/browse/FELIX-249 > Project: Felix > Issue Type: Improvement > Reporter: Tim Moloney > Priority: Trivial > Attachments: shell.gui.plugin-shutdown-choice-1.patch, > shell.gui.plugin-shutdown-choice-2.patch > > > Add a shutdown button to the shellGUI to make shutting down a bit more > convenient. Presently, you have to click on the Shell panel selector, then > click on the shell command entry box, then type shutdown. Adding a button > would reduce this to just a mouse click or two. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.