# HG changeset patch # Parent ba2b887968202b00379f8a893caabeabf5639062 #225439: Maven output colors are hardcoded diff --git a/core.output2/src/org/netbeans/core/output2/NbIO.java b/core.output2/src/org/netbeans/core/output2/NbIO.java --- a/core.output2/src/org/netbeans/core/output2/NbIO.java +++ b/core.output2/src/org/netbeans/core/output2/NbIO.java @@ -541,7 +541,7 @@ } private class IOColorsImpl extends IOColors { - Color[] clrs = new Color[4]; + Color[] clrs = new Color[OutputType.values().length]; @Override protected Color getColor(OutputType type) { diff --git a/core.output2/src/org/netbeans/core/output2/options/Bundle.properties b/core.output2/src/org/netbeans/core/output2/options/Bundle.properties --- a/core.output2/src/org/netbeans/core/output2/options/Bundle.properties +++ b/core.output2/src/org/netbeans/core/output2/options/Bundle.properties @@ -22,3 +22,7 @@ OutputSettingsPanel.lblUnwrappedOnly.text=(Does not apply to wrapped text) OutputSettingsPanel.lblInputColor.text=&Input Color OutputSettingsPanel.cmbInputColor.toolTipText=Select input text foreground color +OutputSettingsPanel.jLabel2.text=Debug: +OutputSettingsPanel.jLabel3.text=Warning: +OutputSettingsPanel.jLabel4.text=Failure: +OutputSettingsPanel.jLabel5.text=Success: diff --git a/core.output2/src/org/netbeans/core/output2/options/OutputOptions.java b/core.output2/src/org/netbeans/core/output2/options/OutputOptions.java --- a/core.output2/src/org/netbeans/core/output2/options/OutputOptions.java +++ b/core.output2/src/org/netbeans/core/output2/options/OutputOptions.java @@ -88,6 +88,10 @@ "color.link.important"; //NOI18N public static final String PROP_COLOR_BACKGROUND = "color.backgorund"; //NOI18N + public static final String PROP_COLOR_WARNING = "color.warning"; //NOI18N + public static final String PROP_COLOR_FAILURE = "color.failure"; //NOI18N + public static final String PROP_COLOR_SUCCESS = "color.success"; //NOI18N + public static final String PROP_COLOR_DEBUG = "color.debug"; //NOI18N public static final String PROP_STYLE_LINK = "style.link"; //NOI18N public static final String PROP_FONT_SIZE_WRAP = "font.size.wrap"; //NOI18N private static final String PROP_INITIALIZED = "initialized"; //NOI18N @@ -102,6 +106,10 @@ private Color colorLink; private Color colorLinkImportant; private Color colorBackground; + private Color colorWarning; + private Color colorFailure; + private Color colorSuccess; + private Color colorDebug; private LinkStyle linkStyle = LinkStyle.UNDERLINE; private PropertyChangeSupport pcs = new PropertyChangeSupport(this); private boolean defaultFontType = false; @@ -139,6 +147,28 @@ getDefaultFont().getSize()); diskData.setFontForWrappedMode( getDefaultFont().deriveFont((float) fontSizeWrapped)); + loadColors(preferences, diskData); + String linkStyleStr = preferences.get(PREFIX + PROP_STYLE_LINK, + "UNDERLINE"); //NOI18N + try { + diskData.setLinkStyle(LinkStyle.valueOf(linkStyleStr)); + } catch (Exception e) { + LOG.log(Level.INFO, "Invalid link style {0}", linkStyleStr);//NOI18N + } + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + assign(diskData); + synchronized (OutputOptions.this) { + initialized = true; + } + pcs.firePropertyChange(PROP_INITIALIZED, false, true); + } + }); + } + + private void loadColors(final Preferences preferences, + final OutputOptions diskData) { int rgbStandard = preferences.getInt(PREFIX + PROP_COLOR_STANDARD, getDefaultColorStandard().getRGB()); diskData.setColorStandard(new Color(rgbStandard)); @@ -157,24 +187,23 @@ int rgbLinkImportant = preferences.getInt( PREFIX + PROP_COLOR_LINK_IMPORTANT, getDefaultColorLinkImportant().getRGB()); - String linkStyleStr = preferences.get(PREFIX + PROP_STYLE_LINK, - "UNDERLINE"); //NOI18N - try { - diskData.setLinkStyle(LinkStyle.valueOf(linkStyleStr)); - } catch (Exception e) { - LOG.log(Level.INFO, "Invalid link style {0}", linkStyleStr);//NOI18N - } diskData.setColorLinkImportant(new Color(rgbLinkImportant)); - EventQueue.invokeLater(new Runnable() { - @Override - public void run() { - assign(diskData); - synchronized (OutputOptions.this) { - initialized = true; - } - pcs.firePropertyChange(PROP_INITIALIZED, false, true); - } - }); + int rgbDebug = preferences.getInt( + PREFIX + PROP_COLOR_DEBUG, + getDefaultColorDebug().getRGB()); + diskData.setColorDebug(new Color(rgbDebug)); + int rgbWarning = preferences.getInt( + PREFIX + PROP_COLOR_WARNING, + getDefaultColorWarning().getRGB()); + diskData.setColorWarning(new Color(rgbWarning)); + int rgbFailure = preferences.getInt( + PREFIX + PROP_COLOR_FAILURE, + getDefaultColorFailure().getRGB()); + diskData.setColorFailure(new Color(rgbFailure)); + int rgbSuccess = preferences.getInt( + PREFIX + PROP_COLOR_SUCCESS, + getDefaultColorSuccess().getRGB()); + diskData.setColorSuccess(new Color(rgbSuccess)); } public void saveTo(Preferences preferences) { @@ -189,6 +218,14 @@ getColorBackground().getRGB()); preferences.putInt(PREFIX + PROP_COLOR_LINK, getColorLink().getRGB()); + preferences.putInt(PREFIX + PROP_COLOR_WARNING, + getColorWarning().getRGB()); + preferences.putInt(PREFIX + PROP_COLOR_FAILURE, + getColorFailure().getRGB()); + preferences.putInt(PREFIX + PROP_COLOR_SUCCESS, + getColorSuccess().getRGB()); + preferences.putInt(PREFIX + PROP_COLOR_DEBUG, + getColorDebug().getRGB()); preferences.putInt(PREFIX + PROP_COLOR_LINK_IMPORTANT, getColorLinkImportant().getRGB()); preferences.putInt(PREFIX + PROP_FONT_SIZE, getFont().getSize()); @@ -211,6 +248,10 @@ setColorLink(getDefaultColorLink()); setColorLinkImportant(getDefaultColorLinkImportant()); setColorBackground(getDefaultColorBackground()); + setColorWarning(getDefaultColorWarning()); + setColorFailure(getDefaultColorFailure()); + setColorSuccess(getDefaultColorSuccess()); + setColorDebug(getDefaultColorDebug()); } private void setDefaultFont() { @@ -274,6 +315,22 @@ return colorBackground; } + public Color getColorWarning() { + return colorWarning; + } + + public Color getColorFailure() { + return colorFailure; + } + + public Color getColorSuccess() { + return colorSuccess; + } + + public Color getColorDebug() { + return colorDebug; + } + public LinkStyle getLinkStyle() { return linkStyle; } @@ -408,6 +465,46 @@ } } + public void setColorWarning(Color colorWarning) { + Parameters.notNull("colorWarning", colorWarning); //NOI18N + if (!colorWarning.equals(this.colorWarning)) { + Color oldColorWarning = this.colorWarning; + this.colorWarning = colorWarning; + pcs.firePropertyChange(PROP_COLOR_WARNING, oldColorWarning, + colorWarning); + } + } + + public void setColorFailure(Color colorFailure) { + Parameters.notNull("colorFailure", colorFailure); //NOI18N + if (!colorFailure.equals(this.colorFailure)) { + Color oldColorFailure = this.colorFailure; + this.colorFailure = colorFailure; + pcs.firePropertyChange(PROP_COLOR_FAILURE, oldColorFailure, + colorFailure); + } + } + + public void setColorSuccess(Color colorSuccess) { + Parameters.notNull("colorSuccess", colorSuccess); //NOI18N + if (!colorSuccess.equals(this.colorSuccess)) { + Color oldColorSuccess = this.colorSuccess; + this.colorSuccess = colorSuccess; + pcs.firePropertyChange(PROP_COLOR_SUCCESS, oldColorSuccess, + colorSuccess); + } + } + + public void setColorDebug(Color colorDebug) { + Parameters.notNull("colorDebug", colorDebug); //NOI18N + if (!colorDebug.equals(this.colorDebug)) { + Color oldColorDebug = this.colorDebug; + this.colorDebug = colorDebug; + pcs.firePropertyChange(PROP_COLOR_DEBUG, oldColorDebug, + colorDebug); + } + } + public void setLinkStyle(LinkStyle linkStyle) { Parameters.notNull("linkStyle", linkStyle); //NOI18N if (!linkStyle.equals(this.linkStyle)) { @@ -448,6 +545,10 @@ copy.colorBackground = this.colorBackground; copy.colorLink = this.colorLink; copy.colorLinkImportant = this.colorLinkImportant; + copy.colorWarning = this.colorWarning; + copy.colorFailure = this.colorFailure; + copy.colorSuccess = this.colorSuccess; + copy.colorDebug = this.colorDebug; copy.initialized = initialized; copy.linkStyle = linkStyle; if (!initialized) { @@ -480,6 +581,10 @@ this.setColorLink(outputOptions.getColorLink()); this.setColorLinkImportant(outputOptions.getColorLinkImportant()); this.setColorBackground(outputOptions.getColorBackground()); + this.setColorDebug(outputOptions.getColorDebug()); + this.setColorWarning(outputOptions.getColorWarning()); + this.setColorFailure(outputOptions.getColorFailure()); + this.setColorSuccess(outputOptions.getColorSuccess()); this.setLinkStyle(outputOptions.getLinkStyle()); } @@ -543,6 +648,110 @@ } } + static Color getDefaultColorWarning() { + Color c = UIManager.getColor("nb.output.warning.foreground"); + if (c == null) { + c = ensureContrastingColor(Color.ORANGE, getDefaultColorBackground()); + } + return c; + } + + static Color getDefaultColorFailure() { + Color c = UIManager.getColor("nb.output.failure.foreground"); + if (c == null) { + c = ensureContrastingColor(Color.RED, getDefaultColorBackground()); + } + return c; + } + + static Color getDefaultColorSuccess() { + Color c = UIManager.getColor("nb.output.success.foreground"); + if (c == null) { + c = ensureContrastingColor(Color.GREEN.darker().darker(), + getDefaultColorBackground()); + } + return c; + } + + static Color getDefaultColorDebug() { + Color c = UIManager.getColor("nb.output.debug.foreground"); + if (c == null) { + c = ensureContrastingColor(Color.GRAY, getDefaultColorBackground()); + } + return c; + } + + /* From openide.awt/HtmlLabelUI. + (int pos, String s, Graphics g, int x, + int y, int w, int h, Font f, Color defaultColor, int style, + boolean paint, Color background) { */ + static Color ensureContrastingColor(Color fg, Color bg) { + if (bg == null) { + if (isNimbus()) { + bg = UIManager.getColor("Tree.background"); //NOI18N + if (null == bg) { + bg = Color.WHITE; + } + } else { + bg = UIManager.getColor("text"); //NOI18N + + if (bg == null) { + bg = Color.WHITE; + } + } + } + if (fg == null) { + if (isNimbus()) { + fg = UIManager.getColor("Tree.foreground"); //NOI18N + if (null == fg) { + fg = Color.BLACK; + } + } else { + fg = UIManager.getColor("textText"); //NOI18N + if (fg == null) { + fg = Color.BLACK; + } + } + } + + if (Color.BLACK.equals(fg) && Color.WHITE.equals(fg)) { + return fg; + } + + boolean replace = fg.equals(bg); + int dif = 0; + + if (!replace) { + dif = difference(fg, bg); + replace = dif < 60; + } + + if (replace) { + int lum = luminance(bg); + boolean darker = lum >= 128; + + if (darker) { + fg = fg.darker(); + } else { + fg = fg.brighter(); + } + } + + return fg; + } + + private static int difference(Color a, Color b) { + return Math.abs(luminance(a) - luminance(b)); + } + + private static int luminance(Color c) { + return (299 * c.getRed() + 587 * c.getGreen() + 114 * c.getBlue()) / 1000; + } + + static boolean isNimbus() { + return "Nimbus".equals(UIManager.getLookAndFeel().getID()); //NOI18N + } + public Color getColorForType(IOColors.OutputType type) { switch (type) { case OUTPUT: @@ -555,6 +764,14 @@ return getColorLink(); case HYPERLINK_IMPORTANT: return getColorLinkImportant(); + case LOG_DEBUG: + return getColorDebug(); + case LOG_WARNING: + return getColorWarning(); + case LOG_FAILURE: + return getColorFailure(); + case LOG_SUCCESS: + return getColorSuccess(); default: return getColorStandard(); } diff --git a/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.form b/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.form --- a/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.form +++ b/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.form @@ -20,16 +20,11 @@ - - - - - - - - - - + + + + + @@ -87,16 +82,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - @@ -122,21 +133,29 @@ + + + + + + + + @@ -393,6 +412,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.java b/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.java --- a/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.java +++ b/core.output2/src/org/netbeans/core/output2/options/OutputSettingsPanel.java @@ -123,6 +123,14 @@ lblUnwrappedOnly = new javax.swing.JLabel(); lblInputColor = new javax.swing.JLabel(); cmbInputColor = new ColorComboBox(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + cmbDebugColor = new ColorComboBox(); + cmbWarningColor = new ColorComboBox(); + cmbFailureColor = new ColorComboBox(); + cmbSuccessColor = new ColorComboBox(); previewPanel = new javax.swing.JPanel(); btnRestore = new javax.swing.JButton(); @@ -225,6 +233,38 @@ } }); + org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.jLabel2.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.jLabel3.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.jLabel4.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.jLabel5.text")); // NOI18N + + cmbDebugColor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmbDebugColorActionPerformed(evt); + } + }); + + cmbWarningColor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmbWarningColorActionPerformed(evt); + } + }); + + cmbFailureColor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmbFailureColorActionPerformed(evt); + } + }); + + cmbSuccessColor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmbSuccessColorActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( @@ -249,17 +289,33 @@ .addComponent(btnSelectFont)) .addComponent(lblUnwrappedOnly, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(spnFontSize, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(cmbBackgroundColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbStandardColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbErrorColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbLinkColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbImportantLinkColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbLinkStyle, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbInputColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(cmbLinkStyle, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbImportantLinkColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbLinkColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbInputColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbErrorColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbStandardColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(spnFontSize, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmbBackgroundColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2) + .addComponent(jLabel3) + .addComponent(jLabel4) + .addComponent(jLabel5)) + .addGap(21, 21, 21) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(cmbFailureColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbWarningColor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbDebugColor, 0, 238, Short.MAX_VALUE) + .addComponent(cmbSuccessColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 0, Short.MAX_VALUE))) .addGap(1, 1, 1)) ); + + jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cmbBackgroundColor, cmbDebugColor}); + jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() @@ -277,19 +333,27 @@ .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblBackgroundColor) - .addComponent(cmbBackgroundColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(cmbBackgroundColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2) + .addComponent(cmbDebugColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cmbStandardColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblStandardColor)) + .addComponent(lblStandardColor) + .addComponent(jLabel3) + .addComponent(cmbWarningColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cmbErrorColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblErrorColor)) + .addComponent(lblErrorColor) + .addComponent(jLabel4) + .addComponent(cmbFailureColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblInputColor) - .addComponent(cmbInputColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(cmbInputColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5) + .addComponent(cmbSuccessColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblLinkColor) @@ -324,14 +388,11 @@ .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(previewPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(lblTitle) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnRestore))) - .addContainerGap()))) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(lblTitle) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRestore)))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -429,6 +490,34 @@ } }//GEN-LAST:event_cmbInputColorActionPerformed + private void cmbDebugColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbDebugColorActionPerformed + Color debug = ((ColorComboBox) cmbDebugColor).getSelectedColor(); + if (debug != null) { + outputOptions.setColorDebug(debug); + } + }//GEN-LAST:event_cmbDebugColorActionPerformed + + private void cmbWarningColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbWarningColorActionPerformed + Color warning = ((ColorComboBox) cmbWarningColor).getSelectedColor(); + if (warning != null) { + outputOptions.setColorWarning(warning); + } + }//GEN-LAST:event_cmbWarningColorActionPerformed + + private void cmbFailureColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbFailureColorActionPerformed + Color failure = ((ColorComboBox) cmbFailureColor).getSelectedColor(); + if (failure != null) { + outputOptions.setColorFailure(failure); + } + }//GEN-LAST:event_cmbFailureColorActionPerformed + + private void cmbSuccessColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbSuccessColorActionPerformed + Color success = ((ColorComboBox) cmbSuccessColor).getSelectedColor(); + if (success != null) { + outputOptions.setColorSuccess(success); + } + }//GEN-LAST:event_cmbSuccessColorActionPerformed + void load() { if (previewInputOutput == null) { initPreview(); @@ -465,14 +554,22 @@ private javax.swing.JButton btnRestore; private javax.swing.JButton btnSelectFont; private javax.swing.JComboBox cmbBackgroundColor; + private javax.swing.JComboBox cmbDebugColor; private javax.swing.JComboBox cmbErrorColor; + private javax.swing.JComboBox cmbFailureColor; private javax.swing.JComboBox cmbImportantLinkColor; private javax.swing.JComboBox cmbInputColor; private javax.swing.JComboBox cmbLinkColor; private javax.swing.JComboBox cmbLinkStyle; private javax.swing.JComboBox cmbStandardColor; + private javax.swing.JComboBox cmbSuccessColor; + private javax.swing.JComboBox cmbWarningColor; private javax.swing.JTextField fldFontFamily; private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel2; private javax.swing.JLabel lblBackgroundColor; private javax.swing.JLabel lblErrorColor; @@ -550,6 +647,10 @@ selectColor(cmbInputColor, outputOptions.getColorInput()); selectColor(cmbBackgroundColor, outputOptions.getColorBackground()); selectColor(cmbLinkColor, outputOptions.getColorLink()); + selectColor(cmbDebugColor, outputOptions.getColorDebug()); + selectColor(cmbWarningColor, outputOptions.getColorWarning()); + selectColor(cmbFailureColor, outputOptions.getColorFailure()); + selectColor(cmbSuccessColor, outputOptions.getColorSuccess()); selectColor(cmbImportantLinkColor, outputOptions.getColorLinkImportant()); cmbLinkStyle.setSelectedItem( diff --git a/core.output2/test/unit/src/org/netbeans/core/output2/NbIOTest.java b/core.output2/test/unit/src/org/netbeans/core/output2/NbIOTest.java --- a/core.output2/test/unit/src/org/netbeans/core/output2/NbIOTest.java +++ b/core.output2/test/unit/src/org/netbeans/core/output2/NbIOTest.java @@ -47,9 +47,11 @@ import java.awt.Color; import java.io.IOException; import java.io.Reader; +import static junit.framework.Assert.assertEquals; import junit.framework.TestCase; import org.openide.util.Exceptions; import org.openide.windows.IOColorLines; +import org.openide.windows.IOColors; import org.openide.windows.OutputEvent; import org.openide.windows.OutputListener; import org.openide.windows.OutputWriter; @@ -232,4 +234,51 @@ assertEquals(0, nullOuts[0]); } } + + public void testIOColorsImpl() { + NbIO io = new NbIO("test"); + io.getOptions().setColorStandard(Color.RED); + io.getOptions().setColorError(Color.WHITE); + io.getOptions().setColorInput(Color.YELLOW); + io.getOptions().setColorLink(Color.PINK); + io.getOptions().setColorLinkImportant(Color.LIGHT_GRAY); + io.getOptions().setColorDebug(Color.CYAN); + io.getOptions().setColorWarning(Color.BLACK); + io.getOptions().setColorFailure(Color.MAGENTA); + io.getOptions().setColorSuccess(Color.BLUE); + assertEquals(Color.RED, + IOColors.getColor(io, IOColors.OutputType.OUTPUT)); + assertEquals(Color.WHITE, + IOColors.getColor(io, IOColors.OutputType.ERROR)); + assertEquals(Color.YELLOW, + IOColors.getColor(io, IOColors.OutputType.INPUT)); + assertEquals(Color.PINK, + IOColors.getColor(io, IOColors.OutputType.HYPERLINK)); + assertEquals(Color.LIGHT_GRAY, + IOColors.getColor(io, IOColors.OutputType.HYPERLINK_IMPORTANT)); + assertEquals(Color.CYAN, + IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); + assertEquals(Color.BLACK, + IOColors.getColor(io, IOColors.OutputType.LOG_WARNING)); + assertEquals(Color.MAGENTA, + IOColors.getColor(io, IOColors.OutputType.LOG_FAILURE)); + assertEquals(Color.BLUE, + IOColors.getColor(io, IOColors.OutputType.LOG_SUCCESS)); + } + + public void testIOColorsImplSetting() { + NbIO io = new NbIO("test"); + io.getOptions().setColorStandard(Color.ORANGE); + io.getOptions().setColorDebug(Color.WHITE); + assertEquals(Color.ORANGE, + IOColors.getColor(io, IOColors.OutputType.OUTPUT)); + assertEquals(Color.WHITE, + IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); + IOColors.setColor(io, IOColors.OutputType.OUTPUT, Color.BLUE); + IOColors.setColor(io, IOColors.OutputType.LOG_DEBUG, Color.GREEN); + assertEquals(Color.BLUE, + IOColors.getColor(io, IOColors.OutputType.OUTPUT)); + assertEquals(Color.GREEN, + IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); + } } diff --git a/maven/manifest.mf b/maven/manifest.mf --- a/maven/manifest.mf +++ b/maven/manifest.mf @@ -1,6 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.maven/2 -OpenIDE-Module-Specification-Version: 2.77 +OpenIDE-Module-Specification-Version: 2.78 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/maven/layer.xml AutoUpdate-Show-In-Client: false diff --git a/maven/nbproject/project.xml b/maven/nbproject/project.xml --- a/maven/nbproject/project.xml +++ b/maven/nbproject/project.xml @@ -362,7 +362,7 @@ - 1.13 + 1.40 diff --git a/maven/src/org/netbeans/modules/maven/api/output/OutputVisitor.java b/maven/src/org/netbeans/modules/maven/api/output/OutputVisitor.java --- a/maven/src/org/netbeans/modules/maven/api/output/OutputVisitor.java +++ b/maven/src/org/netbeans/modules/maven/api/output/OutputVisitor.java @@ -46,6 +46,8 @@ import javax.swing.Action; import org.netbeans.api.annotations.common.CheckForNull; import org.netbeans.api.project.Project; +import org.openide.windows.IOColors; +import org.openide.windows.InputOutput; import org.openide.windows.OutputListener; /** @@ -59,6 +61,7 @@ private boolean important; private String line; private boolean skipLine = false; + private IOColors.OutputType outputType; private Color color; private Context context; @@ -92,6 +95,7 @@ line = null; skipLine = false; color = null; + outputType = null; } public OutputListener getOutputListener() { @@ -155,6 +159,24 @@ return skipLine; } + /** + * Get the color. If the output type was set using + * {@link #setOutputType(org.openide.windows.IOColors.OutputType)}, try to + * resolve the actual color. If the output type was not set, or the actual + * color cannot be resolved, return value that was set using + * {@link #setColor(java.awt.Color)}; supported. + * + * @since maven/2.78 + */ + public Color getColor(InputOutput io) { + Color c = this.outputType == null + ? null + : IOColors.getColor(io, this.outputType); + return c == null + ? getColor() + : c; + } + public Color getColor() { return color; } @@ -163,6 +185,16 @@ this.color = color; } + /** + * Set output type that will be used in method + * {@link #getColor(org.openide.windows.InputOutput)}. + * + * @since maven/2.78 + */ + public void setOutputType(IOColors.OutputType outputType) { + this.outputType = outputType; + } + public @CheckForNull Context getContext() { return context; } diff --git a/maven/src/org/netbeans/modules/maven/execute/AbstractOutputHandler.java b/maven/src/org/netbeans/modules/maven/execute/AbstractOutputHandler.java --- a/maven/src/org/netbeans/modules/maven/execute/AbstractOutputHandler.java +++ b/maven/src/org/netbeans/modules/maven/execute/AbstractOutputHandler.java @@ -64,6 +64,7 @@ import org.openide.util.RequestProcessor; import org.openide.windows.IOColorLines; import org.openide.windows.IOColorPrint; +import org.openide.windows.IOColors; import org.openide.windows.InputOutput; import org.openide.windows.OutputWriter; @@ -192,9 +193,9 @@ ex.printStackTrace(); } } else { - if (visitor.getColor() != null && IOColorLines.isSupported(getIO())) { + if (visitor.getColor(getIO()) != null && IOColorLines.isSupported(getIO())) { try { - IOColorLines.println(getIO(), visitor.getLine(), visitor.getColor()); + IOColorLines.println(getIO(), visitor.getLine(), visitor.getColor(getIO())); } catch (IOException ex) { Exceptions.printStackTrace(ex); } @@ -295,34 +296,32 @@ } if (!visitor.isLineSkipped()) { String line = visitor.getLine() == null ? input : visitor.getLine(); - if (visitor.getColor() == null && visitor.getOutputListener() == null) { + if (visitor.getColor(getIO()) == null && visitor.getOutputListener() == null) { switch (level) { case DEBUG: - visitor.setColor(Color.GRAY); + visitor.setOutputType(IOColors.OutputType.LOG_DEBUG); break; case WARNING: - visitor.setColor(Color.ORANGE.darker()); + visitor.setOutputType(IOColors.OutputType.LOG_WARNING); break; case ERROR: - visitor.setColor(Color.RED); - break; case FATAL: - visitor.setColor(Color.MAGENTA); + visitor.setOutputType(IOColors.OutputType.LOG_FAILURE); break; } } try { if (visitor.getOutputListener() != null) { - if (visitor.getColor() != null && IOColorPrint.isSupported(getIO())) { - IOColorPrint.print(getIO(), line + "\n", visitor.getOutputListener(), visitor.isImportant(), visitor.getColor()); + if (visitor.getColor(getIO()) != null && IOColorPrint.isSupported(getIO())) { + IOColorPrint.print(getIO(), line + "\n", visitor.getOutputListener(), visitor.isImportant(), visitor.getColor(getIO())); } else { writer.println(line, visitor.getOutputListener(), visitor.isImportant()); } } else { if (level.compareTo(Level.ERROR) >= 0 && IOColorPrint.isSupported(getIO())) { - IOColorPrint.print(getIO(), line + "\n", null, true, visitor.getColor()); - } else if (visitor.getColor() != null && IOColorLines.isSupported(getIO())) { - IOColorLines.println(getIO(), line, visitor.getColor()); + IOColorPrint.print(getIO(), line + "\n", null, true, visitor.getColor(getIO())); + } else if (visitor.getColor(getIO()) != null && IOColorLines.isSupported(getIO())) { + IOColorLines.println(getIO(), line, visitor.getColor(getIO())); } else { writer.println(line); } diff --git a/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java b/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java --- a/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java +++ b/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java @@ -88,6 +88,7 @@ import org.openide.util.RequestProcessor; import org.openide.util.Utilities; import org.openide.windows.IOColorLines; +import org.openide.windows.IOColors; import org.openide.windows.InputOutput; import org.openide.windows.OutputEvent; import org.openide.windows.OutputListener; @@ -490,7 +491,7 @@ private static void printGray(InputOutput io, String text) { if (IOColorLines.isSupported(io)) { try { - IOColorLines.println(io, text, Color.GRAY); + IOColorLines.println(io, text, IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); } catch (IOException ex) { Exceptions.printStackTrace(ex); } diff --git a/maven/src/org/netbeans/modules/maven/output/GlobalOutputProcessor.java b/maven/src/org/netbeans/modules/maven/output/GlobalOutputProcessor.java --- a/maven/src/org/netbeans/modules/maven/output/GlobalOutputProcessor.java +++ b/maven/src/org/netbeans/modules/maven/output/GlobalOutputProcessor.java @@ -72,6 +72,7 @@ import org.openide.util.Exceptions; import org.openide.util.NbBundle.Messages; import org.openide.util.RequestProcessor; +import org.openide.windows.IOColors; import org.openide.windows.InputOutput; import org.openide.windows.OutputEvent; import org.openide.windows.OutputListener; @@ -117,11 +118,11 @@ } //silly prepend of [INFO} to reuse the same regexp if (CommandLineOutputHandler.startPatternM3.matcher("[INFO] " + line).matches() || CommandLineOutputHandler.startPatternM2.matcher("[INFO] " + line).matches()) { - visitor.setColor(Color.GRAY); + visitor.setOutputType(IOColors.OutputType.LOG_DEBUG); return; } if (line.startsWith("BUILD SUCCESS")) { //NOI18N 3.0.4 has build success, some older versions have build successful - visitor.setColor(Color.GREEN.darker().darker()); + visitor.setOutputType(IOColors.OutputType.LOG_SUCCESS); return; } @@ -173,7 +174,7 @@ if (LOW_MVN.matcher(line).matches()) { visitor.setLine(line + '\n' + TXT_ChangeSettings()); - visitor.setColor(Color.RED); + visitor.setOutputType(IOColors.OutputType.LOG_FAILURE); visitor.setOutputListener(new OutputListener() { @Override public void outputLineSelected(OutputEvent ev) {} @Override public void outputLineAction(OutputEvent ev) { diff --git a/o.apache.tools.ant.module/nbproject/project.xml b/o.apache.tools.ant.module/nbproject/project.xml --- a/o.apache.tools.ant.module/nbproject/project.xml +++ b/o.apache.tools.ant.module/nbproject/project.xml @@ -181,7 +181,7 @@ - 1.23 + 1.40 diff --git a/o.apache.tools.ant.module/src/org/apache/tools/ant/module/run/StandardLogger.java b/o.apache.tools.ant.module/src/org/apache/tools/ant/module/run/StandardLogger.java --- a/o.apache.tools.ant.module/src/org/apache/tools/ant/module/run/StandardLogger.java +++ b/o.apache.tools.ant.module/src/org/apache/tools/ant/module/run/StandardLogger.java @@ -71,6 +71,8 @@ import org.openide.util.lookup.ServiceProvider; import org.openide.windows.IOColorLines; import org.openide.windows.IOColorPrint; +import org.openide.windows.IOColors; +import org.openide.windows.IOColors; import org.openide.windows.InputOutput; import org.openide.windows.OutputListener; @@ -252,7 +254,7 @@ InputOutput io = session.getIO(); if (IOColorLines.isSupported(io)) { try { - IOColorLines.println(io, msg, Color.GRAY); + IOColorLines.println(io, msg, IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); } catch (IOException x) { ERR.log(Level.INFO, null, x); } @@ -350,7 +352,9 @@ InputOutput io = session.getIO(); if (IOColorLines.isSupported(io)) { try { - IOColorLines.println(io, msg, error ? Color.RED : Color.GREEN.darker().darker()); + IOColorLines.println(io, msg, IOColors.getColor(io, error + ? IOColors.OutputType.LOG_FAILURE + : IOColors.OutputType.LOG_SUCCESS)); return; } catch (IOException x) { ERR.log(Level.INFO, null, x); @@ -382,7 +386,7 @@ InputOutput io = session.getIO(); if (IOColorLines.isSupported(io)) { try { - IOColorLines.println(io, msg, Color.GRAY); + IOColorLines.println(io, msg, IOColors.getColor(io, IOColors.OutputType.LOG_DEBUG)); } catch (IOException x) { ERR.log(Level.INFO, null, x); } diff --git a/openide.io/apichanges.xml b/openide.io/apichanges.xml --- a/openide.io/apichanges.xml +++ b/openide.io/apichanges.xml @@ -107,6 +107,24 @@ + + + Added LOG_SUCCESS, LOG_FAILURE, LOG_WARNING and LOG_DEBUG into IOColors.OutputType to be able to specify a color of logging messages. + + + + + +

