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.7 KiB
85 lines
2.7 KiB
package com.fanruan.api.design.work.component; |
|
|
|
import com.fanruan.api.cal.ParameterKit; |
|
import com.fanruan.api.design.DesignKit; |
|
import com.fanruan.api.design.ui.component.UIComboBox; |
|
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 = DesignKit.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); |
|
} |
|
} |