插件开发工具库,推荐依赖该工具库。
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.
 
 

85 lines
2.8 KiB

package com.fanruan.api.design.work.component;
import com.fanruan.api.cal.ParameterKit;
import com.fanruan.api.design.ui.component.UIComboBox;
import com.fanruan.api.design.ui.component.table.model.DesignModelAdapterKit;
import com.fanruan.api.util.AssistKit;
import com.fr.design.DesignModelAdapter;
import com.fr.stable.ParameterProvider;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author richie
* @version 10.0
* Created by richie on 2019/11/1
* 参数选择下拉框
*/
public class ParameterComboBox extends UIComboBox<ParameterProvider> {
public ParameterComboBox() {
this.initComponents();
}
private void initComponents() {
this.setRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof ParameterProvider) {
this.setText(value.toString());
}
return this;
}
});
updateParaItems();
}
public void updateParaItems() {
DesignModelAdapter<?, ?> designModel = DesignModelAdapterKit.getCurrentModelAdapter();
this.removeAllItems();
if (designModel != null) {
ParameterProvider[] paras = designModel.getParameters();
List<String> paraNameList = new ArrayList<String>();
for (int i = 0; i < paras.length; i++) {
String paraName = paras[i].getName();
if (!paraNameList.contains(paraName)) {
paraNameList.add(paraName);
this.addItem(paras[i]);
}
}
}
}
@Override
public ParameterProvider getSelectedItem() {
if (super.getSelectedItem() instanceof ParameterProvider) {
return (ParameterProvider) super.getSelectedItem();
} else if (super.getSelectedItem() instanceof String && ((String) super.getSelectedItem()).startsWith("$")) {
return ParameterKit.newParameter(((String) super.getSelectedItem()).substring(1));
}
return ParameterKit.newParameter();
}
public void setSelectedParameter(ParameterProvider parameter) {
if (parameter == null) {
return;
}
for (int i = 0; i < this.getItemCount(); i++) {
if (AssistKit.equals(((ParameterProvider) this.getItemAt(i)).getName(), parameter.getName())) {
this.setSelectedIndex(i);
return;
}
}
this.addItem(parameter);
this.setSelectedItem(parameter);
}
}