This problem is typically encountered during a fresh install of
LateralGM on Linux, when the
user attempts to Edit a sprite subimage, a
background image, or a
sound's data. The user will click the button, and
the program will pause for a very brief moment, and then the program
will seem to behave as though the user never clicked the button.
Note that this problem can be avoided entirely by following the
#Workaround before ever attempting to edit
any images in LateralGM.
The keen user might notice the terminal will dump the following lovely
stack
trace:
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: no internal or system sprite editor
at org.lateralgm.subframes.SpriteFrame$ImageEditor.start(SpriteFrame.java:1054)
at org.lateralgm.subframes.SpriteFrame$ImageEditor.<init>(SpriteFrame.java:1042)
at org.lateralgm.subframes.SpriteFrame.editSubimage(SpriteFrame.java:988)
at org.lateralgm.subframes.SpriteFrame.handleToolbarEvent(SpriteFrame.java:834)
at org.lateralgm.subframes.SpriteFrame.actionPerformed(SpriteFrame.java:819)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.UnsupportedOperationException: The EDIT action is not supported on the current platform!
at java.awt.Desktop.checkActionSupport(Desktop.java:225)
at java.awt.Desktop.edit(Desktop.java:300)
at org.lateralgm.subframes.SpriteFrame$ImageEditor.start(SpriteFrame.java:1050)
... 40 more
The two unindented lines are the ones that tell the story:
UnsupportedOperationException: no internal or system sprite editor
Caused by: UnsupportedOperationException: The EDIT action is not supported on the current platform!
The Stack Trace Exception is just telling you that you have specified
that LGM should use an external sprite editor (the default behavior for
LGM), but your operating system/platform does not support the EDIT
action. This is a known Java bug
7035369
that affects Linux platforms (especially Debian-based).
Unfortunately, the bug has been there for ages, and it doesn't seem like
any effort is being put into correcting it, so we have to provide a
workaround. Since there's not a nice way to figure out what your image
editor on Linux is (the nice way would have been the EDIT action...),
and we cannot assume that you have a specific editor installed (we used
to assume the GIMP, but Ubuntu stopped shipping with that, so now Ubuntu
pretty much doesn't have an image editor), which means that you, the
user, must specify a desired image editor.
LateralGM allows you to specify a desired resource editor in its
Settings/Preferences. Please see Overriding
settings. The properties that you would
wish to modify are:
And a typical value for, say, Gimp, would be: gimp %s
A long term solution is planned by simply providing an image editor with
LateralGM (similar to what Game Maker does). In order for it to be
included, however, it would need to meet several criteria.
Seeing as we've pretty much ruled out every image editor in existence,
this leaves the final solution: build our own. And that's exactly what
we've proposed. Enter Java Easy Image Editor (JEIE).
Wiki: Background_editor_error
Wiki: Java
Wiki: LateralGM
Wiki: Linux
Wiki: No_internal_or_system_sprite_editor
Wiki: Overriding_settings
Wiki: Sound_editor_error
Wiki: Sprite_editor_error