Browse Source

Merge pull request #830 in BA/design from ~YAOH.WU/design_0407:dev to dev

* commit 'a5769fe4679a35212ac3235fa8f823bac87a753a':
  REPORT-934颜色记住正确但是显示错误修复和部分代码调整
master
superman 8 years ago
parent
commit
ce255bccc8
  1. 190
      designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java
  2. 243
      designer_base/src/com/fr/design/style/color/ColorSelectPane.java
  3. 386
      designer_base/src/com/fr/design/style/color/NewColorSelectPane.java
  4. 91
      designer_base/src/com/fr/design/style/color/RecentUseColorPane.java
  5. 219
      designer_base/src/com/fr/design/style/color/UsedColorPane.java

190
designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java

@ -1,112 +1,104 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import java.awt.BorderLayout; import com.fr.design.dialog.BasicPane;
import java.awt.Color; import com.fr.design.layout.FRGUIPaneFactory;
import java.awt.Dimension; import com.fr.general.Inter;
import javax.swing.JColorChooser; import javax.swing.*;
import javax.swing.JPanel;
import javax.swing.colorchooser.AbstractColorChooserPanel; import javax.swing.colorchooser.AbstractColorChooserPanel;
import javax.swing.colorchooser.ColorSelectionModel; import javax.swing.colorchooser.ColorSelectionModel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.*;
import com.fr.design.dialog.BasicPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.Inter;
/** /**
* 颜色选择器更多颜色面板 * 颜色选择器更多颜色面板
* @author focus
* *
* @author focus
*/ */
public class ColorSelectDetailPane extends BasicPane{ public class ColorSelectDetailPane extends BasicPane {
private static final int SELECT_PANEL_HEIGHT = 245; private static final int SELECT_PANEL_HEIGHT = 245;
// Selected color // Selected color
private Color color; private Color color;
// 颜色选择器面板 // 颜色选择器面板
JColorChooser selectedPanel; private JColorChooser selectedPanel;
// 最近使用颜色面板 // 最近使用颜色面板
JPanel recentUsePanel; private JPanel recentUsePanel;
// 预览 // 预览
JPanel previewPanel; private JPanel previewPanel;
public JColorChooser getSelectedPanel() { public JColorChooser getSelectedPanel() {
return selectedPanel; return selectedPanel;
} }
public void setSelectedPanel(JColorChooser selectedPanel) { public void setSelectedPanel(JColorChooser selectedPanel) {
this.selectedPanel = selectedPanel; this.selectedPanel = selectedPanel;
} }
public Color getColor() { public Color getColor() {
return color; return color;
} }
public void setColor(Color color) { public void setColor(Color color) {
this.color = color; this.color = color;
} }
public ColorSelectDetailPane() { public ColorSelectDetailPane(Color color) {
super(); if (color == null) {
} color = Color.white;
}
public ColorSelectDetailPane(Color color){ this.color = color;
if(color == null){ initComponents();
color = Color.white; }
}
this.color = color; @Override
initComponents(); protected String title4PopupWindow() {
} return null;
}
@Override
protected String title4PopupWindow() { protected void initComponents() {
return null; this.setLayout(FRGUIPaneFactory.createBorderLayout());
}
// 颜色选择器面板
protected void initComponents() { selectedPanel = new JColorChooser(this.color);
this.setLayout(FRGUIPaneFactory.createBorderLayout()); selectedPanel.setPreferredSize(new Dimension(selectedPanel.getWidth(), SELECT_PANEL_HEIGHT));
AbstractColorChooserPanel[] choosers = selectedPanel.getChooserPanels();
// 颜色选择器面板 for (int i = 0; i < choosers.length; i++) {
selectedPanel = new JColorChooser(this.color); selectedPanel.removeChooserPanel(choosers[i]);
selectedPanel.setPreferredSize(new Dimension(selectedPanel.getWidth(),SELECT_PANEL_HEIGHT)); }
AbstractColorChooserPanel[] choosers = selectedPanel.getChooserPanels(); selectedPanel.setPreviewPanel(new JPanel());
for(int i=0;i<choosers.length;i++){
selectedPanel.removeChooserPanel(choosers[i]); AbstractColorChooserPanel swatchChooserPanel = new SwatchChooserPanel();
} AbstractColorChooserPanel customChooserPanel = new CustomChooserPanel();
selectedPanel.setPreviewPanel(new JPanel()); selectedPanel.addChooserPanel(swatchChooserPanel);
selectedPanel.addChooserPanel(customChooserPanel);
AbstractColorChooserPanel swatchChooserPanel = new SwatchChooserPanel(); this.add(selectedPanel, BorderLayout.NORTH);
AbstractColorChooserPanel customChooserPanel = new CustomChooserPanel();
selectedPanel.addChooserPanel(swatchChooserPanel); // 最近使用面板
selectedPanel.addChooserPanel(customChooserPanel); recentUsePanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Used"));
this.add(selectedPanel, BorderLayout.NORTH); RecentUseColorPane recent = new RecentUseColorPane(selectedPanel);
recentUsePanel.add(recent);
// 最近使用面板
recentUsePanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Used")); this.add(recentUsePanel, BorderLayout.CENTER);
RecentUseColorPane recent = new RecentUseColorPane(selectedPanel);
recentUsePanel.add(recent); selectedPanel.setPreviewPanel(new JPanel());
this.add(recentUsePanel,BorderLayout.CENTER); // 预览
previewPanel = FRGUIPaneFactory.createTitledBorderPaneCenter(Inter.getLocText("FR-Designer_Preview"));
selectedPanel.setPreviewPanel(new JPanel()); final ColorChooserPreview colorChooserPreview = new ColorChooserPreview();
ColorSelectionModel model = selectedPanel.getSelectionModel();
// 预览 model.addChangeListener(new ChangeListener() {
previewPanel = FRGUIPaneFactory.createTitledBorderPaneCenter(Inter.getLocText("FR-Designer_Preview")); @Override
final ColorChooserPreview colorChooserPreview = new ColorChooserPreview(); public void stateChanged(ChangeEvent e) {
ColorSelectionModel model = selectedPanel.getSelectionModel(); ColorSelectionModel model = (ColorSelectionModel) e.getSource();
model.addChangeListener(new ChangeListener() { colorChooserPreview.setMyColor(model.getSelectedColor());
@Override colorChooserPreview.paint(colorChooserPreview.getGraphics());
public void stateChanged(ChangeEvent e) { }
ColorSelectionModel model = (ColorSelectionModel) e.getSource(); });
colorChooserPreview.setMyColor(model.getSelectedColor()); previewPanel.add(colorChooserPreview);
colorChooserPreview.paint(colorChooserPreview.getGraphics()); this.add(previewPanel, BorderLayout.SOUTH);
} }
});
previewPanel.add(colorChooserPreview);
this.add(previewPanel, BorderLayout.SOUTH);
}
} }

