add RangeSlider support

This commit is contained in:
mmatessi
2020-11-11 16:57:40 +01:00
parent 8594e78287
commit 5cae3a8141
7 changed files with 1080 additions and 200 deletions

View File

@@ -61,14 +61,14 @@ import com.formdev.flatlaf.util.UIScale;
public class FlatSliderUI public class FlatSliderUI
extends BasicSliderUI extends BasicSliderUI
{ {
private int trackWidth; protected int trackWidth;
private int thumbWidth; protected int thumbWidth;
private Color trackColor; protected Color trackColor;
private Color thumbColor; protected Color thumbColor;
private Color focusColor; protected Color focusColor;
private Color hoverColor; protected Color hoverColor;
private Color disabledForeground; protected Color disabledForeground;
private MouseListener hoverListener; private MouseListener hoverListener;
private boolean hover; private boolean hover;

View File

@@ -70,8 +70,11 @@ public class FlatJideOssDefaultsAddon
for( Map.Entry<Object, Object> e : defaults.entrySet() ) { for( Map.Entry<Object, Object> e : defaults.entrySet() ) {
Object key = e.getKey(); Object key = e.getKey();
if( key instanceof String && if( key instanceof String &&
(((String)key).startsWith( "Jide" ) || (
((String)key).equals( "Resizable.resizeBorder" )) ) ((String)key).startsWith( "Jide" ) ||
((String)key).equals( "RangeSliderUI" ) ||
((String)key).equals( "Resizable.resizeBorder" ))
)
{ {
jideDefaults.put( key, e.getValue() ); jideDefaults.put( key, e.getValue() );
} }

View File

@@ -0,0 +1,606 @@
package com.formdev.flatlaf.jideoss.ui;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
import java.lang.reflect.Field;
import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicSliderUI;
import com.formdev.flatlaf.ui.FlatSliderUI;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.UIScale;
import com.jidesoft.swing.RangeSlider;
public class FlatRangeSliderUI
extends FlatSliderUI
{
private Rectangle firstThumbRect;
public FlatRangeSliderUI() {
super();
}
public static ComponentUI createUI( JComponent slider ) {
return new FlatRangeSliderUI();
}
@Override
public void paintTrack( Graphics g ) {
boolean enabled = slider.isEnabled();
float tw = UIScale.scale( (float) trackWidth );
float arc = tw;
RoundRectangle2D coloredTrack = null;
RoundRectangle2D track;
if( slider.getOrientation() == JSlider.HORIZONTAL ) {
float y = trackRect.y + (trackRect.height - tw) / 2f;
if( enabled ) {
if( slider.getComponentOrientation().isLeftToRight() ) {
int cw = thumbRect.x + (thumbRect.width / 2) - trackRect.x;
if( second ) {
track = new RoundRectangle2D.Float( trackRect.x + cw, y, trackRect.width - cw, tw, arc, arc );
int firstCw = firstThumbRect.x + (firstThumbRect.width / 2) - trackRect.x;
coloredTrack = new RoundRectangle2D.Float( trackRect.x + firstCw, y, cw - firstCw, tw, arc,
arc );
} else {
track = new RoundRectangle2D.Float( trackRect.x, y, cw, tw, arc, arc );
}
} else {
int cw = trackRect.x + trackRect.width - thumbRect.x - (thumbRect.width / 2);
if( second ) {
int firstCw = trackRect.x + trackRect.width - firstThumbRect.x - (firstThumbRect.width / 2);
track = new RoundRectangle2D.Float( trackRect.x, y, trackRect.width - cw, tw, arc, arc );
coloredTrack = new RoundRectangle2D.Float( trackRect.x + trackRect.width - cw, y, cw - firstCw,
tw, arc, arc );
} else {
track = new RoundRectangle2D.Float( trackRect.x + trackRect.width - cw, y, cw, tw, arc, arc );
}
}
} else {
track = new RoundRectangle2D.Float( trackRect.x, y, trackRect.width, tw, arc, arc );
}
} else {
float x = trackRect.x + (trackRect.width - tw) / 2f;
if( enabled ) {
int ch = thumbRect.y + (thumbRect.height / 2) - trackRect.y;
if( second ) {
int firstCh = firstThumbRect.y + (firstThumbRect.height / 2) - trackRect.y;
track = new RoundRectangle2D.Float( x, trackRect.y, tw, ch, arc, arc );
coloredTrack = new RoundRectangle2D.Float( x, trackRect.y + ch, tw, firstCh - ch, arc, arc );
} else {
track = new RoundRectangle2D.Float( x, trackRect.y + ch, tw, trackRect.height - ch, arc, arc );
}
} else {
track = new RoundRectangle2D.Float( x, trackRect.y, tw, trackRect.height, arc, arc );
}
}
if( coloredTrack != null ) {
g.setColor( FlatUIUtils.deriveColor(
FlatUIUtils.isPermanentFocusOwner( slider ) ? focusColor : (hover ? hoverColor : thumbColor),
thumbColor ) );
((Graphics2D) g).fill( coloredTrack );
}
g.setColor( enabled ? trackColor : disabledForeground );
((Graphics2D) g).fill( track );
}
// ********************************
// From BasicRangeSliderUI
// ********************************
@Override
public void paint( Graphics g, JComponent c ) {
second = false;
super.paint( g, c );
Rectangle clip = g.getClipBounds();
firstThumbRect = new Rectangle( thumbRect );
second = true;
Point p = adjustThumbForHighValue();
if( clip.intersects( thumbRect ) ) {
paintTrack( g );
paintThumb( g );
}
restoreThumbForLowValue( p );
second = false;
}
protected void restoreThumbForLowValue( Point p ) {
thumbRect.x = p.x;
thumbRect.y = p.y;
}
protected Point adjustThumbForHighValue() {
Point p = thumbRect.getLocation();
if( slider.getOrientation() == JSlider.HORIZONTAL ) {
int valuePosition = xPositionForValue( ((RangeSlider) slider).getHighValue() );
thumbRect.x = valuePosition - (thumbRect.width / 2);
} else {
int valuePosition = yPositionForValue( ((RangeSlider) slider).getHighValue() );
thumbRect.y = valuePosition - (thumbRect.height / 2);
}
return p;
}
protected void adjustSnapHighValue() {
int sliderValue = ((RangeSlider) slider).getHighValue();
int snappedValue = sliderValue;
int majorTickSpacing = slider.getMajorTickSpacing();
int minorTickSpacing = slider.getMinorTickSpacing();
int tickSpacing = 0;
if( minorTickSpacing > 0 ) {
tickSpacing = minorTickSpacing;
} else if( majorTickSpacing > 0 ) {
tickSpacing = majorTickSpacing;
}
if( tickSpacing != 0 ) {
// If it's not on a tick, change the value
if( (sliderValue - slider.getMinimum()) % tickSpacing != 0 ) {
float temp = (float) (sliderValue - slider.getMinimum()) / (float) tickSpacing;
int whichTick = Math.round( temp );
snappedValue = slider.getMinimum() + (whichTick * tickSpacing);
}
if( snappedValue != sliderValue ) {
((RangeSlider) slider).setHighValue( snappedValue );
}
}
}
@Override
protected void calculateThumbLocation() {
if( slider.getSnapToTicks() ) {
adjustSnapHighValue();
}
super.calculateThumbLocation();
}
@Override
protected BasicSliderUI.TrackListener createTrackListener( JSlider slider ) {
return new RangeTrackListener( super.createTrackListener( slider ) );
}
protected class RangeTrackListener
extends BasicSliderUI.TrackListener
{
int handle;
int handleOffset;
int mouseStartLocation;
BasicSliderUI.TrackListener _listener;
public RangeTrackListener( BasicSliderUI.TrackListener listener ) {
_listener = listener;
}
/**
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
@Override
public void mousePressed( MouseEvent e ) {
if( !slider.isEnabled() ) {
return;
}
if( slider.isRequestFocusEnabled() ) {
slider.requestFocus();
}
handle = getMouseHandle( e.getX(), e.getY() );
setMousePressed( handle );
if( handle == MOUSE_HANDLE_MAX || handle == MOUSE_HANDLE_MIN || handle == MOUSE_HANDLE_MIDDLE || handle == MOUSE_HANDLE_BOTH ) {
handleOffset = (slider.getOrientation() == JSlider.VERTICAL)
? e.getY() - yPositionForValue( ((RangeSlider) slider).getLowValue() )
: e.getX() - xPositionForValue( ((RangeSlider) slider).getLowValue() );
mouseStartLocation = (slider.getOrientation() == JSlider.VERTICAL) ? e.getY() : e.getX();
slider.getModel().setValueIsAdjusting( true );
} else if( handle == MOUSE_HANDLE_LOWER || handle == MOUSE_HANDLE_UPPER ) {
_listener.mousePressed( e );
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, null );
}
}
/**
* @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
*/
@Override
public void mouseDragged( MouseEvent e ) {
if( !slider.isEnabled() ) {
return;
}
int newLocation = (slider.getOrientation() == JSlider.VERTICAL) ? e.getY() : e.getX();
int newValue = (slider.getOrientation() == JSlider.VERTICAL)
? valueForYPosition( newLocation )
: valueForXPosition( newLocation );
if( newValue < slider.getModel().getMinimum() ) {
newValue = slider.getModel().getMinimum();
}
if( newValue > slider.getModel().getMaximum() ) {
newValue = slider.getModel().getMaximum();
}
if( handle == MOUSE_HANDLE_BOTH ) {
if( (newLocation - mouseStartLocation) >= 1 ) {
handle = MOUSE_HANDLE_MAX;
} else if( (newLocation - mouseStartLocation) <= -1 ) {
handle = MOUSE_HANDLE_MIN;
} else {
return;
}
}
RangeSlider rangeSlider = (RangeSlider) slider;
switch( handle ) {
case MOUSE_HANDLE_MIN:
rangeSlider.setLowValue( Math.min( newValue, rangeSlider.getHighValue() ) );
break;
case MOUSE_HANDLE_MAX:
rangeSlider.setHighValue( Math.max( rangeSlider.getLowValue(), newValue ) );
break;
case MOUSE_HANDLE_MIDDLE:
if( ((RangeSlider) slider).isRangeDraggable() ) {
int delta = (slider.getOrientation() == JSlider.VERTICAL)
? valueForYPosition( newLocation - handleOffset ) - rangeSlider.getLowValue()
: valueForXPosition( newLocation - handleOffset ) - rangeSlider.getLowValue();
if( (delta < 0) && ((rangeSlider.getLowValue() + delta) < rangeSlider.getMinimum()) ) {
delta = rangeSlider.getMinimum() - rangeSlider.getLowValue();
}
if( (delta > 0) && ((rangeSlider.getHighValue() + delta) > rangeSlider.getMaximum()) ) {
delta = rangeSlider.getMaximum() - rangeSlider.getHighValue();
}
if( delta != 0 ) {
rangeSlider.setLowValue( rangeSlider.getLowValue() + delta );
rangeSlider.setHighValue( rangeSlider.getHighValue() + delta );
}
}
break;
}
}
/**
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
@Override
public void mouseReleased( MouseEvent e ) {
slider.getModel().setValueIsAdjusting( false );
setMouseReleased( handle );
_listener.mouseReleased( e );
}
private void setCursor( int c ) {
Cursor cursor = Cursor.getPredefinedCursor( c );
if( slider.getCursor() != cursor ) {
slider.setCursor( cursor );
}
}
/**
* @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
*/
@Override
public void mouseMoved( MouseEvent e ) {
if( !slider.isEnabled() ) {
return;
}
int handle = getMouseHandle( e.getX(), e.getY() );
setMouseRollover( handle );
switch( handle ) {
case MOUSE_HANDLE_MIN:
case MOUSE_HANDLE_MAX:
case MOUSE_HANDLE_BOTH:
setCursor( Cursor.DEFAULT_CURSOR );
break;
case MOUSE_HANDLE_MIDDLE:
if( slider instanceof RangeSlider && ((RangeSlider) slider).isRangeDraggable() ) {
setCursor( Cursor.MOVE_CURSOR );
} else {
setCursor( Cursor.DEFAULT_CURSOR );
}
break;
case MOUSE_HANDLE_NONE:
default:
setCursor( Cursor.DEFAULT_CURSOR );
break;
}
}
/**
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked( MouseEvent e ) {
if( e.getClickCount() == 2 ) {
slider.getModel().setValue( slider.getModel().getMinimum() );
slider.getModel().setExtent( slider.getModel().getMaximum() - slider.getModel().getMinimum() );
slider.repaint();
}
}
/**
* @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
*/
@Override
public void mouseEntered( MouseEvent e ) {
hover = true;
slider.repaint();
}
/**
* @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
*/
@Override
public void mouseExited( MouseEvent e ) {
hover = false;
slider.repaint();
setCursor( Cursor.DEFAULT_CURSOR );
}
}
protected static final int MOUSE_HANDLE_NONE = 0;
protected static final int MOUSE_HANDLE_MIN = 1;
protected static final int MOUSE_HANDLE_MAX = 2;
protected static final int MOUSE_HANDLE_MIDDLE = 4;
protected static final int MOUSE_HANDLE_LOWER = 5;
protected static final int MOUSE_HANDLE_UPPER = 6;
protected static final int MOUSE_HANDLE_BOTH = 7;
protected int getMouseHandle( int x, int y ) {
Rectangle rect = trackRect;
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, null );
boolean inMin = false;
boolean inMax = false;
if( thumbRect.contains( x, y ) ) {
inMin = true;
}
Point p = adjustThumbForHighValue();
if( thumbRect.contains( x, y ) ) {
inMax = true;
}
restoreThumbForLowValue( p );
if( inMin && inMax ) {
return MOUSE_HANDLE_BOTH;
} else if( inMin ) {
return MOUSE_HANDLE_MIN;
} else if( inMax ) {
return MOUSE_HANDLE_MAX;
}
if( slider.getOrientation() == JSlider.VERTICAL ) {
int minY = yPositionForValue( ((RangeSlider) slider).getLowValue() );
int maxY = yPositionForValue( ((RangeSlider) slider).getHighValue() );
Rectangle midRect = new Rectangle( rect.x, Math.min( minY, maxY ) + thumbRect.height / 2, rect.width,
Math.abs( maxY - minY ) - thumbRect.height );
if( midRect.contains( x, y ) ) {
return MOUSE_HANDLE_MIDDLE;
}
int sy = rect.y + Math.max( minY, maxY ) + thumbRect.height / 2;
Rectangle lowerRect = new Rectangle( rect.x, sy, rect.width, rect.y + rect.height - sy );
if( lowerRect.contains( x, y ) ) {
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, true );
return MOUSE_HANDLE_LOWER;
}
Rectangle upperRect = new Rectangle( rect.x, rect.y, rect.width,
Math.min( maxY, minY ) - thumbRect.height / 2 );
if( upperRect.contains( x, y ) ) {
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, false );
return MOUSE_HANDLE_UPPER;
}
return MOUSE_HANDLE_NONE;
} else {
int minX = xPositionForValue( ((RangeSlider) slider).getLowValue() );
int maxX = xPositionForValue( ((RangeSlider) slider).getHighValue() );
Rectangle midRect = new Rectangle( Math.min( minX, maxX ) + thumbRect.width / 2, rect.y,
Math.abs( maxX - minX ) - thumbRect.width, rect.height );
if( midRect.contains( x, y ) ) {
return MOUSE_HANDLE_MIDDLE;
}
Rectangle lowerRect = new Rectangle( rect.x, rect.y, Math.min( minX, maxX ) - thumbRect.width / 2 - rect.x,
rect.height );
if( lowerRect.contains( x, y ) ) {
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, true );
return MOUSE_HANDLE_LOWER;
}
int sx = rect.x + Math.abs( maxX - minX ) + thumbRect.width / 2;
Rectangle upperRect = new Rectangle( sx, rect.y, rect.width - sx, rect.height );
if( upperRect.contains( x, y ) ) {
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION, false );
return MOUSE_HANDLE_UPPER;
}
return MOUSE_HANDLE_NONE;
}
}
protected boolean hover;
protected boolean second;
protected boolean rollover1;
protected boolean pressed1;
protected boolean rollover2;
protected boolean pressed2;
@Override
public void paintThumb( Graphics g ) {
try {
Field field = getClass().getSuperclass().getDeclaredField( "rollover" );
field.setAccessible( true );
field.set( this, second ? rollover2 : rollover1 );
field = getClass().getSuperclass().getDeclaredField( "pressed" );
field.setAccessible( true );
field.set( this, second ? pressed2 : pressed1 );
} catch( NoSuchFieldException e ) {
// e.printStackTrace();
} catch( IllegalAccessException e ) {
// e.printStackTrace();
}
super.paintThumb( g );
}
protected void setMouseRollover( int handle ) {
switch( handle ) {
case MOUSE_HANDLE_MIN: {
rollover1 = true;
rollover2 = false;
}
break;
case MOUSE_HANDLE_MAX: {
rollover2 = true;
rollover1 = false;
}
break;
case MOUSE_HANDLE_MIDDLE:
case MOUSE_HANDLE_BOTH: {
rollover1 = true;
rollover2 = true;
}
break;
case MOUSE_HANDLE_NONE:
rollover1 = false;
rollover2 = false;
break;
}
slider.repaint( thumbRect );
Point p = adjustThumbForHighValue();
slider.repaint( thumbRect );
restoreThumbForLowValue( p );
}
protected void setMousePressed( int handle ) {
switch( handle ) {
case MOUSE_HANDLE_MIN: {
pressed1 = true;
pressed2 = false;
}
break;
case MOUSE_HANDLE_MAX: {
pressed2 = true;
pressed1 = false;
}
break;
case MOUSE_HANDLE_MIDDLE:
case MOUSE_HANDLE_BOTH: {
pressed1 = true;
pressed2 = true;
}
break;
case MOUSE_HANDLE_NONE:
pressed1 = false;
pressed2 = false;
break;
}
slider.repaint( thumbRect );
Point p = adjustThumbForHighValue();
slider.repaint( thumbRect );
restoreThumbForLowValue( p );
}
@SuppressWarnings( { "UnusedDeclaration" } )
protected void setMouseReleased( int handle ) {
pressed1 = false;
pressed2 = false;
slider.repaint( thumbRect );
Point p = adjustThumbForHighValue();
slider.repaint( thumbRect );
restoreThumbForLowValue( p );
}
@Override
public void scrollByBlock( int direction ) {
synchronized( slider ) {
int oldValue;
Object clientProperty = slider.getClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION );
if( clientProperty == null ) {
oldValue = slider.getValue();
} else if( Boolean.TRUE.equals( clientProperty ) ) {
oldValue = ((RangeSlider) slider).getLowValue();
} else {
oldValue = ((RangeSlider) slider).getHighValue();
}
int blockIncrement = (slider.getMaximum() - slider.getMinimum()) / 10;
if( blockIncrement <= 0 && slider.getMaximum() > slider.getMinimum() ) {
blockIncrement = 1;
}
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_ADJUST_ACTION, "scrollByBlock" );
int delta = blockIncrement * ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
if( clientProperty == null ) {
slider.setValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
} else if( Boolean.TRUE.equals( clientProperty ) ) {
((RangeSlider) slider)
.setLowValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
} else {
((RangeSlider) slider)
.setHighValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
}
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_ADJUST_ACTION, null );
}
}
@Override
public void scrollByUnit( int direction ) {
synchronized( slider ) {
int oldValue;
Object clientProperty = slider.getClientProperty( RangeSlider.CLIENT_PROPERTY_MOUSE_POSITION );
if( clientProperty == null ) {
oldValue = slider.getValue();
} else if( Boolean.TRUE.equals( clientProperty ) ) {
oldValue = ((RangeSlider) slider).getLowValue();
} else {
oldValue = ((RangeSlider) slider).getHighValue();
}
int delta = 1 * ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_ADJUST_ACTION, "scrollByUnit" );
if( clientProperty == null ) {
slider.setValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
} else if( Boolean.TRUE.equals( clientProperty ) ) {
((RangeSlider) slider)
.setLowValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
} else {
((RangeSlider) slider)
.setHighValue( Math.max( Math.min( oldValue + delta, slider.getMaximum() ), slider.getMinimum() ) );
}
slider.putClientProperty( RangeSlider.CLIENT_PROPERTY_ADJUST_ACTION, null );
}
}
}

