It's real cool:-)

85 views
Skip to first unread message

Sherman

unread,
Sep 19, 2011, 8:32:28 PM9/19/11
to Sea Glass Look and Feel
Ocean blue is always my favorite color, so naturally I'm really
impressed by this cool Look&Feel. I pulled it into my little archiver
tool, and really like it. Here are some issues I have found so far.

(1) the rollover on the toolbar seems no longer work.
(2) setFont seems not work on JTree, while it works fine for JTable
and TextPane. (my app
can increase the font size for both the JTable view and a JTree view,
but it appears the font
size does not change in JTree. Here is a snapshot, you can see the
font in left treeview is not
increased compared to the rightside table view (I'm adding space as
well when increasing the font, so the whole tree appears to be
strange, when font size is not changed)
http://javazip.org/lookfeel/seaglass/seaglass.jpg
(3) the look&feel works fine on my Windows, but throwing bunch of null
pointer exceptions
on myold MacOS 5.8 with java 1.6.0.u26. I attached the exception at
the end of the post
(4) the whole package appears to be "too big", compared to my little
app which is around
600K only:-) OK, this is not a real issue at all.


-Sherman

---------------------------------------------------------------------------------------------------------------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at
javax.swing.SizeRequirements.calculateTiledPositions(SizeRequirements.java:
295)
at javax.swing.BoxLayout.layoutContainer(BoxLayout.java:408)
at java.awt.Container.layout(Container.java:1421)
at java.awt.Container.doLayout(Container.java:1410)
at java.awt.Container.validateTree(Container.java:1507)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validate(Container.java:1480)
at
javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:
669)
at javax.swing.SystemEventQueueUtilities
$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:
209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
296)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
211)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
205)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:853)
at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:650)
at com.javazip.ZipWindow.error(Unknown Source)
at com.javazip.ZipWindow.setLookAndFeel(Unknown Source)
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
org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:
662)
at
org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:
698)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
2028)
at javax.swing.AbstractButton
$Handler.actionPerformed(AbstractButton.java:2351)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:
387)
at javax.swing.JToggleButton
$ToggleButtonModel.setPressed(JToggleButton.java:291)
at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
at
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:
809)
at javax.swing.plaf.basic.BasicMenuItemUI
$Handler.mouseReleased(BasicMenuItemUI.java:850)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:
272)
at java.awt.Component.processMouseEvent(Component.java:6373)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6138)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4735)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:
4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:
4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
296)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
211)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
201)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at
com.apple.laf.AquaMenuPainter.paintMenuBarBackground(AquaMenuPainter.java:
140)
at com.apple.laf.AquaMenuBarUI.paint(AquaMenuBarUI.java:51)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:153)
at javax.swing.JComponent.paintComponent(JComponent.java:752)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent._paintImmediately(JComponent.java:5098)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:811)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at
javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:
693)
at javax.swing.SystemEventQueueUtilities
$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:
209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
296)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
211)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
205)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:853)
at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:650)
at com.javazip.ZipWindow.error(Unknown Source)
at com.javazip.ZipWindow.setLookAndFeel(Unknown Source)
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
org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:
662)
at
org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:
698)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
2028)
at javax.swing.AbstractButton
$Handler.actionPerformed(AbstractButton.java:2351)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:
387)
at javax.swing.JToggleButton
$ToggleButtonModel.setPressed(JToggleButton.java:291)
at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
at
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:
809)
at javax.swing.plaf.basic.BasicMenuItemUI
$Handler.mouseReleased(BasicMenuItemUI.java:850)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:
272)
at java.awt.Component.processMouseEvent(Component.java:6373)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6138)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4735)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:
4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:
4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
296)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
211)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
201)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Rossi

unread,
Sep 20, 2011, 2:08:11 PM9/20/11
to sea-glass-l...@googlegroups.com
Hello Sherman,

You can try the TRUNK version from the repository. It contains a ton of bug
fixes.
I will have a look at the reported issues and fix the errors that are still
there in TRUNK. (most likely on the comming weekend)

Have fun,

- Rossi

> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.jav

> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.jav

Eugene Kononov

unread,
Sep 20, 2011, 6:43:43 PM9/20/11
to sea-glass-l...@googlegroups.com

You can try the TRUNK version from the repository. It contains a ton of bug
fixes.

Is there a plan to make a new release? I am not sure I want to build this thing myself.

Kathryn Huxtable

unread,
Sep 20, 2011, 7:03:25 PM9/20/11
to sea-glass-l...@googlegroups.com
Yes, as soon as Rossi tells me he's ready, we'll make a new release. -K

Kathryn Huxtable

unread,
Sep 20, 2011, 10:05:39 PM9/20/11
to sea-glass-l...@googlegroups.com
And what version shall we make it? The most recent one on Maven central is 0.1.7.3. Should this be version 0.2? -K

Rossi

unread,
Sep 26, 2011, 3:42:22 PM9/26/11
to sea-glass-l...@googlegroups.com
Hello,

I had a look into the issues that Sherman has reported.
The rollover effect for menubars is not implemented yet but will come
in a future release. Hopefully soon. So it is a missing feature.
We have only very limited mouse over effects at the moment but it is on
the todo list.

The problem with the JTree was a bug. I fixed this issue.
If you set a font for the default renderer then it will use that one
and ignore font settings of the JTree. This was the case here.
Setting the font of the default renderer to null solved the issue.
The fix is in the trunk.

Eugene asked when we will do a new release. Hopefully soon but not as soon as
I hoped. I fixed some last issues that would have been a blocker for Windows
and Linux (round frame corners and transparency issues). So it looks OK now on
Windows and Linux.
But based on your stack traces posted by Sherman I did some testing on OSX and
it seems there something is broken with menues. Seems to be OSX JVM specific.

I want to fix this before we do an offical new release or seaglass will be
broken on OSX but unfortunately I have no access to OSX for development but
just for testing from time to time.

I will try to get OSX into a VM to fix the issue in the next days.

For the version I would favor to increment the version number to 0.2 as this
brings a lot of changes and also some visual differences to the current
version.

During the last weeks I realized that even for small changes I had to test
things again and again on windows, linux and (very rarely) on osx.
This took in the end more time than the development.

Because of this I started a new project to build a visual JUNIT testing
framework. This is what I spend my time for in the last weeks.

It is nearly finished and works already good. It renders a "renderable" object
and compares it to a reference image. It has features to mark areas of
interest and to exclude areas that should not be compared.

It plugs into Junit so the tests can run automated. I'm currently working on a
HTML report feature to visually show the reference image in comparision to the
test output.

Once this is finished I will build a regression test suite for seaglass to
spend more time on developing instead of testing ;-)

If you want to have a sneak preview and help with testing you can find the
latest version packaged as JAR at:

http://www.rosstauscher.de/seaglasslookandfeel-beta.jar

Thats it for now. Any feedback is welcome.

Have fun,
- Rossi

Reply all
Reply to author
Forward
0 new messages