243
designer_base/src/com/fr/design/style/color/ColorSelectPane.java

@ -3,26 +3,23 @@
*/ */
package com.fr.design.style.color; package com.fr.design.style.color;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.general.Inter;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
/** /**
* The pane used to select color * The pane used to select color
@ -30,94 +27,95 @@ import com.fr.design.utils.gui.GUICoreUtils;
public class ColorSelectPane extends TransparentPane implements ColorSelectable { public class ColorSelectPane extends TransparentPane implements ColorSelectable {
private static final long serialVersionUID = -8634152305687249392L; private static final long serialVersionUID = -8634152305687249392L;
private Color color = null; //color private Color color = null; //color
//color setting action. //color setting action.
private ArrayList<ChangeListener> colorChangeListenerList = new ArrayList<ChangeListener>(); private ArrayList<ChangeListener> colorChangeListenerList = new ArrayList<ChangeListener>();
ColorSelectDetailPane pane;
/* default */ ColorSelectDetailPane pane;
/** /**
* Constructor. * Constructor.
*/ */
public ColorSelectPane() { public ColorSelectPane() {
super(true); super(true);
initialCompents(true); initialCompents(true);
} }
public ColorSelectPane(boolean isSupportTransparent) { public ColorSelectPane(boolean isSupportTransparent) {
super(isSupportTransparent); super(isSupportTransparent);
initialCompents(isSupportTransparent); initialCompents(isSupportTransparent);
} }
private void initialCompents(boolean isSupportTransparent) { private void initialCompents(boolean isSupportTransparent) {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5));
if (isSupportTransparent) { if (isSupportTransparent) {
UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency"));
this.add(transpanrentButton, BorderLayout.NORTH); this.add(transpanrentButton, BorderLayout.NORTH);
transpanrentButton.addActionListener(new ActionListener() { transpanrentButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
doTransparent(); doTransparent();
} }
}); });
} }
// center // center
JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
this.add(centerPane, BorderLayout.CENTER); this.add(centerPane, BorderLayout.CENTER);
centerPane.add(getRow1Pane()); centerPane.add(getRow1Pane());
JPanel menuColorPane1 = getMenuColorPane(); JPanel menuColorPane1 = getMenuColorPane();
centerPane.add(menuColorPane1); centerPane.add(menuColorPane1);
Color[] colorArray = this.getColorArray(); Color[] colorArray = this.getColorArray();
for (int i = 0; i < colorArray.length; i++) { for (int i = 0; i < colorArray.length; i++) {
Color color = colorArray[i] == null ? UsedColorPane.DEFAULT_COLOR : colorArray[i]; Color color = colorArray[i] == null ? UsedColorPane.DEFAULT_COLOR : colorArray[i];
menuColorPane1.add(new ColorCell(color, this)); menuColorPane1.add(new ColorCell(color, this));
} }
centerPane.add(Box.createVerticalStrut(1)); centerPane.add(Box.createVerticalStrut(1));
UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color"));
customButton.addMouseListener(new MouseAdapter() { customButton.addMouseListener(new MouseAdapter() {
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
customButtonPressed(); customButtonPressed();
} }
}); });
customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); customButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane();
centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 8, 8)); centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 8, 8));
centerPane1.add(customButton, BorderLayout.NORTH); centerPane1.add(customButton, BorderLayout.NORTH);
centerPane.add(centerPane1); centerPane.add(centerPane1);
} }
protected JPanel getMenuColorPane() { protected JPanel getMenuColorPane() {
JPanel menuColorPane = new JPanel(); JPanel menuColorPane = new JPanel();
menuColorPane.setLayout(new GridLayout(5, 8, 1, 1)); menuColorPane.setLayout(new GridLayout(5, 8, 1, 1));
menuColorPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); menuColorPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8));
return menuColorPane; return menuColorPane;
} }
// 第一行,1个取色按钮 + 7个最近使用的颜色 // 第一行,1个取色按钮 + 1个留空的单元格 + 6个最近使用的颜色
protected JPanel getRow1Pane() { protected JPanel getRow1Pane() {
JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout());
row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0));
row1Pane.setPreferredSize(new Dimension(135, 24)); // 宽度为 16 * 8 + 7 row1Pane.setPreferredSize(new Dimension(135, 24)); // 宽度为 16 * 8 + 7
// 最近使用 // 最近使用
UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, ColorSelectConfigManager.getInstance().getColors(), this, true, true); UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, this, true, true);
usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8));
row1Pane.add(usedColorPane.getPane()); row1Pane.add(usedColorPane.getPane());
return row1Pane; return row1Pane;
} }
protected Color[] getColorArray(){ protected Color[] getColorArray() {
return ColorFactory.MenuColors; return ColorFactory.MenuColors;
} }
@ -125,15 +123,16 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable
/** /**
* Add change listener. * Add change listener.
* 增加监听 * 增加监听
* @param 监听 *
* @param changeListener
*/ */
public void addChangeListener(ChangeListener changeListener) { public void addChangeListener(ChangeListener changeListener) {
this.colorChangeListenerList.add(changeListener); this.colorChangeListenerList.add(changeListener);
} }
@Override @Override
protected String title4PopupWindow() { protected String title4PopupWindow() {
return "Color"; return "Color";
} }
/** /**
@ -166,38 +165,36 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable
/** /**
* 选中颜色 * 选中颜色
* @param 颜色单元格
*
*/ */
@Override @Override
public void colorSetted(ColorCell colorCell) { public void colorSetted(ColorCell colorCell) {
colorCell.repaint(); colorCell.repaint();
} }
/** /**
* 初始化中央面板 * 初始化中央面板
* @param centerPane 中央面板 *
* * @param centerPane 中央面板
*/ */
@Override @Override
public void initCenterPaneChildren(JPanel centerPane) { public void initCenterPaneChildren(JPanel centerPane) {
GUICoreUtils.initCenterPaneChildren(centerPane, this); GUICoreUtils.initCenterPaneChildren(centerPane, this);
} }
/** /**
* 透明 * 透明
*/ */
@Override @Override
public void doTransparent() { public void doTransparent() {
this.setColor(null); this.setColor(null);
} }
/** /**
* 更多颜色 * 更多颜色
*/ */
@Override @Override
public void customButtonPressed() { public void customButtonPressed() {
pane = new ColorSelectDetailPane(Color.WHITE); pane = new ColorSelectDetailPane(Color.WHITE);
ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this);
} }
} }

386
designer_base/src/com/fr/design/style/color/NewColorSelectPane.java

@ -1,215 +1,205 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.fr.design.constants.UIConstants;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.dialog.BasicPane;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
/** /**
*
* @author zhou * @author zhou
* @since 2012-5-29上午10:39:35 * @since 2012-5-29上午10:39:35
*/ */
public class NewColorSelectPane extends BasicPane implements ColorSelectable { public class NewColorSelectPane extends BasicPane implements ColorSelectable {
private static final long serialVersionUID = -8634152305687249392L; private static final long serialVersionUID = -8634152305687249392L;
private Color color = null; // color private Color color = null; // color
// color setting action. // color setting action.
private ArrayList<ChangeListener> colorChangeListenerList = new ArrayList<ChangeListener>(); private ArrayList<ChangeListener> colorChangeListenerList = new ArrayList<ChangeListener>();
// 颜色选择器 // 颜色选择器
private ColorSelectDetailPane pane; private ColorSelectDetailPane pane;
// 是否支持透明 // 是否支持透明
private boolean isSupportTransparent; private boolean isSupportTransparent;
private final static int TRANSPANENT_WINDOW_HEIGHT = 165; private final static int TRANSPANENT_WINDOW_HEIGHT = 165;
private final static int WINDWO_HEIGHT = 150; private final static int WINDWO_HEIGHT = 150;
// 最近使用颜色 // 最近使用颜色
UsedColorPane usedColorPane; private UsedColorPane usedColorPane;
/** /**
* Constructor. * Constructor.
*/ */
public NewColorSelectPane() { public NewColorSelectPane() {
this(false); this(false);
} }
/** /**
* Constructor. * Constructor.
*/ */
public NewColorSelectPane(boolean isSupportTransparent) { public NewColorSelectPane(boolean isSupportTransparent) {
this.isSupportTransparent = isSupportTransparent; this.isSupportTransparent = isSupportTransparent;
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5));
if (isSupportTransparent) { if (isSupportTransparent) {
UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency"));
this.add(transpanrentButton, BorderLayout.NORTH); this.add(transpanrentButton, BorderLayout.NORTH);
transpanrentButton.addActionListener(new ActionListener() { transpanrentButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
doTransparent(); doTransparent();
} }
}); });
} }
// center // center
JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
this.add(centerPane, BorderLayout.CENTER); this.add(centerPane, BorderLayout.CENTER);
// 第一行 // 第一行
JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout());
row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0));
row1Pane.setPreferredSize(new Dimension(135, 16)); // 宽度为 16 * 8 + 7 row1Pane.setPreferredSize(new Dimension(135, 16)); // 宽度为 16 * 8 + 7
centerPane.add(row1Pane); centerPane.add(row1Pane);
// 最近使用 // 最近使用
usedColorPane = new UsedColorPane(1, 8, 1, ColorSelectConfigManager.getInstance().getColors(), this, true, false); usedColorPane = new UsedColorPane(1, 8, 1, this, true, false);
usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8));
row1Pane.add(usedColorPane.getPane()); row1Pane.add(usedColorPane.getPane());
JPanel menuColorPane1 = new JPanel(); JPanel menuColorPane1 = new JPanel();
centerPane.add(menuColorPane1); centerPane.add(menuColorPane1);
menuColorPane1.setLayout(new GridLayout(5, 8, 1, 1)); menuColorPane1.setLayout(new GridLayout(5, 8, 1, 1));
menuColorPane1.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); menuColorPane1.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8));
for (int i = 0; i < ColorFactory.MenuColors.length; i++) { for (int i = 0; i < ColorFactory.MenuColors.length; i++) {
menuColorPane1.add(new ColorCell(ColorFactory.MenuColors[i], this)); menuColorPane1.add(new ColorCell(ColorFactory.MenuColors[i], this));
} }
centerPane.add(Box.createVerticalStrut(1)); centerPane.add(Box.createVerticalStrut(1));
// mod by anchore 16/11/16 // mod by anchore 16/11/16
UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color"));
//UIButton customButton = new UIButton(Inter.getLocText(new String[]{"More", "Color"}) + "...");
customButton.addMouseListener(new MouseAdapter() {
customButton.addMouseListener(new MouseAdapter() { @Override
@Override public void mousePressed(MouseEvent e) {
public void mousePressed(MouseEvent e) { customButtonPressed();
customButtonPressed(); }
} });
}); customButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane();
JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 0, 8));
centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 0, 8)); centerPane1.add(customButton, BorderLayout.NORTH);
centerPane1.add(customButton, BorderLayout.NORTH); centerPane.add(centerPane1);
centerPane.add(centerPane1); }
}
/**
* 添加监听
/** *
* 添加监听 * @param 监听列表 Add change listener.
* @param 监听列表 */
* Add change listener. public void addChangeListener(ChangeListener changeListener) {
*/ this.colorChangeListenerList.add(changeListener);
public void addChangeListener(ChangeListener changeListener) { }
this.colorChangeListenerList.add(changeListener);
} @Override
protected String title4PopupWindow() {
@Override return "Color";
protected String title4PopupWindow() { }
return "Color";
} /**
* 获取颜色
/** *
* 获取颜色 * @return 颜色
* @return 颜色 * Return the color.
* Return the color. */
*/ public Color getColor() {
public Color getColor() { return color;
return color; }
}
/**
/** * 获取颜色
* 获取颜色 *
* * @return 颜色
* @return 颜色 */
*/ public Color getNotNoneColor() {
public Color getNotNoneColor() { if (color == null) {
if (color == null) { setColor(Color.WHITE);
setColor(Color.WHITE); return Color.WHITE;
return Color.WHITE; }
} return color;
return color; }
}
/**
/** * Set the color.
* Set the color. *
* * @param color the new color.
* @param color */
* the new color. @Override
*/ public void setColor(Color color) {
@Override this.color = color;
public void setColor(Color color) {
this.color = color; // fire color change.
if (!colorChangeListenerList.isEmpty()) {
// fire color change. ChangeEvent evt = new ChangeEvent(this);
if (!colorChangeListenerList.isEmpty()) {
ChangeEvent evt = new ChangeEvent(this); for (int i = 0; i < colorChangeListenerList.size(); i++) {
this.colorChangeListenerList.get(i).stateChanged(evt);
for (int i = 0; i < colorChangeListenerList.size(); i++) { }
this.colorChangeListenerList.get(i).stateChanged(evt); }
} ColorSelectConfigManager.getInstance().addToColorQueue(color);
} this.repaint();
ColorSelectConfigManager.getInstance().addToColorQueue(color); }
this.repaint();
} /**
* 设置颜色
/** *
* 设置颜色 * @param 颜色位置
* @param 颜色位置 */
*/ @Override
@Override public void colorSetted(ColorCell colorCell) {
public void colorSetted(ColorCell colorCell) { colorCell.repaint();
colorCell.repaint(); }
}
protected void doTransparent() {
protected void doTransparent() { setColor(null);
setColor(null); }
}
protected void customButtonPressed() { protected void customButtonPressed() {
pane = new ColorSelectDetailPane(Color.WHITE); pane = new ColorSelectDetailPane(Color.WHITE);
ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this);
} }
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
if(isSupportTransparent){ if (isSupportTransparent) {
return new Dimension(super.getPreferredSize().width, TRANSPANENT_WINDOW_HEIGHT); return new Dimension(super.getPreferredSize().width, TRANSPANENT_WINDOW_HEIGHT);
} }
return new Dimension(super.getPreferredSize().width, WINDWO_HEIGHT); return new Dimension(super.getPreferredSize().width, WINDWO_HEIGHT);
} }
/** /**
* 更新最近使用颜色 * 更新最近使用颜色
* */
*/ public void updateUsedColor() {
public void updateUsedColor(){ usedColorPane.updateUsedColor();
usedColorPane.updateUsedColor(); }
}
} }

91
designer_base/src/com/fr/design/style/color/RecentUseColorPane.java

@ -1,55 +1,48 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
public class RecentUseColorPane extends BasicPane implements ColorSelectable{ import javax.swing.*;
import java.awt.*;
JColorChooser chooser;
public class RecentUseColorPane extends BasicPane implements ColorSelectable {
@Override
protected String title4PopupWindow() { private JColorChooser chooser;
return null;
} @Override
protected String title4PopupWindow() {
public RecentUseColorPane() { return null;
} }
public RecentUseColorPane(JColorChooser chooser) {
this.chooser = chooser; public RecentUseColorPane(JColorChooser chooser) {
this.chooser = chooser;
// center
JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); // center
this.add(centerPane, BorderLayout.CENTER); JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
// 最近使用 this.add(centerPane, BorderLayout.CENTER);
UsedColorPane pane = new UsedColorPane(2, 10, ColorSelectConfigManager.getInstance().getColors(),this); // 最近使用
centerPane.add(pane.getPane()); UsedColorPane pane = new UsedColorPane(2, 10, this);
} centerPane.add(pane.getPane());
}
/**
* 选中颜色 /**
* * 选中颜色
* @param 颜色 */
*/ @Override
@Override public void colorSetted(ColorCell color) {
public void colorSetted(ColorCell color) {
}
}
@Override
@Override public Color getColor() {
public Color getColor() { return null;
return null; }
}
@Override
@Override public void setColor(Color color) {
public void setColor(Color color) { chooser.getSelectionModel().setSelectedColor(color);
chooser.getSelectionModel().setSelectedColor(color); }
}
} }

219
designer_base/src/com/fr/design/style/color/UsedColorPane.java

@ -1,119 +1,112 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.SpecialUIButton; import com.fr.design.gui.ibutton.SpecialUIButton;
public class UsedColorPane extends BasicPane{ import javax.swing.*;
import java.awt.*;
public static final Color DEFAULT_COLOR = new Color(222,222,222);
public class UsedColorPane extends BasicPane {
// 最近使用面板列数
private int columns; // 默认显示颜色
// 最近使用面板行数 public static final Color DEFAULT_COLOR = new Color(222, 222, 222);
private int rows;
// 留白的单元格数量 // 最近使用面板列数
private int reserveCells; private int columns;
// 是否需要取色器按钮 // 最近使用面板行数
private boolean needPickColorButton; private int rows;
// 是否在取色时实时设定颜色 // 留白的单元格数量
private boolean setColorRealTime; private int reserveCells;
// 最近使用颜色 // 是否需要取色器按钮
private Object[] colors; private boolean needPickColorButton;
// 最近使用面板 // 是否在取色时实时设定颜色
private JPanel pane; private boolean setColorRealTime;
private ColorSelectable selectable; // 最近使用面板
private JPanel pane;
public JPanel getPane() {
return pane; private ColorSelectable selectable;
}
public JPanel getPane() {
public void setPane(JPanel pane) { return pane;
this.pane = pane; }
}
public void setPane(JPanel pane) {
public UsedColorPane(){ this.pane = pane;
}
}
/** /**
* 构造函数 * 构造函数
* *
* @param rows * @param rows
* @param columns * @param columns
* @param reserveCells 留白的单元格个数 * @param reserveCells 留白的单元格个数
* @param colors 最近使用的颜色 * @param colors 最近使用的颜色
* @param needPickColorButton 是否需要加上取色器按钮 * @param needPickColorButton 是否需要加上取色器按钮
* @param setColorRealTime 取色器是否实时设定颜色 * @param setColorRealTime 取色器是否实时设定颜色
*/ */
public UsedColorPane(int rows,int columns,int reserveCells, Object[] colors, ColorSelectable selectable, boolean needPickColorButton, boolean setColorRealTime){ public UsedColorPane(int rows, int columns, int reserveCells, ColorSelectable selectable, boolean needPickColorButton, boolean setColorRealTime) {
this.columns = columns; this.columns = columns;
this.rows = rows; this.rows = rows;
this.reserveCells = reserveCells; this.reserveCells = reserveCells;
this.colors = colors; this.selectable = selectable;
this.selectable = selectable; this.needPickColorButton = needPickColorButton;
this.needPickColorButton = needPickColorButton; this.setColorRealTime = setColorRealTime;
this.setColorRealTime = setColorRealTime; initialComponents();
initialComponents(); }
}
public UsedColorPane(int rows, int columns, ColorSelectable selectable) {
public UsedColorPane(int rows,int columns, Object[] colors,ColorSelectable selectable){ this(rows, columns, 0, selectable, false, false);
this(rows, columns, 0, colors, selectable, false, false); }
}
private void initialComponents() {
private void initialComponents(){ int total = columns * rows;
int total = columns * rows; JPanel panel = new JPanel();
JPanel panel = new JPanel(); panel.setLayout(new GridLayout(rows, columns, 1, 1));
panel.setLayout(new GridLayout(rows,columns, 1, 1)); panel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8));
panel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); //最近使用颜色
Color[] colors = ColorSelectConfigManager.getInstance().getColors(); Color[] colors = ColorSelectConfigManager.getInstance().getColors();
int size = colors.length; int size = colors.length;
int i = 0; int i = 0;
if (needPickColorButton) { if (needPickColorButton) {
// 取色按钮 // 取色按钮
SpecialUIButton pickColorButton = PickColorButtonFactory.getPickColorButton(selectable, PickColorButtonFactory.IconType.ICON16, setColorRealTime); SpecialUIButton pickColorButton = PickColorButtonFactory.getPickColorButton(selectable, PickColorButtonFactory.IconType.ICON16, setColorRealTime);
panel.add(pickColorButton); panel.add(pickColorButton);
i++; i++;
this.reserveCells += 1; this.reserveCells += 1;
} }
while (i < this.reserveCells) { while (i < this.reserveCells) {
ColorCell cc = new ColorCell(DEFAULT_COLOR, selectable); ColorCell cc = new ColorCell(DEFAULT_COLOR, selectable);
cc.setVisible(false); cc.setVisible(false);
panel.add(cc); panel.add(cc);
i++; i++;
} }
while (i < total) { while (i < total) {
Color color = i < size ? colors[size-1-i]: DEFAULT_COLOR; Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR;
panel.add(new ColorCell(color == null ? DEFAULT_COLOR : color, selectable)); panel.add(new ColorCell(color == null ? DEFAULT_COLOR : color, selectable));
i++; i++;
} }
this.pane = panel; this.pane = panel;
} }
/** /**
* 更新最近使用颜色 * 更新最近使用颜色
* */
*/ public void updateUsedColor() {
public void updateUsedColor(){ int total = columns * rows;
int total = columns * rows; Color[] colors = ColorSelectConfigManager.getInstance().getColors();
Color[] colors = ColorSelectConfigManager.getInstance().getColors(); int size = colors.length;
int size = colors.length; for (int i = this.reserveCells; i < total; i++) {
for(int i=this.reserveCells; i<total; i++){ ColorCell cell = (ColorCell) this.pane.getComponent(i);
ColorCell cell = (ColorCell) this.pane.getComponent(i); Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR;
Color color = i < size ? colors[size-1-i]: DEFAULT_COLOR; cell.setColor(color == null ? DEFAULT_COLOR : color);
cell.setColor(color == null ? DEFAULT_COLOR : color); }
} }
}
@Override
@Override protected String title4PopupWindow() {
protected String title4PopupWindow() { return null;
return null; }
}
} }
Loading…
Cancel
Save