netbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lkisha...@apache.org
Subject [netbeans] branch master updated: [NETBEANS-3428] FlatLaf: multi-tabs in FlatLaf style
Date Mon, 13 Jan 2020 17:29:06 GMT
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new e53e002  [NETBEANS-3428] FlatLaf: multi-tabs in FlatLaf style
e53e002 is described below

commit e53e002e34299ba57e85ffa1ce8e6707ea14721a
Author: Karl Tauber <karl@jformdesigner.com>
AuthorDate: Sun Jan 12 18:09:45 2020 +0100

    [NETBEANS-3428] FlatLaf: multi-tabs in FlatLaf style
---
 .../org/netbeans/core/multitabs/TabbedImpl.java    | 12 ++++-
 .../core/multitabs/impl/AbstractTabDisplayer.java  | 18 +++++++-
 .../core/multitabs/impl/ControlsToolbar.java       |  1 +
 .../multitabs/impl/ProjectColorTabDecorator.java   | 33 +++++++++-----
 .../core/multitabs/impl/TabDataRenderer.java       | 53 +++++++++++++++++++++-
 .../org/netbeans/core/multitabs/impl/TabTable.java | 21 +++++++++
 .../netbeans/core/multitabs/impl/TabTableUI.java   | 22 ++++++++-
 .../org/netbeans/core/multiview/TabsComponent.java |  7 ++-
 .../swing/laf/flatlaf/FlatDarkLaf.properties       | 19 ++++++--
 .../netbeans/swing/laf/flatlaf/FlatLFCustoms.java  |  6 ++-
 .../netbeans/swing/laf/flatlaf/FlatLaf.properties  | 18 ++++++++
 .../swing/laf/flatlaf/FlatLightLaf.properties      |  4 +-
 .../src/org/netbeans/swing/plaf/LFCustoms.java     |  1 +
 13 files changed, 190 insertions(+), 25 deletions(-)

diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/TabbedImpl.java b/platform/core.multitabs/src/org/netbeans/core/multitabs/TabbedImpl.java
index 61bb26d..03b6cf7 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/TabbedImpl.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/TabbedImpl.java
@@ -36,6 +36,7 @@ import org.netbeans.swing.tabcontrol.DefaultTabDataModel;
 import org.netbeans.swing.tabcontrol.TabData;
 import org.netbeans.swing.tabcontrol.TabDataModel;
 import org.netbeans.swing.tabcontrol.WinsysInfoForTabbedContainer;
+import org.netbeans.swing.tabcontrol.customtabs.Tabbed;
 import org.netbeans.swing.tabcontrol.plaf.BusyTabsSupport;
 import org.openide.windows.TopComponent;
 
