You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.4 KiB
74 lines
2.4 KiB
11 years ago
|
/*
|
||
|
* Copyright 2000-2012 JetBrains s.r.o.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
package com.bulenkov.darcula;
|
||
|
|
||
|
import com.bulenkov.darcula.util.ColorUtil;
|
||
|
import com.bulenkov.darcula.util.GraphicsConfig;
|
||
|
import com.bulenkov.darcula.util.Gray;
|
||
|
|
||
|
import javax.swing.*;
|
||
|
import javax.swing.plaf.ComponentUI;
|
||
|
import javax.swing.plaf.basic.BasicTableHeaderUI;
|
||
|
import javax.swing.table.JTableHeader;
|
||
|
import javax.swing.table.TableColumn;
|
||
|
import java.awt.*;
|
||
|
import java.util.Enumeration;
|
||
|
|
||
|
/**
|
||
|
* @author Konstantin Bulenkov
|
||
|
*/
|
||
|
public class DarculaTableHeaderUI extends BasicTableHeaderUI {
|
||
|
|
||
|
@SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"})
|
||
|
public static ComponentUI createUI(JComponent c) {
|
||
|
return new DarculaTableHeaderUI();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void paint(Graphics g2, JComponent c) {
|
||
|
final Graphics2D g = (Graphics2D)g2;
|
||
|
final GraphicsConfig config = new GraphicsConfig(g);
|
||
|
final Color bg = c.getBackground();
|
||
|
g.setPaint(new GradientPaint(0, 0, ColorUtil.shift(bg, 1.4), 0, c.getHeight(), ColorUtil.shift(bg, 0.9)));
|
||
|
final int h = c.getHeight();
|
||
|
final int w = c.getWidth();
|
||
|
g.fillRect(0,0, w, h);
|
||
|
g.setPaint(ColorUtil.shift(bg, 0.75));
|
||
|
g.drawLine(0, h-1, w, h-1);
|
||
|
g.drawLine(w-1, 0, w-1, h-1);
|
||
|
|
||
|
final Enumeration<TableColumn> columns = ((JTableHeader)c).getColumnModel().getColumns();
|
||
|
|
||
|
final Color lineColor = ColorUtil.shift(bg, 0.7);
|
||
|
final Color shadow = Gray._255.withAlpha(30);
|
||
|
int offset = 0;
|
||
|
while (columns.hasMoreElements()) {
|
||
|
final TableColumn column = columns.nextElement();
|
||
|
if (columns.hasMoreElements() && column.getWidth() > 0) {
|
||
|
offset += column.getWidth();
|
||
|
g.setColor(lineColor);
|
||
|
g.drawLine(offset-1, 1, offset-1, h-3);
|
||
|
g.setColor(shadow);
|
||
|
g.drawLine(offset, 1, offset, h-3);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
config.restore();
|
||
|
|
||
|
super.paint(g, c);
|
||
|
}
|
||
|
}
|