package org.openflexo.swing.layout;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Point;
import java.awt.RadialGradientPaint;
import org.openflexo.swing.layout.JXMultiSplitPane.DividerPainter;
import org.openflexo.swing.layout.MultiSplitLayout.Divider;
public class KnobDividerPainter extends DividerPainter {
private static final int KNOB_SIZE = 5;
private static final int KNOB_SPACE = 2;
private static final int DIVIDER_SIZE = KNOB_SIZE + 2 * KNOB_SPACE;
private static final int DIVIDER_KNOB_SIZE = 3 * KNOB_SIZE + 2 * KNOB_SPACE;
private static final Paint KNOB_PAINTER = new RadialGradientPaint(new Point((KNOB_SIZE - 1) / 2, (KNOB_SIZE - 1) / 2),
(KNOB_SIZE - 1) / 2, new float[] { 0.0f, 1.0f }, new Color[] { Color.GRAY, Color.LIGHT_GRAY });
@Override
protected void doPaint(Graphics2D g, Divider divider, int width, int height) {
if (!divider.isVisible()) {
return;
}
if (divider.isVertical()) {
int x = (width - KNOB_SIZE) / 2;
int y = (height - DIVIDER_KNOB_SIZE) / 2;
for (int i = 0; i < 3; i++) {
Graphics2D graph = (Graphics2D) g.create(x, y + i * (KNOB_SIZE + KNOB_SPACE), KNOB_SIZE + 1, KNOB_SIZE + 1);
graph.setPaint(KNOB_PAINTER);
graph.fillOval(0, 0, KNOB_SIZE, KNOB_SIZE);
}
} else {
int x = (width - DIVIDER_KNOB_SIZE) / 2;
int y = (height - KNOB_SIZE) / 2;
for (int i = 0; i < 3; i++) {
Graphics2D graph = (Graphics2D) g.create(x + i * (KNOB_SIZE + KNOB_SPACE), y, KNOB_SIZE + 1, KNOB_SIZE + 1);
graph.setPaint(KNOB_PAINTER);
graph.fillOval(0, 0, KNOB_SIZE, KNOB_SIZE);
}
}
}
}