View File

@@ -17,6 +17,7 @@
#---- UI delegates ---- #---- UI delegates ----
JideTabbedPaneUI=com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPaneUI JideTabbedPaneUI=com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPaneUI
RangeSliderUI=com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI
#---- JidePopup ---- #---- JidePopup ----
@@ -35,3 +36,11 @@ JideTabbedPane.tabAreaInsets=$TabbedPane.tabAreaInsets
JideTabbedPane.contentBorderInsets=0,0,0,0 JideTabbedPane.contentBorderInsets=0,0,0,0
JideTabbedPane.tabRunOverlay=$TabbedPane.tabRunOverlay JideTabbedPane.tabRunOverlay=$TabbedPane.tabRunOverlay
JideTabbedPane.shadow=$TabbedPane.shadow JideTabbedPane.shadow=$TabbedPane.shadow
#---- RangeSlider ----
RangeSliderUI.foreground=@background

View File

@@ -16,6 +16,7 @@
package com.formdev.flatlaf.testing.jideoss; package com.formdev.flatlaf.testing.jideoss;
import com.jgoodies.forms.factories.*;
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER; import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
@@ -37,7 +38,7 @@ public class FlatJideOssTest
{ {
public static void main( String[] args ) { public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> { SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatJideOssTest" ); FlatTestFrame frame = FlatTestFrame.create( args, "FlatRangeSliderTest" );
LookAndFeelFactory.installJideExtension(); LookAndFeelFactory.installJideExtension();
frame.showFrame( FlatJideOssTest::new ); frame.showFrame( FlatJideOssTest::new );
@@ -106,229 +107,238 @@ public class FlatJideOssTest
private void initComponents() { private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
JPanel panel9 = new JPanel(); // Generated using JFormDesigner Evaluation license - unknown
JLabel tabbedPaneLabel = new JLabel(); JPanel panel9 = new JPanel();
tabbedPane1 = new JideTabbedPane(); JLabel tabbedPaneLabel = new JLabel();
JPanel panel1 = new JPanel(); tabbedPane1 = new JideTabbedPane();
JLabel label1 = new JLabel(); JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel(); JLabel label1 = new JLabel();
JLabel label2 = new JLabel(); JPanel panel2 = new JPanel();
tabbedPane3 = new JideTabbedPane(); JLabel label2 = new JLabel();
JPanel panel5 = new JPanel(); tabbedPane3 = new JideTabbedPane();
JLabel label5 = new JLabel(); JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel(); JLabel label5 = new JLabel();
JLabel label6 = new JLabel(); JPanel panel6 = new JPanel();
tabbedPane2 = new JideTabbedPane(); JLabel label6 = new JLabel();
JPanel panel3 = new JPanel(); tabbedPane2 = new JideTabbedPane();
JLabel label3 = new JLabel(); JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel(); JLabel label3 = new JLabel();
JLabel label4 = new JLabel(); JPanel panel4 = new JPanel();
tabbedPane4 = new JideTabbedPane(); JLabel label4 = new JLabel();
JPanel panel7 = new JPanel(); tabbedPane4 = new JideTabbedPane();
JLabel label7 = new JLabel(); JPanel panel7 = new JPanel();
JPanel panel8 = new JPanel(); JLabel label7 = new JLabel();
JLabel label8 = new JLabel(); JPanel panel8 = new JPanel();
JPanel panel14 = new JPanel(); JLabel label8 = new JLabel();
moreTabsCheckBox = new JCheckBox(); JPanel panel14 = new JPanel();
tabScrollCheckBox = new JCheckBox(); moreTabsCheckBox = new JCheckBox();
hasFullBorderCheckBox = new JCheckBox(); tabScrollCheckBox = new JCheckBox();
JPanel panel10 = new JPanel(); hasFullBorderCheckBox = new JCheckBox();
JLabel jidePopupLabel = new JLabel(); JPanel panel10 = new JPanel();
JButton showJidePopupButton = new JButton(); JLabel jidePopupLabel = new JLabel();
CellConstraints cc = new CellConstraints(); JButton showJidePopupButton = new JButton();
//======== this ======== //======== this ========
setLayout(new MigLayout( setBorder (new javax. swing. border. CompoundBorder( new javax .swing .border .TitledBorder (
"insets dialog,hidemode 3", new javax. swing. border. EmptyBorder( 0, 0, 0, 0) , "JF\u006frmDes\u0069gner \u0045valua\u0074ion"
// columns , javax. swing. border. TitledBorder. CENTER, javax. swing. border. TitledBorder. BOTTOM
"[grow,fill]", , new java .awt .Font ("D\u0069alog" ,java .awt .Font .BOLD ,12 )
// rows , java. awt. Color. red) , getBorder( )) ); addPropertyChangeListener (
"[grow,fill]")); new java. beans. PropertyChangeListener( ){ @Override public void propertyChange (java .beans .PropertyChangeEvent e
) {if ("\u0062order" .equals (e .getPropertyName () )) throw new RuntimeException( )
; }} );
setLayout(new MigLayout(
"insets dialog,hidemode 3",
// columns
"[grow,fill]",
// rows
"[grow,fill]"));
//======== panel9 ======== //======== panel9 ========
{ {
panel9.setOpaque(false); panel9.setOpaque(false);
panel9.setLayout(new FormLayout( panel9.setLayout(new FormLayout(
"70dlu:grow, $lcgap, 70dlu:grow", "70dlu:grow, $lcgap, 70dlu:grow",
"pref, 2*($lgap, fill:70dlu:grow), $lgap, pref, $lgap, default")); "pref, 2*($lgap, fill:70dlu:grow), $lgap, pref, $lgap, default"));
//---- tabbedPaneLabel ---- //---- tabbedPaneLabel ----
tabbedPaneLabel.setText("JideTabbedPane:"); tabbedPaneLabel.setText("JideTabbedPane:");
panel9.add(tabbedPaneLabel, cc.xy(1, 1)); panel9.add(tabbedPaneLabel, CC.xy(1, 1));
//======== tabbedPane1 ======== //======== tabbedPane1 ========
{ {
//======== panel1 ======== //======== panel1 ========
{ {
panel1.setLayout(new FlowLayout()); panel1.setLayout(new FlowLayout());
//---- label1 ---- //---- label1 ----
label1.setText("TOP"); label1.setText("TOP");
panel1.add(label1); panel1.add(label1);
} }
tabbedPane1.addTab("Tab 1", panel1); tabbedPane1.addTab("Tab 1", panel1);
//======== panel2 ======== //======== panel2 ========
{ {
panel2.setBorder(new LineBorder(Color.magenta)); panel2.setBorder(new LineBorder(Color.magenta));
panel2.setLayout(new FlowLayout()); panel2.setLayout(new FlowLayout());
} }
tabbedPane1.addTab("Tab 2", panel2); tabbedPane1.addTab("Tab 2", panel2);
//---- label2 ---- //---- label2 ----
label2.setText("text"); label2.setText("text");
tabbedPane1.addTab("Tab 3", label2); tabbedPane1.addTab("Tab 3", label2);
} }
panel9.add(tabbedPane1, cc.xy(1, 3)); panel9.add(tabbedPane1, CC.xy(1, 3));
//======== tabbedPane3 ======== //======== tabbedPane3 ========
{ {
tabbedPane3.setTabPlacement(SwingConstants.LEFT); tabbedPane3.setTabPlacement(SwingConstants.LEFT);
//======== panel5 ======== //======== panel5 ========
{ {
panel5.setLayout(new FlowLayout()); panel5.setLayout(new FlowLayout());
//---- label5 ---- //---- label5 ----
label5.setText("LEFT"); label5.setText("LEFT");
panel5.add(label5); panel5.add(label5);
} }
tabbedPane3.addTab("Tab 1", panel5); tabbedPane3.addTab("Tab 1", panel5);
//======== panel6 ======== //======== panel6 ========
{ {
panel6.setBorder(new LineBorder(Color.magenta)); panel6.setBorder(new LineBorder(Color.magenta));
panel6.setLayout(new FlowLayout()); panel6.setLayout(new FlowLayout());
} }
tabbedPane3.addTab("Tab 2", panel6); tabbedPane3.addTab("Tab 2", panel6);
//---- label6 ---- //---- label6 ----
label6.setText("text"); label6.setText("text");
tabbedPane3.addTab("Tab 3", label6); tabbedPane3.addTab("Tab 3", label6);
} }
panel9.add(tabbedPane3, cc.xy(3, 3)); panel9.add(tabbedPane3, CC.xy(3, 3));
//======== tabbedPane2 ======== //======== tabbedPane2 ========
{ {
tabbedPane2.setTabPlacement(SwingConstants.BOTTOM); tabbedPane2.setTabPlacement(SwingConstants.BOTTOM);
//======== panel3 ======== //======== panel3 ========
{ {
panel3.setLayout(new FlowLayout()); panel3.setLayout(new FlowLayout());
//---- label3 ---- //---- label3 ----
label3.setText("BOTTOM"); label3.setText("BOTTOM");
panel3.add(label3); panel3.add(label3);
} }
tabbedPane2.addTab("Tab 1", panel3); tabbedPane2.addTab("Tab 1", panel3);
//======== panel4 ======== //======== panel4 ========
{ {
panel4.setBorder(new LineBorder(Color.magenta)); panel4.setBorder(new LineBorder(Color.magenta));
panel4.setLayout(new FlowLayout()); panel4.setLayout(new FlowLayout());
} }
tabbedPane2.addTab("Tab 2", panel4); tabbedPane2.addTab("Tab 2", panel4);
tabbedPane2.setEnabledAt(1, false); tabbedPane2.setEnabledAt(1, false);
//---- label4 ---- //---- label4 ----
label4.setText("text"); label4.setText("text");
tabbedPane2.addTab("Tab 3", label4); tabbedPane2.addTab("Tab 3", label4);
} }
panel9.add(tabbedPane2, cc.xy(1, 5)); panel9.add(tabbedPane2, CC.xy(1, 5));
//======== tabbedPane4 ======== //======== tabbedPane4 ========
{ {
tabbedPane4.setTabPlacement(SwingConstants.RIGHT); tabbedPane4.setTabPlacement(SwingConstants.RIGHT);
//======== panel7 ======== //======== panel7 ========
{ {
panel7.setLayout(new FlowLayout()); panel7.setLayout(new FlowLayout());
//---- label7 ---- //---- label7 ----
label7.setText("RIGHT"); label7.setText("RIGHT");
panel7.add(label7); panel7.add(label7);
} }
tabbedPane4.addTab("Tab 1", panel7); tabbedPane4.addTab("Tab 1", panel7);
//======== panel8 ======== //======== panel8 ========
{ {
panel8.setBorder(new LineBorder(Color.magenta)); panel8.setBorder(new LineBorder(Color.magenta));
panel8.setLayout(new FlowLayout()); panel8.setLayout(new FlowLayout());
} }
tabbedPane4.addTab("Tab 2", panel8); tabbedPane4.addTab("Tab 2", panel8);
//---- label8 ---- //---- label8 ----
label8.setText("text"); label8.setText("text");
tabbedPane4.addTab("Tab 3", label8); tabbedPane4.addTab("Tab 3", label8);
} }
panel9.add(tabbedPane4, cc.xy(3, 5)); panel9.add(tabbedPane4, CC.xy(3, 5));
//======== panel14 ======== //======== panel14 ========
{ {
panel14.setOpaque(false); panel14.setOpaque(false);
panel14.setLayout(new MigLayout( panel14.setLayout(new MigLayout(
"insets 0,hidemode 3", "insets 0,hidemode 3",
// columns // columns
"[]" + "[]" +
"[]" + "[]" +
"[]", "[]",
// rows // rows
"[center]")); "[center]"));
//---- moreTabsCheckBox ---- //---- moreTabsCheckBox ----
moreTabsCheckBox.setText("more tabs"); moreTabsCheckBox.setText("more tabs");
moreTabsCheckBox.setMnemonic('M'); moreTabsCheckBox.setMnemonic('M');
moreTabsCheckBox.addActionListener(e -> moreTabsChanged()); moreTabsCheckBox.addActionListener(e -> moreTabsChanged());
panel14.add(moreTabsCheckBox, "cell 0 0"); panel14.add(moreTabsCheckBox, "cell 0 0");
//---- tabScrollCheckBox ---- //---- tabScrollCheckBox ----
tabScrollCheckBox.setText("tabLayoutPolicy = SCROLL"); tabScrollCheckBox.setText("tabLayoutPolicy = SCROLL");
tabScrollCheckBox.setMnemonic('S'); tabScrollCheckBox.setMnemonic('S');
tabScrollCheckBox.setSelected(true); tabScrollCheckBox.setSelected(true);
tabScrollCheckBox.addActionListener(e -> tabScrollChanged()); tabScrollCheckBox.addActionListener(e -> tabScrollChanged());
panel14.add(tabScrollCheckBox, "cell 1 0,alignx left,growx 0"); panel14.add(tabScrollCheckBox, "cell 1 0,alignx left,growx 0");
//---- hasFullBorderCheckBox ---- //---- hasFullBorderCheckBox ----
hasFullBorderCheckBox.setText("JTabbedPane.hasFullBorder"); hasFullBorderCheckBox.setText("JTabbedPane.hasFullBorder");
hasFullBorderCheckBox.setMnemonic('F'); hasFullBorderCheckBox.setMnemonic('F');
hasFullBorderCheckBox.addActionListener(e -> hasFullBorderChanged()); hasFullBorderCheckBox.addActionListener(e -> hasFullBorderChanged());
panel14.add(hasFullBorderCheckBox, "cell 2 0,alignx left,growx 0"); panel14.add(hasFullBorderCheckBox, "cell 2 0,alignx left,growx 0");
} }
panel9.add(panel14, cc.xywh(1, 7, 3, 1)); panel9.add(panel14, CC.xywh(1, 7, 3, 1));
//======== panel10 ======== //======== panel10 ========
{ {
panel10.setLayout(new MigLayout( panel10.setLayout(new MigLayout(
"insets 3 0 3 3,hidemode 3", "insets 3 0 3 3,hidemode 3",
// columns // columns
"[fill]" + "[fill]" +
"[fill]", "[fill]",
// rows // rows
"[]")); "[]"));
//---- jidePopupLabel ---- //---- jidePopupLabel ----
jidePopupLabel.setText("JidePopup:"); jidePopupLabel.setText("JidePopup:");
panel10.add(jidePopupLabel, "cell 0 0"); panel10.add(jidePopupLabel, "cell 0 0");
//---- showJidePopupButton ---- //---- showJidePopupButton ----
showJidePopupButton.setText("show JidePopup"); showJidePopupButton.setText("show JidePopup");
showJidePopupButton.addActionListener(e -> showJidePopupButtonActionPerformed(e)); showJidePopupButton.addActionListener(e -> showJidePopupButtonActionPerformed(e));
panel10.add(showJidePopupButton, "cell 1 0"); panel10.add(showJidePopupButton, "cell 1 0");
} }
panel9.add(panel10, cc.xy(1, 9)); panel9.add(panel10, CC.xy(1, 9));
} }
add(panel9, "cell 0 0"); add(panel9, "cell 0 0");
// JFormDesigner - End of component initialization //GEN-END:initComponents // JFormDesigner - End of component initialization //GEN-END:initComponents
} }
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JideTabbedPane tabbedPane1; // Generated using JFormDesigner Evaluation license - unknown
private JideTabbedPane tabbedPane3; private JideTabbedPane tabbedPane1;
private JideTabbedPane tabbedPane2; private JideTabbedPane tabbedPane3;
private JideTabbedPane tabbedPane4; private JideTabbedPane tabbedPane2;
private JCheckBox moreTabsCheckBox; private JideTabbedPane tabbedPane4;
private JCheckBox tabScrollCheckBox; private JCheckBox moreTabsCheckBox;
private JCheckBox hasFullBorderCheckBox; private JCheckBox tabScrollCheckBox;
private JCheckBox hasFullBorderCheckBox;
// JFormDesigner - End of variables declaration //GEN-END:variables // JFormDesigner - End of variables declaration //GEN-END:variables
} }

View File

@@ -0,0 +1,158 @@
package com.formdev.flatlaf.testing.jideoss;
import java.awt.event.*;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.*;
import com.formdev.flatlaf.testing.FlatTestFrame;
import com.formdev.flatlaf.testing.FlatTestPanel;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.swing.RangeSlider;
import net.miginfocom.swing.MigLayout;
public class FlatRangeSliderTest
extends FlatTestPanel
{
private RangeSlider horizontalRangeSlider;
private RangeSlider verticalRangeSlider;
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatRangeSliderTest" );
LookAndFeelFactory.installJideExtension();
frame.showFrame( FlatRangeSliderTest::new );
UIManager.addPropertyChangeListener( e -> {
if( "lookAndFeel".equals( e.getPropertyName() ) ) {
LookAndFeelFactory.installJideExtension();
}
} );
} );
}
FlatRangeSliderTest() {
initComponents();
}
private void paintLabels() {
horizontalRangeSlider.setPaintLabels( paintLabel.isSelected() );
verticalRangeSlider.setPaintLabels( paintLabel.isSelected() );
}
private void paintTicks() {
horizontalRangeSlider.setPaintTicks( paintTick.isSelected() );
verticalRangeSlider.setPaintTicks( paintTick.isSelected() );
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
// Generated using JFormDesigner Evaluation license - unknown
JPanel panel9 = new JPanel();
JLabel tabbedPaneLabel = new JLabel();
JLabel label1 = new JLabel();
horizontalRangeSlider = new RangeSlider();
JLabel label2 = new JLabel();
verticalRangeSlider = new RangeSlider();
JPanel panel14 = new JPanel();
paintTick = new JCheckBox();
paintLabel = new JCheckBox();
//======== this ========
setBorder(new javax.swing.border.CompoundBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EmptyBorder(0
,0,0,0), "JF\u006frm\u0044es\u0069gn\u0065r \u0045va\u006cua\u0074io\u006e",javax.swing.border.TitledBorder.CENTER,javax.swing.border.TitledBorder.BOTTOM
,new java.awt.Font("D\u0069al\u006fg",java.awt.Font.BOLD,12),java.awt.Color.red),
getBorder())); addPropertyChangeListener(new java.beans.PropertyChangeListener(){@Override public void propertyChange(java.beans.PropertyChangeEvent e
){if("\u0062or\u0064er".equals(e.getPropertyName()))throw new RuntimeException();}});
setLayout(new MigLayout(
"insets dialog,hidemode 3",
// columns
"[grow,fill]",
// rows
"[grow,fill]"));
//======== panel9 ========
{
panel9.setOpaque(false);
panel9.setLayout(new FormLayout(
"70dlu:grow, $lcgap, 70dlu:grow",
"pref, 2*($lgap, fill:70dlu:grow), $lgap, pref"));
//---- tabbedPaneLabel ----
tabbedPaneLabel.setText("RangeSlider:");
panel9.add(tabbedPaneLabel, CC.xy(1, 1));
//---- label1 ----
label1.setText("Horizontal");
panel9.add(label1, CC.xy(1, 3));
panel9.add(horizontalRangeSlider, CC.xy(3, 3));
//---- label2 ----
label2.setText("Vertical");
panel9.add(label2, CC.xy(1, 5));
panel9.add(verticalRangeSlider, CC.xy(3, 5));
//======== panel14 ========
{
panel14.setOpaque(false);
panel14.setLayout(new MigLayout(
"insets 0,hidemode 3",
// columns
"[]" +
"[]" +
"[]",
// rows
"[center]"));
//---- paintTick ----
paintTick.setText("PaintTicks");
paintTick.setMnemonic('M');
paintTick.addActionListener(e -> paintTicks());
panel14.add(paintTick, "cell 0 0");
//---- paintLabel ----
paintLabel.setText("PaintLabels");
paintLabel.setMnemonic('F');
paintLabel.addActionListener(e -> paintLabels());
panel14.add(paintLabel, "cell 2 0,alignx left,growx 0");
}
panel9.add(panel14, CC.xywh(1, 7, 3, 1));
}
add(panel9, "cell 0 0");
// JFormDesigner - End of component initialization //GEN-END:initComponents
horizontalRangeSlider.setOrientation( SwingConstants.HORIZONTAL );
horizontalRangeSlider.setMinimum( 0 );
horizontalRangeSlider.setMaximum( 100 );
horizontalRangeSlider.setLowValue( 10 );
horizontalRangeSlider.setHighValue( 90 );
horizontalRangeSlider.setLabelTable( horizontalRangeSlider.createStandardLabels( 10 ) );
horizontalRangeSlider.setMinorTickSpacing( 5 );
horizontalRangeSlider.setMajorTickSpacing( 10 );
horizontalRangeSlider.setPaintTicks( true );
horizontalRangeSlider.setPaintLabels( true );
verticalRangeSlider.setOrientation( SwingConstants.VERTICAL );
verticalRangeSlider.setMinimum( 0 );
verticalRangeSlider.setMaximum( 100 );
verticalRangeSlider.setLowValue( 10 );
verticalRangeSlider.setHighValue( 90 );
verticalRangeSlider.setLabelTable( horizontalRangeSlider.createStandardLabels( 10 ) );
verticalRangeSlider.setMinorTickSpacing( 5 );
verticalRangeSlider.setMajorTickSpacing( 10 );
verticalRangeSlider.setPaintTicks( true );
verticalRangeSlider.setPaintLabels( true );
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
// Generated using JFormDesigner Evaluation license - unknown
private JCheckBox paintTick;
private JCheckBox paintLabel;
// JFormDesigner - End of variables declaration //GEN-END:variables
}

