Git Product home page Git Product logo

insubstantial's Introduction

To Whom It May Concern:

Insubstantial is currently not releasing any more builds and is actively looking for a new maintainer. It could be you!


This is a fork of several of Kirill Grouchnikov's Java Swing libraries.

BuildHive status: Build Status

##To perform a full release

###Prerequisites You need to have your GPG keys set up and your sonatype password handy. To set up your GPG key set this in your `~/.gradle/gradle.properties (you will need to replace ABCDEF12 and password with your key ID and password).

signing.keyId=ABCDEF12
signing.password=password
signing.secretKeyRingFile=~/.gnupg/secring.gpg

If you are alergic to storing passwords on the file system, the passwords can be passed into the command line of your gradle invocation via the -Dsigning.password=password flag. If you have no such allergies you can also store your sonatype credentails

sonatypeUsername=username
sonatypePassword=password

###The Release Build

  1. Update the version in the root build.gradle file to remove the SNAPSHOT. There should be two locations.
  2. Commit the change to git
  3. perform the build: gradle clean githubDist uploadPublished
  4. Perform smoke testing so you are sure you are happy with the bits.
  5. Upload jars to the github site
  6. Go to oss.sonatype.org and close and release the repo
  7. Bump the version numbers in the root build.gradle, being sure to add SNAPSHOT
  8. Commit the change to git
  9. Push changes to github
  10. After the jars appear in the central repo, post release notes

insubstantial's People

Contributors

apri1 avatar cmadsen avatar erichschroeter avatar g-pechorin avatar kharybdys avatar kirill-grouchnikov avatar kschaefe avatar nroduit avatar shemnon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

insubstantial's Issues

SwingX prompt controls not working correctly

Hi.

When I use a SwingX control with prompt support (like JXTextField) AND I set a prompt, instead of this (new JXTextField without prompt set):

good

I get this (new JXTextField with prompt set):

bad

(different size is not the issue, of course, but the different border and font). It seems that Substance-SwingX doesn't have an implementation of BuddyTextFieldUI or something similar.

Setting the Ribbon App Icon too frequently can cause deadlock

If you update the application icon too frequently (more than 100hz between just two changes, not necessarily a sustained rate) you run the risk of deadlocking the app.

The solution is to place all of the change icon requests in a single threaded queue so the previous requests will end before the next request starts.

TitledBorder problem with Substance UI and custom JComponent

I'm using BorderFactory to create a titled border with a Substance UI themed Swing user interface, and I'm coming across the exception shown below. I tried with LineBorder and it works perfectly, but it appears that Substance UI is interfering somehow with TitledBorder. The border drawing is done in paintComponent via:

if (getBorder() != null) {
getBorder().paintBorder(this, g, 0, 0, getWidth(), getHeight());
}

A workaround is to create a parent JPanel and setting it on that instead, which seems like a bit of a cop-out.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.pushingpixels.lafwidget.utils.RenderingUtils.desktopHints(RenderingUtils.java:113)
at org.pushingpixels.lafwidget.utils.RenderingUtils.installDesktopHints(RenderingUtils.java:85)
at org.pushingpixels.substance.internal.utils.border.SubstanceEtchedBorder.paintBorder(SubstanceEtchedBorder.java:132)
at javax.swing.border.TitledBorder.paintBorder(TitledBorder.java:330)
at javax.swing.JComponent.paintBorder(JComponent.java:947)
at javax.swing.JComponent.paint(JComponent.java:1055)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5213)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1493)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1424)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1951)
at java.awt.Window.paint(Window.java:3814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:792)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:739)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:688)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1632)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:660)
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)

NPE at SubstanceColorUtilities.getInterpolatedRGB()

I get this exception under Insubstance 7.0:


