forked from fanruan/design
Fangjie Hu
8 years ago
6 changed files with 254 additions and 68 deletions
@ -0,0 +1,95 @@
|
||||
package com.fr.design.mainframe.chart.gui.item; |
||||
|
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
|
||||
import java.awt.event.FocusAdapter; |
||||
import java.awt.event.FocusEvent; |
||||
import java.awt.event.ItemEvent; |
||||
import java.awt.event.ItemListener; |
||||
|
||||
/** |
||||
* Created by hufan on 2016/10/11. |
||||
*/ |
||||
public class FlexibleComboBox extends UIComboBox { |
||||
//新旧分界线
|
||||
private int partition = 0; |
||||
//分界线上还是分界线下
|
||||
private boolean bottom = true; |
||||
//图表是否开启切换模式
|
||||
private boolean multiMode = false; |
||||
//当前下拉框处理的事件类型
|
||||
private ItemEvenType itemEvenType = ItemEvenType.DEFAULT; |
||||
|
||||
public boolean isReactor(){ |
||||
return itemEvenType == ItemEvenType.REACTOR; |
||||
} |
||||
|
||||
public int getPartition() { |
||||
return partition; |
||||
} |
||||
|
||||
public void setPartition(int partition) { |
||||
this.partition = partition; |
||||
} |
||||
|
||||
public boolean isBottom() { |
||||
return bottom; |
||||
} |
||||
|
||||
public void setBottom(boolean bottom) { |
||||
this.bottom = bottom; |
||||
} |
||||
|
||||
public boolean isMultiMode() { |
||||
return multiMode; |
||||
} |
||||
|
||||
public void setMultiMode(boolean multiMode) { |
||||
this.multiMode = multiMode; |
||||
} |
||||
|
||||
public ItemEvenType getItemEvenType() { |
||||
return itemEvenType; |
||||
} |
||||
|
||||
public void setItemEvenType(ItemEvenType itemEvenType) { |
||||
this.itemEvenType = itemEvenType; |
||||
} |
||||
|
||||
public int getRelatedSelectedIndex(){ |
||||
return isMultiMode() && isBottom() ? (super.getSelectedIndex() + partition) : super.getSelectedIndex(); |
||||
} |
||||
|
||||
public void setRelatedSelectedIndex(int index){ |
||||
if (isMultiMode() && isBottom()){ |
||||
super.setSelectedIndex(index - partition); |
||||
}else { |
||||
super.setSelectedIndex(index); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void initListener() { |
||||
if (shouldResponseChangeListener()) { |
||||
this.addFocusListener(new FocusAdapter() { |
||||
@Override |
||||
public void focusGained(FocusEvent e) { |
||||
fireSetGlobalName(); |
||||
} |
||||
}); |
||||
this.addItemListener(new ItemListener() { |
||||
@Override |
||||
public void itemStateChanged(ItemEvent e) { |
||||
if (uiObserverListener == null) { |
||||
return; |
||||
} |
||||
fireSetGlobalName(); |
||||
//只有不在重构状态才会触发下拉框选择时的改变事件
|
||||
if (e.getStateChange() == ItemEvent.SELECTED && !isReactor()) { |
||||
uiObserverListener.doChange(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,37 @@
|
||||
package com.fr.design.mainframe.chart.gui.item; |
||||
|
||||
import com.fr.general.ComparatorUtils; |
||||
|
||||
/** |
||||
* Created by hufan on 2016/10/11. |
||||
*/ |
||||
public enum ItemEvenType { |
||||
REACTOR("reactor"),//重构选项
|
||||
DEFAULT("default")//默认选项操作
|
||||
; |
||||
|
||||
//这个String会存起来的,不能随意更改。
|
||||
private String type; |
||||
|
||||
private ItemEvenType(String type){ |
||||
this.type = type; |
||||
} |
||||
|
||||
public String getType() { |
||||
return this.type; |
||||
} |
||||
|
||||
private static ItemEvenType[] types; |
||||
|
||||
public static ItemEvenType parse(String type){ |
||||
if(types == null){ |
||||
types = ItemEvenType.values(); |
||||
} |
||||
for(ItemEvenType itemEvenType : types){ |
||||
if(ComparatorUtils.equals(itemEvenType.getType(), type)){ |
||||
return itemEvenType; |
||||
} |
||||
} |
||||
return DEFAULT; |
||||
} |
||||
} |
Loading…
Reference in new issue