@@ -53,6 +54,7 @@ public final class TabbedImpl extends AbstractTabbedImpl {
     private final Controller controller;
     private final DefaultTabDataModel tabModel;
     private ComponentConverter componentConverter = ComponentConverter.DEFAULT;
+    private boolean active;
 
     public TabbedImpl( WinsysInfoForTabbedContainer winsysInfo, int orientation ) {
         tabModel = new DefaultTabDataModel();
@@ -162,9 +164,17 @@ public final class TabbedImpl extends AbstractTabbedImpl {
         tabModel.setToolTipTextAt(index, toolTip);
     }
 
+
+    public static boolean isActive( Component c ) {
+        Tabbed.Accessor acc = (Tabbed.Accessor)SwingUtilities.getAncestorOfClass(Tabbed.Accessor.class,
c);
+        return acc != null
+                && acc.getTabbed() instanceof TabbedImpl
+                && ((TabbedImpl) acc.getTabbed()).active;
+    }
+
     @Override
     public void setActive( boolean active ) {
-        //TODO implement
+        this.active = active;
     }
 
     @Override
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/AbstractTabDisplayer.java
b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/AbstractTabDisplayer.java
index 4fd4593..b89677d 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/AbstractTabDisplayer.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/AbstractTabDisplayer.java
@@ -32,8 +32,6 @@ import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
 import java.awt.event.MouseWheelEvent;
 import java.awt.event.MouseWheelListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -49,6 +47,7 @@ import org.netbeans.core.multitabs.ButtonFactory;
 import org.netbeans.core.multitabs.Controller;
 import org.netbeans.core.multitabs.Settings;
 import org.netbeans.core.multitabs.TabDisplayer;
+import org.netbeans.core.multitabs.TabbedImpl;
 import org.netbeans.swing.tabcontrol.TabData;
 import org.netbeans.swing.tabcontrol.TabDataModel;
 
@@ -171,6 +170,21 @@ abstract class AbstractTabDisplayer extends TabDisplayer implements MouseWheelLi
     }
 
     @Override
+    public Color getBackground() {
+        Color activeBackground = UIManager.getColor("nb.multitabs.activeBackground"); //
NOI18N
+        if (activeBackground != null && TabbedImpl.isActive(this)) {
+            return activeBackground;
+        }
+
+        Color background = UIManager.getColor("nb.multitabs.background"); // NOI18N
+        if (background != null) {
+            return background;
+        }
+
+        return super.getBackground();
+    }
+
+    @Override
     public void attach( final Controller controller ) {
         this.controller = controller;
         controls.add( ButtonFactory.createDropDownButton( controller ) );
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ControlsToolbar.java
b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ControlsToolbar.java
index d0a81f5..884b05f 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ControlsToolbar.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ControlsToolbar.java
@@ -58,6 +58,7 @@ final class ControlsToolbar extends JToolBar {
     private void configure() {
         setFloatable( false );
         setFocusable( false );
+        setOpaque( false );
         setBorder( BorderFactory.createEmptyBorder() );
         setBorderPainted( false );
         if( TabTableUI.IS_AQUA ) {
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ProjectColorTabDecorator.java
b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ProjectColorTabDecorator.java
index 31da6d9..2f5fe4b 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ProjectColorTabDecorator.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/ProjectColorTabDecorator.java
@@ -21,14 +21,13 @@ package org.netbeans.core.multitabs.impl;
 import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.WeakHashMap;
 import javax.swing.Icon;
+import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import org.netbeans.core.multitabs.Settings;
@@ -63,15 +62,27 @@ public class ProjectColorTabDecorator extends TabDecorator {
 
     static {
         backGroundColors = new ArrayList<Color>( 10 );
-        backGroundColors.add( new Color( 216, 255, 237 ) );
-        backGroundColors.add( new Color( 255, 221, 221 ) );
-        backGroundColors.add( new Color( 255, 247, 214 ) );
-        backGroundColors.add( new Color( 216, 239, 255 ) );
-        backGroundColors.add( new Color( 241, 255, 209 ) );
-        backGroundColors.add( new Color( 255, 225, 209 ) );
-        backGroundColors.add( new Color( 228, 255, 216 ) );
-        backGroundColors.add( new Color( 227, 255, 158 ) );
-        backGroundColors.add( new Color( 238, 209, 255 ) );
+
+        // load background colors from UI defaults if available
+        if (UIManager.getColor("nb.multitabs.project.1.background") != null) {
+            for (int i = 1; i <= 100; i++) {
+                Color color = UIManager.getColor("nb.multitabs.project." + i + ".background");
+                if (color == null) {
+                    break;
+                }
+                backGroundColors.add(color);
+            }
+        } else {
+            backGroundColors.add( new Color( 216, 255, 237 ) );
+            backGroundColors.add( new Color( 255, 221, 221 ) );
+            backGroundColors.add( new Color( 255, 247, 214 ) );
+            backGroundColors.add( new Color( 216, 239, 255 ) );
+            backGroundColors.add( new Color( 241, 255, 209 ) );
+            backGroundColors.add( new Color( 255, 225, 209 ) );
+            backGroundColors.add( new Color( 228, 255, 216 ) );
+            backGroundColors.add( new Color( 227, 255, 158 ) );
+            backGroundColors.add( new Color( 238, 209, 255 ) );
+        }
 
         ProjectSupport projects = ProjectSupport.getDefault();
         if( projects.isEnabled() && Settings.getDefault().isSameProjectSameColor()
) {
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabDataRenderer.java
b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabDataRenderer.java
index eae9c1f..e6a62c2 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabDataRenderer.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabDataRenderer.java
@@ -24,6 +24,7 @@ import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.EventQueue;
 import java.awt.Graphics;
+import java.awt.Insets;
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.util.ArrayList;
@@ -33,9 +34,13 @@ import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
 import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
 import javax.swing.table.TableCellRenderer;
 import org.netbeans.core.multitabs.TabDecorator;
+import org.netbeans.core.multitabs.TabbedImpl;
 import org.netbeans.core.windows.view.ui.tabcontrol.Utilities;
 import org.netbeans.swing.tabcontrol.TabData;
 import org.openide.awt.CloseButtonFactory;
@@ -48,6 +53,12 @@ import org.openide.windows.TopComponent;
  */
 public class TabDataRenderer implements TableCellRenderer {
 
+    private static final Insets tabInsets = UIManager.getInsets("nb.multitabs.tabInsets");
// NOI18N
+    private static final int underlineHeight = UIManager.getInt("nb.multitabs.underlineHeight");
// NOI18N
+    private static final Color underlineColor = UIManager.getColor("nb.multitabs.underlineColor");
// NOI18N
+    private static final Color inactiveUnderlineColor = UIManager.getColor("nb.multitabs.inactiveUnderlineColor");
// NOI18N
+    private static final Color activeBackground = UIManager.getColor("nb.multitabs.activeBackground");
// NOI18N
+
     private final RendererPanel renderer = new RendererPanel();
     private final List<TabDecorator> decorators = getDecorators();
 
@@ -63,6 +74,12 @@ public class TabDataRenderer implements TableCellRenderer {
             Color colBackground = isSelected ? table.getSelectionBackground() : table.getBackground();
             Color colForeground = isSelected ? table.getSelectionForeground() : table.getForeground();
 
+            boolean isActive = (activeBackground != null || underlineColor != null)
+                ? TabbedImpl.isActive(table) : false;
+            if (!isSelected && isActive && activeBackground != null) {
+                colBackground = activeBackground;
+            }
+
             for( TabDecorator td : decorators ) {
                 Color c = td.getBackground( tab, isSelected );
                 if( null != c )
@@ -87,6 +104,8 @@ public class TabDataRenderer implements TableCellRenderer {
             renderer.label.setForeground( colForeground );
             renderer.tabData = tab;
             renderer.isSelected = isSelected;
+            renderer.isActive = isActive;
+            renderer.tabsLocation = (table instanceof TabTable) ? ((TabTable)table).getTabsLocation()
: JTabbedPane.TOP;
 
             if( table instanceof TabTable ) {
                 TabTable tabTable = ( TabTable ) table;
@@ -170,9 +189,15 @@ public class TabDataRenderer implements TableCellRenderer {
         private final JButton closeButton;
         private TabData tabData;
         private boolean isSelected;
+        private boolean isActive;
+        private int tabsLocation = JTabbedPane.TOP;
 
         public RendererPanel() {
             super( new BorderLayout( 0, 0 ) );
+            if (tabInsets != null) {
+                setBorder(new EmptyBorder(tabInsets));
+            }
+
             label = new JLabel();
             label.setBorder( BorderFactory.createEmptyBorder( 2, 2, 2, 3) );
             add( label, BorderLayout.CENTER );
@@ -187,6 +212,8 @@ public class TabDataRenderer implements TableCellRenderer {
             setOpaque( true );
             tabData = null;
             isSelected = false;
+            isActive = false;
+            tabsLocation = JTabbedPane.TOP;
             closeButton.getModel().setArmed( false );
             closeButton.getModel().setRollover( false );
             closeButton.setVisible( true );
@@ -198,6 +225,29 @@ public class TabDataRenderer implements TableCellRenderer {
             Rectangle rect = getBounds();
             rect.x = 0;
             rect.y = 0;
+
+            // paint underline selection
+            if (isSelected && underlineHeight > 0 && underlineColor !=
null) {
+                g.setColor(isActive || inactiveUnderlineColor == null
+                        ? underlineColor : inactiveUnderlineColor);
+                switch (tabsLocation) {
+                    default:
+                    case JTabbedPane.TOP:
+                        g.fillRect(0, rect.height - underlineHeight, rect.width, underlineHeight);
+                        break;
+                    case JTabbedPane.BOTTOM:
+                        g.fillRect(0, 0, rect.width, underlineHeight);
+                        break;
+                    case JTabbedPane.LEFT:
+                        g.fillRect(rect.width - underlineHeight, 0, underlineHeight, rect.height);
+                        break;
+                    case JTabbedPane.RIGHT:
+                        g.fillRect(0, 0, underlineHeight, rect.height);
+                        break;
+                }
+            }
+
+            // paint tab decorators
             for( TabDecorator td : decorators ) {
                 td.paintAfter( tabData, g, rect, isSelected );
             }
@@ -218,7 +268,8 @@ public class TabDataRenderer implements TableCellRenderer {
 
     static int getPreferredTableRowHeight() {
         JLabel lbl = new JLabel( "ABC" ); //NOI18N
-        return 2+2+Math.max( 16, lbl.getPreferredSize().height );
+        int topBottomInsets = (tabInsets != null) ? tabInsets.top + tabInsets.bottom : 2
+ 2;
+        return topBottomInsets + Math.max( 16, lbl.getPreferredSize().height );
     }
 
     private static List<TabDecorator> getDecorators() {
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTable.java b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTable.java
index 6b813bf..5ab3ff8 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTable.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTable.java
@@ -27,6 +27,7 @@ import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingConstants;
 import javax.swing.ToolTipManager;
+import javax.swing.UIManager;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 import javax.swing.plaf.TableUI;
@@ -42,12 +43,14 @@ import org.openide.util.NbBundle;
  */
 public class TabTable extends JTable {
 
+    private int tabsLocation = JTabbedPane.TOP;
     private final int  orientation;
     private final TabDataRenderer renderer = new TabDataRenderer();
 
     public TabTable( TabDataModel tabModel, int tabsLocation ) {
         this( TabTableModel.create(tabModel, tabsLocation),
                 tabsLocation == JTabbedPane.TOP || tabsLocation == JTabbedPane.BOTTOM ? JTabbedPane.HORIZONTAL
: JTabbedPane.VERTICAL );
+        this.tabsLocation = tabsLocation;
     }
 
     protected TabTable( TabTableModel tableModel, int orientation ) {
@@ -76,6 +79,20 @@ public class TabTable extends JTable {
         setFocusable( false );
         ToolTipManager.sharedInstance().registerComponent( this );
         setDefaultRenderer( Object.class, renderer );
+
+        // show/hide vertical/horizontal grid lines depending on orientation
+        Object showVerticalLines = UIManager.get("nb.multitabs.showVerticalLines"); //NOI18N
+        Object showHorizontalLines = UIManager.get("nb.multitabs.showHorizontalLines"); //NOI18N
+        if (showVerticalLines instanceof Boolean) {
+            boolean show = (Boolean) showVerticalLines && orientation == JTabbedPane.HORIZONTAL;
+            setShowVerticalLines(show);
+            setIntercellSpacing(new Dimension(show ? 1 : 0, getIntercellSpacing().height));
+        }
+        if (showHorizontalLines instanceof Boolean) {
+            boolean show = (Boolean) showHorizontalLines && orientation != JTabbedPane.HORIZONTAL;
+            setShowHorizontalLines(show);
+            setIntercellSpacing(new Dimension(getIntercellSpacing().width, show ? 1 : 0));
+        }
     }
 
     @Override
@@ -84,6 +101,10 @@ public class TabTable extends JTable {
         setRowHeight( TabDataRenderer.getPreferredTableRowHeight() );
     }
 
+    int getTabsLocation() {
+        return tabsLocation;
+    }
+
     @Override
     public boolean getScrollableTracksViewportHeight() {
         return orientation == JTabbedPane.HORIZONTAL ? true : super.getScrollableTracksViewportHeight();
diff --git a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTableUI.java
b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTableUI.java
index c76b9f5..38449b7 100644
--- a/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTableUI.java
+++ b/platform/core.multitabs/src/org/netbeans/core/multitabs/impl/TabTableUI.java
@@ -42,7 +42,7 @@ final class TabTableUI extends BasicTableUI {
         if( IS_AQUA ) {
             return BorderFactory.createMatteBorder( 1, 0, 0, 0, table.getGridColor());
         } else {
-            if( tabsLocation != JTabbedPane.TOP )
+            if( tabsLocation != JTabbedPane.TOP && !UIManager.getBoolean("nb.multitabs.noTabBorder")
) //NOI18N
                 return BorderFactory.createMatteBorder( 1, 0, 0, 0, table.getGridColor());
         }
         return BorderFactory.createEmptyBorder();
@@ -50,7 +50,8 @@ final class TabTableUI extends BasicTableUI {
 
     @Override
     protected void installDefaults() {
-        super.installDefaults(); //To change body of generated methods, choose Tools | Templates.
+        super.installDefaults();
+
         String lafId = UIManager.getLookAndFeel().getID();
         if( "Windows".equals( lafId ) ) { //NOI18N
             Color background = UIManager.getColor( "TabbedPane.background"); //NOI18N
@@ -100,6 +101,23 @@ final class TabTableUI extends BasicTableUI {
                 txtFont = new Font(txtFont.getName(), Font.PLAIN, txtFont.getSize());
             }
             table.setFont( txtFont );
+        } else {
+            Color background = UIManager.getColor("nb.multitabs.background"); //NOI18N
+            Color foreground = UIManager.getColor("nb.multitabs.foreground"); //NOI18N
+            Color selectedBackground = UIManager.getColor("nb.multitabs.selectedBackground");
//NOI18N
+            Color selectedForeground = UIManager.getColor("nb.multitabs.selectedForeground");
//NOI18N
+            Color gridColor = UIManager.getColor("nb.multitabs.gridColor"); //NOI18N
+
+            if (background != null)
+                table.setBackground(background);
+            if (foreground != null)
+                table.setForeground(foreground);
+            if (selectedBackground != null)
+                table.setSelectionBackground(selectedBackground);
+            if (selectedForeground != null)
+                table.setSelectionForeground(selectedForeground);
+            if (gridColor != null)
+                table.setGridColor(gridColor);
         }
     }
 
diff --git a/platform/core.multiview/src/org/netbeans/core/multiview/TabsComponent.java b/platform/core.multiview/src/org/netbeans/core/multiview/TabsComponent.java
index cebfdd7..c227a12 100644
--- a/platform/core.multiview/src/org/netbeans/core/multiview/TabsComponent.java
+++ b/platform/core.multiview/src/org/netbeans/core/multiview/TabsComponent.java
@@ -79,9 +79,12 @@ class TabsComponent extends JPanel {
     /** Creates a new instance of TabsComponent */
     public TabsComponent(boolean toolVis) {
         super();
+        Border border = UIManager.getBorder("Nb.Editor.TabsComponent.border"); //NOI18N
+        if (border != null)
+            setBorder(border);
+
         bar = new JToolBar();
-        Border b = (Border)UIManager.get("Nb.Editor.Toolbar.border"); //NOI18N
-        bar.setBorder(b);
+        bar.setBorder(UIManager.getBorder("Nb.Editor.Toolbar.border")); //NOI18N
         bar.setFloatable(false);
         bar.setFocusable(true);
         if( "Windows".equals( UIManager.getLookAndFeel().getID())
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatDarkLaf.properties
b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatDarkLaf.properties
index 21de0ae..11be6ac 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatDarkLaf.properties
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatDarkLaf.properties
@@ -29,14 +29,14 @@ EditorTab.background=@background
 #EditorTab.foreground=#f00
 EditorTab.activeBackground=#3B4754
 #EditorTab.activeForeground=#f00
-EditorTab.selectedBackground=#4E5254
-#EditorTab.selectedForeground=#0f0
+EditorTab.selectedBackground=#5c6164
+EditorTab.selectedForeground=lighten(@foreground,10%)
 EditorTab.hoverBackground=$TabbedPane.hoverColor
 #EditorTab.hoverForeground=#f00
 EditorTab.attentionBackground=#E6C840
 EditorTab.attentionForeground=#000
 EditorTab.underlineColor=$TabbedPane.underlineColor
-EditorTab.inactiveUnderlineColor=#747A80
+EditorTab.inactiveUnderlineColor=lighten($TabbedPane.disabledUnderlineColor,5%)
 
 
 #---- ViewTab ----
@@ -63,6 +63,19 @@ SlidingButton.attentionBackground=$ViewTab.attentionBackground
 SlidingButton.attentionForeground=$ViewTab.attentionForeground
 
 
+#---- Multi-tabs ----
+
+nb.multitabs.project.1.background=rgb(96, 135, 117)
+nb.multitabs.project.2.background=rgb(135, 101, 101)
+nb.multitabs.project.3.background=rgb(135, 127, 94)
+nb.multitabs.project.4.background=rgb(96, 119, 135)
+nb.multitabs.project.5.background=rgb(121, 135, 89)
+nb.multitabs.project.6.background=rgb(135, 105, 89)
+nb.multitabs.project.7.background=rgb(108, 135, 96)
+nb.multitabs.project.8.background=rgb(107, 135, 38)
+nb.multitabs.project.9.background=rgb(118, 89, 135)
+
+
 #---- PropSheet ----
 
 PropSheet.setBackground=lighten(@background,10%)
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
index ab1a462..570feb7 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
@@ -38,6 +38,8 @@ public class FlatLFCustoms extends LFCustoms {
 
     @Override
     public Object[] createApplicationSpecificKeysAndValues() {
+        Color editorContentBorderColor = UIManager.getColor("TabbedContainer.editor.contentBorderColor");
// NOI18N
+
         return new Object[] {
             // necessary for org.openide.explorer.propertysheet.PropertySheet and others
             CONTROLFONT, UIManager.getFont("Label.font"),
@@ -46,7 +48,9 @@ public class FlatLFCustoms extends LFCustoms {
             VIEW_TAB_DISPLAYER_UI, "org.netbeans.swing.laf.flatlaf.ui.FlatViewTabDisplayerUI",
// NOI18N
             SLIDING_BUTTON_UI, "org.netbeans.swing.laf.flatlaf.ui.FlatSlidingButtonUI", //
NOI18N
 
-            EDITOR_TAB_CONTENT_BORDER, DPISafeBorder.matte(0, 1, 1, 1, UIManager.getColor("TabbedContainer.editor.contentBorderColor")),
// NOI18N
+            EDITOR_TABSCOMPONENT_BORDER, DPISafeBorder.matte(1, 1, 1, 1, editorContentBorderColor),
+            EDITOR_TOOLBAR_BORDER, DPISafeBorder.matte(0, 0, 1, 0, editorContentBorderColor),
+            EDITOR_TAB_CONTENT_BORDER, DPISafeBorder.matte(0, 1, 1, 1, editorContentBorderColor),
             VIEW_TAB_CONTENT_BORDER, DPISafeBorder.matte(0, 1, 1, 1, UIManager.getColor("TabbedContainer.view.contentBorderColor")),
// NOI18N
 
             // scale on Java 8 and Linux
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLaf.properties
b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLaf.properties
index 7b456f8..d48308b 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLaf.properties
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLaf.properties
@@ -47,6 +47,24 @@ ViewTab.underlineHeight=3
 #ViewTab.underlineAtTop=true
 
 
+#---- Multi-tabs ----
+
+nb.multitabs.tabInsets=6,2,6,2
+nb.multitabs.underlineHeight=3
+nb.multitabs.showVerticalLines=true
+nb.multitabs.showHorizontalLines=false
+nb.multitabs.gridColor=$Component.borderColor
+nb.multitabs.noTabBorder=true
+
+nb.multitabs.background=$EditorTab.background
+nb.multitabs.foreground=@foreground
+nb.multitabs.activeBackground=$EditorTab.activeBackground
+nb.multitabs.selectedBackground=$EditorTab.selectedBackground
+nb.multitabs.selectedForeground=$EditorTab.selectedForeground
+nb.multitabs.underlineColor=$TabbedPane.underlineColor
+nb.multitabs.inactiveUnderlineColor=$EditorTab.inactiveUnderlineColor
+
+
 #---- TabControlIcon ----
 
 TabControlIcon.foreground=$ComboBox.buttonArrowColor
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLightLaf.properties
b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLightLaf.properties
index c5521b7..953ce35 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLightLaf.properties
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLightLaf.properties
@@ -23,8 +23,8 @@ EditorTab.background=@background
 #EditorTab.foreground=#f00
 EditorTab.activeBackground=#E2E6EC
 #EditorTab.activeForeground=#f00
-EditorTab.selectedBackground=#FCFCFC
-#EditorTab.selectedForeground=#0f0
+EditorTab.selectedBackground=#FFF
+EditorTab.selectedForeground=@foreground
 EditorTab.hoverBackground=$TabbedPane.hoverColor
 #EditorTab.hoverForeground=#f00
 EditorTab.attentionBackground=#E6C840
diff --git a/platform/o.n.swing.plaf/src/org/netbeans/swing/plaf/LFCustoms.java b/platform/o.n.swing.plaf/src/org/netbeans/swing/plaf/LFCustoms.java
index 770d698..09fb0be 100644
--- a/platform/o.n.swing.plaf/src/org/netbeans/swing/plaf/LFCustoms.java
+++ b/platform/o.n.swing.plaf/src/org/netbeans/swing/plaf/LFCustoms.java
@@ -316,6 +316,7 @@ public abstract class LFCustoms {
     protected static final String EDITOR_STATUS_INNER_BORDER = "Nb.Editor.Status.innerBorder";
//NOI18N
     protected static final String EDITOR_STATUS_RIGHT_BORDER = "Nb.Editor.Status.rightBorder";
//NOI18N
     protected static final String EDITOR_STATUS_ONLYONEBORDER = "Nb.Editor.Status.onlyOneBorder";
//NOI18N
+    protected static final String EDITOR_TABSCOMPONENT_BORDER = "Nb.Editor.TabsComponent.border";
//NOI18N
     protected static final String EDITOR_TOOLBAR_BORDER = "Nb.Editor.Toolbar.border"; //NOI18N
     protected static final String EDITOR_ERRORSTRIPE_SCROLLBAR_INSETS = "Nb.Editor.ErrorStripe.ScrollBar.Insets";
//NOI18N
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Mime
View raw message