java.lang.NullPointerException
    at org.pushingpixels.substance.internal.utils.SubstanceColorUtilities.getInterpolatedRGB(SubstanceColorUtilities.java:154)
    at org.pushingpixels.substance.internal.utils.SubstanceColorUtilities.getInterpolatedColor(SubstanceColorUtilities.java:193)
    at org.pushingpixels.substance.internal.utils.SubstanceTextUtilities.getForegroundColor(SubstanceTextUtilities.java:382)
    at org.pushingpixels.substance.internal.utils.SubstanceTextUtilities.paintText(SubstanceTextUtilities.java:317)
    at org.pushingpixels.substance.internal.ui.SubstanceLabelUI.paint(SubstanceLabelUI.java:179)
    at org.pushingpixels.substance.internal.ui.SubstanceLabelUI.__org__pushingpixels__substance__internal__ui__SubstanceLabelUI__update(SubstanceLabelUI.java:198)
    at org.pushingpixels.substance.internal.ui.SubstanceLabelUI.update(SubstanceLabelUI.java)
    at javax.swing.JComponent.paintComponent(JComponent.java:778)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)
    at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:227)
    at org.pushingpixels.substance.internal.ui.SubstanceListUI.paintCell(SubstanceListUI.java:579)
    at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:317)
    at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:240)
    at org.pushingpixels.substance.internal.ui.SubstanceListUI.__org__pushingpixels__substance__internal__ui__SubstanceListUI__update(SubstanceListUI.java:788)
    at org.pushingpixels.substance.internal.ui.SubstanceListUI.update(SubstanceListUI.java)
    at javax.swing.JComponent.paintComponent(JComponent.java:778)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
    at javax.swing.JComponent.paint(JComponent.java:1040)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.awt.Container.paint(Container.java:1967)
    at java.awt.Window.paint(Window.java:3867)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
    at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
    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.awt.EventQueue.dispatchEvent(EventQueue.java:675)
    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)

When changing the L&F to "Business". This is caused by a JList using the following ListCellRenderer:

public class JListTransparentCells extends DefaultListCellRenderer
{
    private static final long serialVersionUID = 1L;

    @Override
    public Color getBackground()
    {
        return null;
    }
}

A background color of null means that the background color of the parent component should be used (this works with the built-in L&Fs that ship with the JDK).

SubstanceTextUtilities.getForegroundColor() invokes SubstanceColorUtilities.getBackgroundFillColor(component) which returns null.

SubstanceColorUtilities.getInterpolatedColor() expects the second argument to be non-null but it doesn't actually check for it.

I recommend making the following changes:

  1. SubstanceColorUtilities.getBackgroundFillColor(component) should look at the parent if the component's background color is null.
  2. SubstanceColorUtilities.getInterpolatedColor() should check for a null argument and throw a clearer NullPointerException indicating that "color2" may not be null.

Lite distribution contains missing references

When building the lite distribution the package 'org/pushingpixels/substance/internal/contrib/randelshofer/**' are excluded, but the class org/pushingpixels/substance/internal/plugin/BasePlugin.java still has several imports from randelshofer package.

To get a clean distribution, I also remove the class BasePlugin and the its registration in /resources/META-INF/substance-plugin.xml (Java service).

Breadbar randomly but rarely throws a ClassCastException

This doesn't seem to be from my code. This also happened in substance 6.1.

Running 6.3.

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.pushingpixels.flamingo.api.bcb.BreadcrumbItem cannot be cast to org.pushingpixels.flamingo.internal.ui.bcb.BreadcrumbItemChoices
at org.pushingpixels.flamingo.internal.ui.bcb.BasicBreadcrumbBarUI.updateComponents(BasicBreadcrumbBarUI.java:461)
at org.pushingpixels.flamingo.internal.ui.bcb.BasicBreadcrumbBarUI$3$1.process(BasicBreadcrumbBarUI.java:278)
at javax.swing.SwingWorker$3.run(Unknown Source)
at sun.swing.AccumulativeRunnable.run(Unknown Source)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
at sun.swing.AccumulativeRunnable.run(Unknown Source)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at com.community.xanadu.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:216)
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)

SubstanceSliderUI incorrect calculation for labelRect.width