+ Added enum elements LOG_SUCCESS, LOG_FAILURE, LOG_WARNING + and LOG_DEBUG into IOColors.OutputType + that can be passed to get/setColor methods to have access + to color of standard logging messages. +

+
+ + +
Added IOColors.OutputType.INPUT to be able to specify a color of input text. diff --git a/openide.io/manifest.mf b/openide.io/manifest.mf --- a/openide.io/manifest.mf +++ b/openide.io/manifest.mf @@ -1,6 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.io -OpenIDE-Module-Specification-Version: 1.39 +OpenIDE-Module-Specification-Version: 1.40 OpenIDE-Module-Localizing-Bundle: org/openide/io/Bundle.properties OpenIDE-Module-Recommends: org.openide.windows.IOProvider, org.openide.windows.IOContainer$Provider AutoUpdate-Essential-Module: true diff --git a/openide.io/src/org/openide/windows/IOColors.java b/openide.io/src/org/openide/windows/IOColors.java --- a/openide.io/src/org/openide/windows/IOColors.java +++ b/openide.io/src/org/openide/windows/IOColors.java @@ -91,6 +91,22 @@ /** input text * @since 1.39 */ INPUT, + /** Info about success. Change is not guaranteed to affect colored + * output written in the past. + * @since 1.40 */ + LOG_SUCCESS, + /** Info about failure. Change is not guaranteed to affect colored + * output written in the past. + * @since 1.40 */ + LOG_FAILURE, + /**Info about warning. Change is not guaranteed to affect colored + * output written in the past. + * @since 1.40 */ + LOG_WARNING, + /** Debugging info. Change is not guaranteed to affect colored + * output written in the past. + * @since 1.40 */ + LOG_DEBUG } /**