@ -1,6 +1,7 @@
package com.fr.design.style.color ;
import com.fr.base.FineColor ;
import com.fr.base.theme.FineColorDeriveState ;
import com.fr.base.theme.TemplateTheme ;
import com.fr.design.DesignerEnvManager ;
import com.fr.design.border.UIRoundedBorder ;
@ -37,8 +38,11 @@ import java.util.List;
* /
public class NewColorSelectPane extends BasicPane implements ColorSelectable {
private static final long serialVersionUID = - 8634152305687249392L ;
private static final float BRIGHTNESS_VALUE = 0 . 15F ;
private static final float PURITY_VALUE = 0 . 1F ;
private static final int WIDTH = 197 ;
private static final int HEIGHT = 250 ;
//颜色衍生的数量
private static final int DEFAULT_DERIVE_COUNT = 5 ;
private FineColor color = null ; // color
// color setting action.
@ -49,9 +53,6 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
private boolean isSupportThemeColor ;
public final static int TRANSPARENT_WINDOW_HEIGHT = 165 ;
public final static int WINDOW_HEIGHT = 150 ;
// 最近使用颜色
private final NewUsedColorPane usedColorPane ;
private final JPanel menuColorPane ;
@ -84,10 +85,12 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
this . add ( centerPane , BorderLayout . CENTER ) ;
menuColorPane = getMenuColorPane ( ) ;
centerPane . add ( menuColorPane ) ;
if ( isSupportThemeColor ) {
initThemeColorPane ( ) ;
JPanel themePane = initThemeColorPane ( ) ;
centerPane . add ( themePane ) ;
} else {
centerPane . add ( menuColorPane ) ;
initMenuColorPane ( ) ;
}
@ -138,8 +141,14 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
return jPanel ;
}
private void initThemeColorPane ( ) {
private JPanel initThemeColorPane ( ) {
menuColorPane . removeAll ( ) ;
JPanel themeColorPane = new JPanel ( new BorderLayout ( 0 , 5 ) ) ;
themeColorPane . setBorder ( BorderFactory . createEmptyBorder ( 0 , 0 , 0 , 0 ) ) ;
themeColorPane . add ( new UILabel ( Toolkit . i18nText ( "Fine-Design_Basic_Theme_Color" ) ) , BorderLayout . CENTER ) ;
themeColorPane . add ( menuColorPane , BorderLayout . SOUTH ) ;
menuColorPane . setLayout ( new BorderLayout ( 0 , 10 ) ) ;
JPanel northPane = new JPanel ( new GridLayout ( 1 , 8 , 3 , 0 ) ) ;
JPanel centerPane = new JPanel ( new GridLayout ( 1 , 8 , 3 , 0 ) ) ;
@ -147,10 +156,6 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
menuColorPane . add ( centerPane , BorderLayout . CENTER ) ;
Color [ ] colorArray = new Color [ ] {
// 2列灰度色
Color . decode ( "#B3B3B3" ) ,
Color . decode ( "#808080" ) ,
// 8列主题色
Color . decode ( "#FFFFFF" ) ,
Color . decode ( "#CCCCCC" ) ,
@ -160,20 +165,22 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
Color . decode ( "#CCCCCC" ) ,
Color . decode ( "#FFFFFF" ) ,
Color . decode ( "#CCCCCC" ) ,
// 2列灰度色
Color . decode ( "#333333" ) ,
Color . decode ( "#FFFFFF" ) ,
} ;
if ( themeColorCellGrid = = null ) {
themeColorCellGrid = new ColorCell [ colorArray . length ] [ 5 ] ;
themeColorCellGrid = new ColorCell [ colorArray . length ] [ DEFAULT_DERIVE_COUNT ] ;
for ( int i = 0 ; i < colorArray . length ; i + + ) {
ColorCell [ ] colorCellColumn = new ColorCell [ 5 ] ;
boolean isDefaultColor = ( i = = 0 | | i = = 1 ) ;
ColorCell [ ] colorCellColumn = new ColorCell [ DEFAULT_DERIVE_COUNT ] ;
boolean isDefaultColor = ( i = = colorArray . length - 1 | | i = = colorArray . length - 2 ) ;
Color color = colorArray [ i ] ;
colorCellColumn [ 0 ] = createFineColorCell ( color , isDefaultColor , i , 2 ) ;
colorCellColumn [ 2 ] = createFineColorCell ( color = saturationDown ( color , isDefaultColor , true ) , isDefaultColor , i , 1 ) ;
colorCellColumn [ 1 ] = createFineColorCell ( saturationDown ( color , isDefaultColor , true ) , isDefaultColor , i , 0 ) ;
color = colorArray [ i ] ;
colorCellColumn [ 3 ] = createFineColorCell ( color = saturationDown ( color , isDefaultColor , false ) , isDefaultColor , i , 3 ) ;
colorCellColumn [ 4 ] = createFineColorCell ( saturationDown ( color , isDefaultColor , false ) , isDefaultColor , i , 4 ) ;
Color [ ] deriveColorArr = FineColorDeriveState . getDeriveColorArr ( color , isDefaultColor , DEFAULT_DERIVE_COUNT ) ;
for ( int j = 0 ; j < deriveColorArr . length ; j + + ) {
colorCellColumn [ j ] = createFineColorCell ( deriveColorArr [ j ] , isDefaultColor , i , j ) ;
}
themeColorCellGrid [ i ] = colorCellColumn ;
}
}
@ -182,15 +189,15 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
northPane . add ( themeColorCellGrid [ i ] [ 0 ] ) ;
}
for ( int i = 0 ; i < colorArray . length ; i + + ) {
JPanel columnPane = new JPanel ( new GridLayout ( 4 , 1 , 0 , 3 ) ) ;
columnPane . add ( themeColorCellGrid [ i ] [ 1 ] ) ;
columnPane . add ( themeColorCellGrid [ i ] [ 2 ] ) ;
columnPane . add ( themeColorCellGrid [ i ] [ 3 ] ) ;
columnPane . add ( themeColorCellGrid [ i ] [ 4 ] ) ;
JPanel columnPane = new JPanel ( new GridLayout ( DEFAULT_DERIVE_COUNT - 1 , 1 , 0 , 3 ) ) ;
for ( int j = 1 ; j < DEFAULT_DERIVE_COUNT ; j + + ) {
columnPane . add ( themeColorCellGrid [ i ] [ j ] ) ;
}
centerPane . add ( columnPane ) ;
}
refreshThemeMenuColorPane ( ) ;
return themeColorPane ;
}
private void refreshThemeMenuColorPane ( ) {
@ -210,39 +217,20 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
return ;
}
for ( int i = 2 ; i < themeColorCellGrid . length ; i + + ) {
Color color = standardColors . get ( i - 2 ) ;
themeColorCellGrid [ i ] [ 0 ] . setColor ( color ) ;
themeColorCellGrid [ i ] [ 2 ] . setColor ( color = saturationDown ( color , false , true ) ) ;
themeColorCellGrid [ i ] [ 1 ] . setColor ( saturationDown ( color , false , true ) ) ;
color = standardColors . get ( i - 2 ) ;
themeColorCellGrid [ i ] [ 3 ] . setColor ( color = saturationDown ( color , false , false ) ) ;
themeColorCellGrid [ i ] [ 4 ] . setColor ( saturationDown ( color , false , false ) ) ;
for ( int i = 0 ; i < themeColorCellGrid . length - 2 ; i + + ) {
Color color = standardColors . get ( i ) ;
Color [ ] deriveColorArr = FineColorDeriveState . getDeriveColorArr ( color , false , DEFAULT_DERIVE_COUNT ) ;
for ( int j = 0 ; j < deriveColorArr . length ; j + + ) {
themeColorCellGrid [ i ] [ j ] . setColor ( deriveColorArr [ j ] ) ;
}
}
}
private FineColorCell createFineColorCell ( Color color , boolean isDefaultColor , int x , int y ) {
return isDefaultColor ? new FineColorCell ( color , this ) : new FineColorCell ( color , this , x - 2 , y ) ;
return isDefaultColor ? new FineColorCell ( color , this ) : new FineColorCell ( color , this , x , y ) ;
}
/ * *
* 调整明度和纯度 , 默认色只调整明度
* @param color
* @param isDefaultColor
* @return
* /
public static Color saturationDown ( Color color , boolean isDefaultColor , boolean isLight ) {
float [ ] hsb = Color . RGBtoHSB ( color . getRed ( ) , color . getGreen ( ) , color . getBlue ( ) , new float [ 3 ] ) ;
if ( ! isDefaultColor ) {
hsb [ 1 ] = isLight ? Math . max ( 0 , hsb [ 1 ] - PURITY_VALUE ) : Math . min ( 1 , hsb [ 1 ] + PURITY_VALUE ) ;
}
hsb [ 2 ] = isLight ? Math . min ( 1 , hsb [ 2 ] + BRIGHTNESS_VALUE ) : Math . max ( 0 , hsb [ 2 ] - BRIGHTNESS_VALUE ) ;
Color color1 = Color . getHSBColor ( hsb [ 0 ] , hsb [ 1 ] , hsb [ 2 ] ) ;
return color1 ;
}
private void initMenuColorPane ( ) {
menuColorPane . setLayout ( new GridLayout ( 5 , 8 , 3 , 3 ) ) ;
@ -280,6 +268,7 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
/ * *
* 添加监听
*
* @param changeListener 监听
* /
public void addChangeListener ( ChangeListener changeListener ) {
@ -343,7 +332,9 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
changeListener . stateChanged ( evt ) ;
}
}
DesignerEnvManager . getEnvManager ( ) . getColorConfigManager ( ) . addToColorQueue ( color ) ;
if ( color ! = null ) {
DesignerEnvManager . getEnvManager ( ) . getColorConfigManager ( ) . addToColorQueue ( color . getColor ( ) ) ;
}
this . repaint ( ) ;
}
@ -375,10 +366,14 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
@Override
public Dimension getPreferredSize ( ) {
int height = HEIGHT ;
if ( isSupportTransparent ) {
return new Dimension ( 197 , 265 ) ;
height + = 15 ;
}
return new Dimension ( 197 , 250 ) ;
if ( isSupportThemeColor ) {
height + = 25 ;
}
return new Dimension ( WIDTH , height ) ;
}
/ * *
@ -452,4 +447,5 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
}
}
}