SubstanceSliderUI line 862:
if (this.slider.getOrientation() == JSlider.VERTICAL) {

Should be checking JSlider.HORIZONTAL, as the previous check was for VERTICAL. This causes UIs with large labels to have paiting problems as damaged JSlider's may not fully repaint.

Vertical Command Popups don't scroll

With a sufficiently large amount of popup buttons the popup panel should have vertical scroll bars so the user can scroll through all of the items. In 7.0 and earlier it doesn't

getColorFromModel can return null in JDK 7

JDK 7 can now return return null from javax.swing.colorchooser.AbstractColorChooserPanel#getColorFromModel rather than throwing an NPE. ColorPalettesChooser depends on the NPE behavior, so we need to check now for a null.

Substance 6.0 InternalError Exception thrown

I am using Substance look and feel version 6.0 in my Java Swing application. The application works fine for me, but some of the application users especially those using Windows 7 are getting a substance exception :

java.lang.InternalError: Unable to instantiate org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorPalettesChooser
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.createDefaultChoosers(SubstanceColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua13ColorChooserUI.__org__pushingpixels__substance__internal__contrib__randelshofer__quaqua__Quaqua13ColorChooserUI__installUI(Quaqua13ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua13ColorChooserUI.installUI(Quaqua13ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua14ColorChooserUI.__org__pushingpixels__substance__internal__contrib__randelshofer__quaqua__Quaqua14ColorChooserUI__installUI(Quaqua14ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua14ColorChooserUI.installUI(Quaqua14ColorChooserUI.java)
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.__org__pushingpixels__substance__internal__ui__SubstanceColorChooserUI__installUI(SubstanceColorChooserUI.java)
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.installUI(SubstanceColorChooserUI.java)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JColorChooser.setUI(Unknown Source)
at javax.swing.JColorChooser.updateUI(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at org.jdesktop.swingx.JXColorSelectionButton.getChooser(JXColorSelectionButton.java)
at org.jdesktop.swingx.JXColorSelectionButton$1.propertyChange(JXColorSelectionButton.java)
at java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at java.awt.Component.setBackground(Unknown Source)
at javax.swing.JComponent.setBackground(Unknown Source)
This exception occurs in the last line in this code :

JXColorSelectionButton myColorSelectionButton = new JXColorSelectionButton();

myColorSelectionButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
myColorSelectionButton.setFocusPainted(false);
contentPane.add(myColorSelectionButton, cc.xy(29, 19));
/**

  • Some code here
    */
    myColorSelectionButton.setBackground( Color.WHITE ); // Excepton occurres here !!

Any idea why is that thrown (Sometimes) ?

Add more "standard" UIDefaults colors

Some GUI components drive the default values of their components off of the "default" look and feel colors such as "activeCaptionText" and "controlText", however very few of these "desktop" colors are set. Nearly all of the relevant swing varients colors are set, however.

desktop values set by other skins include --
activeCaption,
activeCaptionBorder,
activeCaptionText,
control,
controlDkShadow,
controlHighlight,
controlLtHighlight,
controlShadow,
controlText,
desktop,
inactiveCaption,
inactiveCaptionBorder,
inactiveCaptionText,
info,
infoText,
menu,
menuText,
scrollbar,
text,
textHighlight,
textHighlightText,
textInactiveText,
textText,
window,
windowBorder,
windowText

Note that 'control' is already set in SkinUtilities.

JTable hover problems

Hi shemnon,

if the mouse is moved over the table, the current row is highlighted.
At the first glance everything is ok.

I have added logging to the method JTable#paintComponent(Graphics), so that I can see how often the table is redrawn and the corresponding renderers (i have expensive renderers ;( ) are called.

Every time I change to another row, the table is redrawn about 15 times, no matter how many data is in the table.

If I do not use Substance and self-programming the highlight of table rows, the table only drawn once, as expected.
I think this is a bug, I'd be very grateful if you could deal with it.

I can provide two test classes to identify what the problem is.

Greetings and best compliment to the great work,
Pirol

I am using Substance 6.0 !

Menu Command Brackets not right/left aligned

When you have a command in a menu, and it has a popup, the bracket for the popup is aligned with the text and not right aligned to the whole menu. (left aligned for RTL)

p.s. why doesn't github issues support attaching images?

Trying to get too much performance with highlighters

I've installed some highlighters on the JXTable which alter the renderer on the
cell level, i.e. row/column are important. E.g. I try to draw an icon at certain
cells and not at other cells.

This works with the default implementation of JXTable, but not with the
substance-swingx plugin installed. The highlighter predicate isn't consulted for
its judgement on the matter and the cell renderer of substance-swingx just
paints whatever it painted in a previous cell.

So maybe substance-swingx is trying to save computation time, but it shouldn't
behave differently from the default behaviour of swingx.

Remove SVNKit from Flamingo

SVNKit is only used for a specific implementation of BreadCrumbBar, that should be an app provided feature not a toolkit tied feature.

Create separate classified Jars for Trident

The Trident jar currenly has all the support classes for all of the widget libraries it supports. It would be good if we didn't have to ship jars for unsupported widget libraries.

Hence, we will create four additional classified jars. One for each of the core widget libraries (android, swing, swt) and one for no widget library (base). Each jar will have all that is needed for each but not the stuff that isn't needed.

Tab Header background should go across all of the ribbon

In substance-flamingo there is a gradient background painted behind they tabs. This background stops at the applicaiton button and the help button. It should extend all the way across.

nesting the three parts in a panel may not work (and we need to test in native chrome mode as well).

Perhaps register a custom overlay painter on the ribbon itself?

Adding any Component to Frame results in NullPointerException

I've got this sample-code:

package de.gianfelice.debarim.gui;

import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;

public class SampleApp extends JFrame {

    public SampleApp() {
        super("Sample app");
        try {
            UIManager.setLookAndFeel(new SubstanceGraphiteLookAndFeel());
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(SampleApp.class.getName()).log(Level.SEVERE, null, ex);
        }

        try {
            this.setLayout(new FlowLayout());
            this.add(new JButton("button"));
            this.add(new JCheckBox("check"));
            this.add(new JLabel("label"));
            this.setSize(new Dimension(250, 80));
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                SampleApp s = new SampleApp();
                s.setVisible(true);
            }
        });
    }
}

But everytime I try to run this code, I get a NullPointerException:

java.lang.NullPointerException
    at org.pushingpixels.substance.internal.ui.SubstanceButtonUI.__org__pushingpixels__substance__internal__ui__SubstanceButtonUI__installDefaults(SubstanceButtonUI.java:169)
    at org.pushingpixels.substance.internal.ui.SubstanceButtonUI.installDefaults(SubstanceButtonUI.java)
    at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:71)
    at org.pushingpixels.substance.internal.ui.SubstanceButtonUI.__org__pushingpixels__substance__internal__ui__SubstanceButtonUI__installUI(SubstanceButtonUI.java)
    at org.pushingpixels.substance.internal.ui.SubstanceButtonUI.installUI(SubstanceButtonUI.java)
    at javax.swing.JComponent.setUI(JComponent.java:662)
    at javax.swing.AbstractButton.setUI(AbstractButton.java:1782)
    at javax.swing.JButton.updateUI(JButton.java:128)
    at javax.swing.AbstractButton.init(AbstractButton.java:2149)
    at javax.swing.JButton.(JButton.java:118)
    at javax.swing.JButton.(JButton.java:91)
    at de.gianfelice.debarim.gui.SampleApp.(SampleApp.java:21)
    at de.gianfelice.debarim.gui.SampleApp$1.run(SampleApp.java:39)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Everything is running under NetBeans 7.0 and Windows 7 x64. I'm not using Maven to do this.

Maybe I'm only doing something wrong?

If I could provide any further information, please let me know.

Greetings from Germany,
Matthias

Provide an API to allow for multiple components where the help button lives

This is mostly to support the "minimize ribbon" button in the office 10 ribbons.

Add some API where arbitrary components can be added to the "help panel." Such as context senstive help, or the minimize ribbon button.

Also, as an example the minimize ribbon button should be added (with the option to turn it off via some mechanism).

ComboBox PopupMenuListeners broken for Java 1.6u25 and newer

Hi,

just stumbled upon a not fully functional popupmenulistener for JComboBoxes when using current JDK and Substance 6.2 (tried 6.3, bug is still there):

Problem is:
PopupMenuListener don't receive popupMenuWillBecomeVisible from JComboBox

popupMenuWillBecomeInvisible is still executed as before.

It seems they have changed the place where the popupMenuWillBecomeVisible is called, see:

https://forums.oracle.com/forums/thread.jspa?threadID=2229101

TreeUI can NPE

TreeUI can NPE in update(Graphics, Component) if the bounds are null. This can sometimes happen when using table cell renderers that include tree cell renderers.

Deal with SwingX 1.6.2

A quick glance at central hints that SwingX changed it's artifact id to swingx-core from swingx. If we put the latest swingx on our path and substance-swingx, bad things ensue.

Are there plans to update to SwingX 1.6.2 or are there reasons why we might not want to in terms of incompatibilities? Of course, there is the constant question of whether or not SwingX is even alive anymore...

At minimum, this is probably going to require some documentation?

Trim minimized Ribbon properly when partially off screen

The ribbon does not match Office 2007/2010's partial off screen behaviors when showing a minimized ribbon.

If the ribbon is too far west and east it should compress. right now it is repositioned and the size is kept so it falls of the opposite side of the hosting window.

If it is too far south, it should flip above the tabs. Right now it packs south.

Don't embed LAFWidget and LAFPlugin in subsatance

We used to embed these libraries, and that decision was made when maven wasn't the crushing force it was now. Given that we can just list the dependencies and document the additional jars needed.

Dialogs lack icons

This may be a deliberate stylistic decision, but it is affecting end users.

Only Frames have the frame icon shown in the title bar chrome. Similarly they also have the maximize, minimize, and restore icons. The other icons can be nixed, but it would be good if the frame icon (and associated menu with available options) was available.

JXHyperlink clickedcolor and unclickedcolor not skinned

I know this belongs to the insubstantial-swingx branch, but i was unable to create a request there. Anyway: The skins should ship with reasonable defaults for these colors. The standard blue / purple just look ugly in most. Thanks for your effort of keeping substance alive, shemnon!

Windows do not indicate active vs. inactive windows

When using the internal frames or skin decorated windows, there is no indication or differentiation between active and inactive windows. For example some windowing systems use blue/grey for active/inactive, or will place a drop shadow on the active window and lighten it up.

JTable hover problems

Hi shemnon,

if the mouse is moved over the table, the current row is highlighted.
At the first glance everything is ok.

I have added logging to the method JTable#paintComponent(Graphics), so that I can see how often the table is redrawn and the corresponding renderers (i have expensive renderers ;( ) are called.

Every time I change to another row, the table is redrawn about 15 times, no matter how many data is in the table.

If I do not use Substance and self-programming the highlight of table rows, the table only drawn once, as expected.
I think this is a bug, I'd be very grateful if you could deal with it.

I can provide two test classes to identify what the problem is.

Best greetings,
Pirol

I am using Substance 6.0

Allow Compressed Icon to be changed in JRibbonBand

In teh JRibbonBand APIs, there is a get/set for title, but only a get for Icon. Icon is used for the "compressed" form of the ribbon band, where no controls are shown. A setter should be added sot he Icon can be changed after the fact.

The UI delegate also needs to listen to changes to the "icon" property as well as "title" (which it currently doesn't when compressed) so that it can change on the fly.

Add client property to disable animations

There are currently two ways to keep a component from being subject to the StateTransitionTracker

  • annotate the specific component with "@SubstanceRenderer"
  • be contained in a recognized renderer (is a CellRendererPane or implementes ListCellRenderer, TreeCellRenderer, or TableCellRenderer)

There should be a third way, by adding some client property that says "No animations please" to itself or one of it's parents.

Exception in thread โ€œAWT-EventQueue-0โ€ java.lang.IllegalArgumentException: Rectangle width and height must be > 0

I have a peculiar situation here in an application I've programmed using a Substance LookAndFeel. In my application, as seen in the screenshot below, I have three JMenus in the MenuBar.

http://i.stack.imgur.com/6VxOr.png

The one all the way on the right (Take Screenshot) is click-able and takes a screenshot of the entire application window. It has no MenuItems beneath it and works as a standalone faux "button".

Upon being clicked, it works perfectly fine. But in the console I get a HUGE block of errors related to what I'm assuming is the current L&F I'm using (seeing as this didn't happen with the System Default L&F).

Another question I would like to have answered is how to fix the opaque part of the menu's shadow, also as seen in the screenshot provided. None of this affects execution of the application in any way, I would just like them both resolved to ensure execution is optimal.

If any of my code needs to be posted to help resolve the issue, please recommend where you think thr issue is originating from (i.e. the Robot, or the L&F, or the MenuBar, or whatever). I will post whatever is needed.

edit: I have done some more exploration and it seems to occur only when any of the Menus are selected, then I hover over to the Screenshot menu. My guess is simply because it has no MenuItems to be displayed, but I could be wrong. I still haven't a clue on how to resolve the issue, though.

Here's the error log:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Recta
ngle width and height must be > 0
at java.awt.Robot.checkValidRect(Unknown Source)
at java.awt.Robot.createScreenCapture(Unknown Source)
at org.pushingpixels.substance.internal.contrib.jgoodies.looks.common.Sh
adowPopup.snapshot(ShadowPopup.java:286)
at org.pushingpixels.substance.internal.contrib.jgoodies.looks.common.Sh
adowPopup.show(ShadowPopup.java:198)
at javax.swing.JPopupMenu.getPopup(Unknown Source)
at javax.swing.JPopupMenu.setVisible(Unknown Source)
at javax.swing.JPopupMenu.show(Unknown Source)
at javax.swing.JMenu.setPopupMenuVisible(Unknown Source)
at javax.swing.JPopupMenu.menuSelectionChanged(Unknown Source)
at javax.swing.MenuSelectionManager.setSelectedPath(Unknown Source)
at javax.swing.plaf.basic.BasicMenuUI.appendPath(Unknown Source)
at javax.swing.plaf.basic.BasicMenuUI.access$200(Unknown Source)
at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(Unknown Sourc
e)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(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$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$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)

JBreadcrumbBar repaint bug

repaint bug in flamingo/peacock

Reproduce: select 2nd level arrow -> popup shows.
if the popup width is bigger than the breadcrumbitem width, the popup is not redrawn properly.

Add Cerulean Skin to 7.0

Add a new skin to 7.0 called "Cerulean."

It is mostly Nebula, with the windows borders being the pressed button color, and the pressed and hover colors derived from steel blue.

SubstanceSliderUI still incorrect calculation for labelRect.width

I can't reopen issue 23, which is still problematic. No response to my post-close comment. This is still a bug. The best way to determine the issue is to add logging statements in the width calculation and you will note that it is incorrect. Best shown visually with wide images (mine were 150 pixels).

Substance L&F: Getting Started Guide

Please provide a brief guide for new users. I'm only looking for two things:

  1. A visual list of available skins (or a runnable demo) to help us pick
  2. A code snippet that demonstrates installing a Substance L&F

Trident CFNE when not using SWT

Not using anything SWT related, and don't see anything in the dependencies, but get this error with 6.3. This error is not present in 6.2

If this isn't something easy to see, I can try and come up with a test app that triggers this.

main:
[java] java.lang.ClassNotFoundException: org.pushingpixels.trident.swt.SWTToolkitHandler
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[java] at org.pushingpixels.trident.TridentConfig.(TridentConfig.java:104)
[java] at org.pushingpixels.trident.TridentConfig.getInstance(TridentConfig.java:172)
[java] at org.pushingpixels.trident.Timeline.(Timeline.java:268)
[java] at org.pushingpixels.substance.internal.animation.StateTransitionTracker.(StateTransitionTracker.java:205)
[java] at org.pushingpixels.substance.internal.utils.ButtonVisualStateTracker.installListeners(ButtonVisualStateTracker.java:72)
[java] at org.pushingpixels.substance.internal.ui.SubstanceToggleButtonUI.__org__pushingpixels__substance__internal__ui__SubstanceToggleButtonUI__installListeners(SubstanceToggleButtonUI.java:213)
[java] at org.pushingpixels.substance.internal.ui.SubstanceToggleButtonUI.installListeners(SubstanceToggleButtonUI.java)
[java] at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:72)
[java] at org.pushingpixels.substance.internal.ui.SubstanceToggleButtonUI.__org__pushingpixels__substance__internal__ui__SubstanceToggleButtonUI__installUI(SubstanceToggleButtonUI.java)
[java] at org.pushingpixels.substance.internal.ui.SubstanceToggleButtonUI.installUI(SubstanceToggleButtonUI.java)
[java] at javax.swing.JComponent.setUI(JComponent.java:662)
[java] at javax.swing.AbstractButton.setUI(AbstractButton.java:1782)
[java] at javax.swing.JToggleButton.updateUI(JToggleButton.java:168)
[java] at javax.swing.AbstractButton.init(AbstractButton.java:2149)
[java] at javax.swing.JToggleButton.(JToggleButton.java:159)
[java] at javax.swing.JToggleButton.(JToggleButton.java:85)
[java] at org.pushingpixels.lafwidget.menu.MenuSearchWidget$SearchPanel.(MenuSearchWidget.java:110)
[java] at org.pushingpixels.lafwidget.menu.MenuSearchWidget.installUI(MenuSearchWidget.java:630)
[java] at org.pushingpixels.substance.internal.ui.SubstanceMenuBarUI.installUI(SubstanceMenuBarUI.java)
[java] at javax.swing.JComponent.setUI(JComponent.java:662)
[java] at javax.swing.JMenuBar.setUI(JMenuBar.java:118)
[java] at javax.swing.JMenuBar.updateUI(JMenuBar.java:127)
[java] at javax.swing.JMenuBar.(JMenuBar.java:95)
[java] at org.pushingpixels.substance.internal.utils.SubstanceTitlePane$SubstanceMenuBar.(SubstanceTitlePane.java:1593)
[java] at org.pushingpixels.substance.internal.utils.SubstanceTitlePane.createMenuBar(SubstanceTitlePane.java:796)
[java] at org.pushingpixels.substance.internal.utils.SubstanceTitlePane.installSubcomponents(SubstanceTitlePane.java:731)
[java] at org.pushingpixels.substance.internal.utils.SubstanceTitlePane.(SubstanceTitlePane.java:535)
[java] at org.pushingpixels.substance.flamingo.ribbon.ui.SubstanceRibbonFrameTitlePane.(SubstanceRibbonFrameTitlePane.java:291)
[java] at org.pushingpixels.substance.flamingo.ribbon.ui.SubstanceRibbonRootPaneUI.createTitlePane(SubstanceRibbonRootPaneUI.java:130)
[java] at org.pushingpixels.substance.internal.ui.SubstanceRootPaneUI.installClientDecorations(SubstanceRootPaneUI.java:653)
[java] at org.pushingpixels.substance.internal.ui.SubstanceRootPaneUI.propertyChange(SubstanceRootPaneUI.java:830)
[java] at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
[java] at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
[java] at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:297)
[java] at java.awt.Component.firePropertyChange(Component.java:8194)
[java] at javax.swing.JComponent.firePropertyChange(JComponent.java:4456)
[java] at javax.swing.JRootPane.setWindowDecorationStyle(JRootPane.java:427)
[java] at javax.swing.JFrame.frameInit(JFrame.java:244)
[java] at javax.swing.JFrame.(JFrame.java:203)
[java] at org.pushingpixels.flamingo.api.ribbon.JRibbonFrame.(JRibbonFrame.java:309)
[java] at com.darkcorner.harmonice.client.HarmoniceClient.(HarmoniceClient.java:257)
[java] at com.darkcorner.harmonice.client.HarmoniceClient$1.run(HarmoniceClient.java:157)
[java] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
[java] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
[java] at java.awt.EventQueue.access$000(EventQueue.java:84)
[java] at java.awt.EventQueue$1.run(EventQueue.java:602)
[java] at java.awt.EventQueue$1.run(EventQueue.java:600)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[java] at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
[java] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
[java] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
[java] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
[java] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
[java] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
[java] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Remanent lines on tables with horizontal lines disabled

There is an issue with tables (JTable and JXTable) when the horizontal lines are disabled, the focus rollover leaves lines behind. It happens when the mouse is moved from the top to the bottom of the table. The line left is the last line of the row preceding the currently focused row:

UIManager.setLookAndFeel(SubstanceNebulaLookAndFeel.class.getName());

JTable table = new JTable();
table.setShowHorizontalLines(false);
table.setModel(new AbstractTableModel() {
    public int getRowCount() { return 20; }
    public int getColumnCount() { return 5; }
    public Object getValueAt(int rowIndex, int columnIndex) { return rowIndex + ":" + columnIndex; }
});

JFrame frame = new JFrame("Substance Table Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(table);
frame.setLocation(100, 100);
frame.setSize(400, 300);
frame.setVisible(true);   

Remove required batik dependency from flamingo

In 6.2 batik was not listed as a maven dependency. In 6.3, it is. Batik is gigantic and dumps a lot of stuff on your classpath (why, yes, I would like another XML parser for no obvious reason....) that is just not needed if you do not use SVG icons (which Kirill had pretty much deprecated anyway). Two suggestions:

  • Remove the SVG resizable icons
  • Make the dependency optional so folks can include it if desired (yes, optional dependencies are hideous, I know...)

I would urge a 6.3.1 release to fix this regression if at all possible.

Sorry, but I've just had a lot of customer feedback about trying to shrink the resulting size of our applications and whether that's warranted or not, I have to live with it, and Batik is a nasty culprit.

ColorChooser causes NullPointerException in JSlider with JDK7

I have written a simple JDialog to display a JColorChooser and a few buttons, but even with the latest insubstantial (V6.3) and Trident V1.3 I am getting the following exception as soon as the dialog loads with JDK 7:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JSlider.imageUpdate(JSlider.java:770)
at sun.awt.image.ImageWatched$WeakLink.newInfo(ImageWatched.java:132)
at sun.awt.image.ImageWatched.newInfo(ImageWatched.java:169)
at sun.awt.image.ImageRepresentation.imageComplete(ImageRepresentation.java:719)
at java.awt.image.MemoryImageSource.addConsumer(MemoryImageSource.java:280)
at java.awt.image.MemoryImageSource.startProduction(MemoryImageSource.java:316)
at sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:727)
at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:802)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1018)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3062)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3047)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorSliderUI.paintColorTrack(ColorSliderUI.java:397)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorSliderUI.paintTrack(ColorSliderUI.java:248)
at javax.swing.plaf.basic.BasicSliderUI.paint(BasicSliderUI.java:929)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorSliderUI.__org__pushingpixels__substance__internal__contrib__randelshofer__quaqua__colorchooser__ColorSliderUI__update(ColorSliderUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorSliderUI.update(ColorSliderUI.java)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.colorchooser.AbstractColorChooserPanel.paint(AbstractColorChooserPanel.java:205)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
at java.awt.Window.paint(Window.java:3867)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
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.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1072)
at java.awt.Component.show(Component.java:1650)
at java.awt.Component.setVisible(Component.java:1602)
at java.awt.Window.setVisible(Window.java:1013)
at java.awt.Dialog.setVisible(Dialog.java:1003)
at viewer.Viewer.jMenuItemBackgroundColourActionPerformed(Viewer.java:2443)
at viewer.Viewer.access$2200(Viewer.java:246)
at viewer.Viewer$17.actionPerformed(Viewer.java:1729)
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.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
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)

Any ideas on how to fix this? It a showstopping problem for me at the moment - thanks in advance.

Play "Hide the Caption" when context tab groups get in the way

Right now the caption text of a substance ribbon frame is always between the QAT and the context menu groupings. We need to play "hide the caption" like is seen in Office and the scenic ribbon. Basically there are four priorities

  1. between the QAT and Context Group if the caption fits completely
  2. between the Context Group and the window controls if it fits untrimmed
  3. as #2, if it is larger than #1, but with the text trimmed.
  4. in area #1, trimmed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.