📄 inputexcepess.java
字号:
package cn.work.zdj.ui;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.part.ViewPart;
import cn.work.zdj.sys.AutoMachine;
import cn.work.zdj.sys.IAppConstants;
public class InputExcepess extends ViewPart {
private Group group_1;
//private AutoMachine machine;
private int i = 1;
private Text tExcepess[] = new Text[10];
private Button bExcepess[] = new Button[10];
public InputExcepess() {
// TODO 自动生成构造函数存根
}
@Override
public void createPartControl(Composite parent) {
// TODO 自动生成方法存根
final Composite composite = new Composite(parent,SWT.NONE);
composite.setLayout(new GridLayout(1,false));
group_1 = new Group(composite,SWT.None);
group_1.setText("输入表达式");
final GridLayout gridLayout = new GridLayout(4,false);
gridLayout.marginRight = 10;
gridLayout.verticalSpacing = 10;
gridLayout.marginHeight = 10;
group_1.setLayout(gridLayout);
Label label1 = new Label(group_1,SWT.RIGHT);
label1.setText("输入表达式");
tExcepess[0] = new Text(group_1,SWT.BORDER);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 200;
tExcepess[0].setLayoutData(gd);
bExcepess[0] = new Button(group_1,SWT.None);
bExcepess[0].setText("验证");
final SelectionListener listener = new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e) {
// TODO 自动生成方法存根
}
public void widgetSelected(SelectionEvent e) {
// TODO 自动生成方法存根
IViewPart vp = getViewSite().getPage().findView(IAppConstants.OLD_ZDJ_VIEW_ID);
Table table = ((OldZdj)vp).getTableViewer().getTable();
AutoMachine machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
String express = null;
if(e.widget == bExcepess[0]){
express = tExcepess[0].getText();
}else if(e.widget == bExcepess[1])
express = tExcepess[1].getText();
else if(e.widget == bExcepess[2])
express = tExcepess[2].getText();
else if(e.widget == bExcepess[3])
express = tExcepess[3].getText();
else if(e.widget == bExcepess[4])
express = tExcepess[4].getText();
else if(e.widget == bExcepess[5])
express = tExcepess[5].getText();
else if(e.widget == bExcepess[5])
express = tExcepess[5].getText();
else if(e.widget == bExcepess[6])
express = tExcepess[6].getText();
else if(e.widget == bExcepess[7])
express = tExcepess[7].getText();
else if(e.widget == bExcepess[8])
express = tExcepess[8].getText();
else if(e.widget == bExcepess[9])
express = tExcepess[9].getText();
//String state2 = null;
Set<String> set =null;
Set<String> set2 = null;
for(int i=0;i<express.length();i++){
//MessageDialog.openInformation(null,"提示",""+express.charAt(i));
if(i == 0){
//state2 = machine.getFunction().outputNextState(machine.getFirState(), express.charAt(i));
set = machine.getFunction().outputNextState(machine.getFirState(), express.charAt(i));
//MessageDialog.openInformation(null,"提示",""+set.toString());
if(set == null)
break;
continue;
}
//state2 = machine.getFunction().outputNextState(state2,express.charAt(i));
//MessageDialog.openInformation(null,"提示",state2);
Iterator states = set.iterator();
while(states.hasNext()){
String temp2 = states.next().toString();
Set temp = machine.getFunction().outputNextState(temp2,express.charAt(i));
if(temp == null||temp.size() ==0){
//MessageDialog.openInformation(null,"提示",temp2);
continue;
}
if(set2 == null)
set2 = new HashSet();
Iterator states2 = temp.iterator();
while(states2.hasNext()){
String strState2 = states2.next().toString();
if(strState2 != null && !strState2.equals(""))
set2.add(strState2);
}
//MessageDialog.openInformation(null,"提示",set2.toString());
}
set = null;
if(set2 == null||set2.size() ==0)
break;
set = set2;
set2 = null;
//if(state2 == null)
//break;
}
//if(state2 == null || !machine.getEndStates().contains(state2)){
boolean isSucess = false;
if(set != null){
Iterator states = set.iterator();
while(states.hasNext()){
if(machine.getEndStates().contains(states.next().toString())){
isSucess = true;
break;
}
}
}
if(!isSucess){
MessageDialog.openInformation(null,"提示","自动机:"+machine.getLabel()+" 无法验证该表达式");
}else{
MessageDialog.openInformation(null,"提示","自动机:"+machine.getLabel()+" 成功验证该表达式");
}
}
};
bExcepess[0].addSelectionListener(listener);
Button bExcepess_2 = new Button(group_1,SWT.NONE);
bExcepess_2.setText("增加");
bExcepess_2.addSelectionListener(new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e) {
// TODO 自动生成方法存根
}
public void widgetSelected(SelectionEvent e) {
// TODO 自动生成方法存根
if(i==10){
MessageDialog.openInformation(null,"提示","表达式添加不能超过十个");
return;
}
Label label2 = new Label(group_1,SWT.RIGHT);
label2.setText("输入表达式");
tExcepess[i] = new Text(group_1,SWT.BORDER);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 200;
tExcepess[i].setLayoutData(gd);
bExcepess[i] = new Button(group_1,SWT.None);
bExcepess[i].setText("验证");
bExcepess[i].addSelectionListener(listener);
Label label = new Label(group_1,SWT.None);
composite.layout(true);
i++;
}
});
}
@Override
public void setFocus() {
// TODO 自动生成方法存根
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -