Browse Source

Merge pull request #435 in DESIGN/design from ~YAOH.WU/design:release/10.0 to release/10.0

* commit '688e96673df662477f51ce9a5f2bfd22c6ad9de5':
  无JIRA任务,使历史颜色存储最大值生效
  REPORT-11037 最近使用颜色只存不透明颜色
final/10.0
yaoh.wu 6 years ago
parent
commit
d60dff07eb
  1. 47
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java

47
designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java

@ -5,8 +5,7 @@ import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLReadable; import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
import java.awt.*; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -17,10 +16,9 @@ import java.util.List;
*/ */
public class ColorSelectConfigManager implements XMLReadable { public class ColorSelectConfigManager implements XMLReadable {
// 最近使用的颜色个数 // 最大存储的最近使用的颜色个数
private int colorNums = 20; private int colorNum = 20;
private boolean init = true;
// 最近使用颜色 // 最近使用颜色
private List<Color> colors = new ArrayList<Color>(); private List<Color> colors = new ArrayList<Color>();
private static final String RECENT_COLOR_TAG = "RecentColors"; private static final String RECENT_COLOR_TAG = "RecentColors";
@ -33,35 +31,30 @@ public class ColorSelectConfigManager implements XMLReadable {
} }
public int getColorNum() { public int getColorNum() {
return colorNums; return colorNum;
} }
public void setColorNum(int colorNums) { public void setColorNum(int colorNum) {
this.colorNums = colorNums; this.colorNum = colorNum;
} }
/** /**
* 添加颜色到最近使用队列中 * 添加颜色到最近使用队列中
* *
* @param color 颜色 * @param color 颜色
*/ */
public void addToColorQueue(Color color) { public void addToColorQueue(Color color) {
if(color == null){
// 将透明度不为 0% 的 颜色去掉
if (color == null || color.getAlpha() != 0xff) {
return; return;
} }
// 过滤重复的最近使用颜色 // 过滤重复的最近使用颜色
// 因为有个后进先出的问题,最近使用的颜色需要放到最前面所以没用set // 最近使用的颜色需要放到"最前面","最前面"是在面板部分做的,是 colors 的逆序,因此保证最新的放在 list 的最后,
if (colors.contains(color)) { colors.remove(color);
colors.remove(color);
}
colors.add(color); colors.add(color);
/*@author yaohwu*/
//将历史颜色信息保存到xml文件中去
if (colors != null && !colors.isEmpty()) {
this.setColorsToFile(colors);
}
} }
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
@ -71,8 +64,11 @@ public class ColorSelectConfigManager implements XMLReadable {
String tagName = reader.getTagName(); String tagName = reader.getTagName();
if (reader.isChildNode()) { if (reader.isChildNode()) {
if (ComparatorUtils.equals(COLOR_TAG, tagName)) { if (ComparatorUtils.equals(COLOR_TAG, tagName)) {
Color color = null; Color color = reader.getAttrAsColor("colors", null);
colors.add(reader.getAttrAsColor("colors", color)); // 将透明度不为 0% 的 颜色去掉
if (color != null && color.getAlpha() == 0xff) {
colors.add(color);
}
} }
} }
} }
@ -82,11 +78,18 @@ public class ColorSelectConfigManager implements XMLReadable {
public void writeXML(XMLPrintWriter writer) { public void writeXML(XMLPrintWriter writer) {
writer.startTAG(RECENT_COLOR_TAG); writer.startTAG(RECENT_COLOR_TAG);
if (this.colors != null && !this.colors.isEmpty()) { if (this.colors != null && !this.colors.isEmpty()) {
for (int i = 0; i < this.colors.size(); i++) { // 只应该存储 max 个,其他颜色存了也没用
// 从 colors 的尾部开始计算,从尾往头数 max 个,但是存储的时候还是要从头往尾
int size = colors.size();
int beginIndex = size > colorNum ? size - colorNum : 0;
for (int i = beginIndex; i < this.colors.size(); i++) {
writer.startTAG(COLOR_TAG); writer.startTAG(COLOR_TAG);
writer.attr("colors", colors.get(i).getRGB()); writer.attr("colors", colors.get(i).getRGB());
writer.end(); writer.end();
} }
} }
writer.end(); writer.end();
} }

Loading…
Cancel
Save