/**
* <p>Copyright: Copyright 2010</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.control.formatter;
import org.eclipse.nebula.widgets.formattedtext.StringFormatter;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.widgets.Text;
import com.hundsun.ares.studio.core.model.ICreateInstance;
import com.hundsun.ares.studio.core.util.StringUtil;
public class AresNumberFormatter extends StringFormatter implements ICreateInstance<AresNumberFormatter>, Cloneable{
int min = 0;
int max = Integer.MAX_VALUE;
public AresNumberFormatter() {
}
public AresNumberFormatter(int min,int max) {
this.min = min;
this.max = max;
}
@Override
public void verifyText(VerifyEvent e) {
String newString = text.getText();
newString = newString.substring(0,e.start)+ e.text+ newString.substring(e.end,newString.length());
// ��Ҫʹ��str.isEmpty()������1.6�ĺ���
if(StringUtil.isEmpty(newString)){
return;
}
int i = 0;
try {
i = Integer.valueOf(newString);
} catch (Exception ex) {
e.doit = false;
beep();
return;
}
if(i > max){
e.doit = false;
beep();
text.setText(String.valueOf(max));
return;
}
}
@Override
public void setText(Text text) {
super.setText(text);
addFocusListener();
}
private void addFocusListener(){
text.addFocusListener(new FocusAdapter(){
@Override
public void focusLost(FocusEvent e) {
int i = 0;
try {
i = Integer.valueOf(text.getText());
} catch (Exception ex) {
i = -1;
}
if(i < min){
text.setText(String.valueOf(min));
beep();
return;
}
super.focusLost(e);
}
});
}
public AresNumberFormatter getNewInstance() {
try {
return (AresNumberFormatter) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AresNumberFormatter();
}
}