插件开发工具库,推荐依赖该工具库。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.2 KiB

package com.fanruan.api.design.ui.editor;
import com.fanruan.api.design.DesignKit;
import com.fanruan.api.util.ArrayKit;
import com.fanruan.api.util.StringKit;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import javax.swing.*;
import java.awt.*;
/**
* @author richie
* @version 10.0
* Created by richie on 2019/11/1
* 列编辑器,里面是数据集的列名
*/
public class TypeColumnNameEditor extends TypeColumnIndexEditor {
private String[] columnNames;
public TypeColumnNameEditor() {
this(ArrayKit.EMPTY_STRING_ARRAY);
}
public TypeColumnNameEditor(String[] columnNames) {
this(columnNames, DesignKit.i18nText("Fine-Design_Basic_Column_Name"));
}
public TypeColumnNameEditor(final String[] columnNames, String name) {
super(columnNames.length, name);
this.columnNames = columnNames;
valueColumnIndexComboBox.setRenderer(new UIComboBoxRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value == null) {
this.setText("");
} else {
this.setText(columnNames[((Integer) value).intValue() - 1]);
}
return this;
}
});
}
@Override
public void setValue(Object value) {
for (int i = 0; i < columnNames.length; i++) {
if (columnNames[i].equalsIgnoreCase(String.valueOf(value))) {
super.setValue(i + 1);
return;
}
}
super.reset();
}
@Override
public boolean accept(Object object) {
return object instanceof String;
}
public String getColumnName() {
int index = this.getValue() - 1;
return getColumnNameAtIndex(index);
}
public String getColumnNameAtIndex(int index) {
return index >= 0 && columnNames.length > index ? columnNames[index] : StringKit.EMPTY;
}
public String getIconName() {
return "ds_column_name";
}
}