View File

@@ -0,0 +1,94 @@
JFDML JFormDesigner: "7.0.2.6.321" Java: "11.0.8" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
auxiliary() {
"JavaCodeGenerator.defaultVariableLocal": true
}
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[grow,fill]"
"$rowConstraints": "[grow,fill]"
} ) {
name: "this"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jgoodies.forms.layout.FormLayout ) {
"$columnSpecs": "70dlu:grow, labelcompgap, 70dlu:grow"
"$rowSpecs": "pref, linegap, fill:70dlu:grow, linegap, fill:70dlu:grow, linegap, pref"
} ) {
name: "panel9"
"opaque": false
add( new FormComponent( "javax.swing.JLabel" ) {
name: "tabbedPaneLabel"
"text": "RangeSlider:"
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 1
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "Horizontal"
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 1
"gridY": 3
} )
add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
name: "horizontalRangeSlider"
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 3
"gridY": 3
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "Vertical"
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 1
"gridY": 5
} )
add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
name: "verticalRangeSlider"
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 5
"gridX": 3
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[][][]"
"$rowConstraints": "[center]"
} ) {
name: "panel14"
"opaque": false
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "paintTick"
"text": "PaintTicks"
"mnemonic": 77
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "paintTicks", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "paintLabel"
"text": "PaintLabels"
"mnemonic": 70
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "paintLabels", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0,alignx left,growx 0"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 7
"gridWidth": 3
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 550, 500 )
} )
}
}