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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists