nfatodfa.java

来自「有限自动机输入,转换,识别,图形显示与化简」· Java 代码 · 共 145 行

JAVA
145
字号
package cn.work.zdj.ui;

import java.util.Set;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;

import cn.work.zdj.sys.AutoMachine;
import cn.work.zdj.sys.AutoMachineFactory;
import cn.work.zdj.sys.IAppConstants;

public class NFAToDFA extends ViewPart implements ISelectionListener{
	private Canvas canvas;
	private AutoMachine machine;
	private Button transfer;
	private Button transferENFAToDFA, temp;
	private Button transferENFAToNFA;
	private Button simplifyMachine;
	
	public NFAToDFA() {
		// TODO 自动生成构造函数存根
	}

	@Override
	public void createPartControl(Composite parent) {
		// TODO 自动生成方法存根
		Composite composite = new Composite(parent,SWT.NONE);
		composite.setLayout(new GridLayout(1,false));
		canvas = new Canvas(parent,SWT.NONE);
		IViewPart vp = getViewSite().getPage().findView(IAppConstants.OLD_ZDJ_VIEW_ID);
		Table table = ((OldZdj)vp).getTableViewer().getTable();

		machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
		
		transfer = new Button(composite,SWT.NONE);
		transferENFAToDFA = new Button(composite,SWT.NONE);
		transferENFAToNFA = new Button(composite,SWT.None);
		temp = new Button(composite,SWT.None);
		simplifyMachine   = new Button(composite,SWT.None);
		transfer.setText("NFA-> DFA");
		transferENFAToDFA.setText("带空移动的NFA-> DFA");
		transferENFAToNFA.setText("带空移动的NFA-> NFA");
		simplifyMachine.setText("DFA化简");
		
		transferENFAToDFA.setVisible(false);
		temp.setVisible(false);
		transfer.addSelectionListener(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();

				machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
				
				AutoMachine DFA = machine.NFAtoDFA(machine);
				//MessageDialog.openInformation(null,"提示",DFA.toString());
				
				AutoMachineFactory.getInstance().add(DFA);
				OldZdj.selectionChanged();
			}		
		});
		
		transferENFAToNFA.addSelectionListener(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();

				machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
				AutoMachine NFA = machine.ENFAtoNFA(machine);
	
				AutoMachineFactory.getInstance().add(NFA);
				OldZdj.selectionChanged();
			}
			
		});
		simplifyMachine.addSelectionListener(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();

				machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
				AutoMachine simplifyDFA = machine.simplifyMachine(machine);
	
				AutoMachineFactory.getInstance().add(simplifyDFA);
				OldZdj.selectionChanged();
			}
			
		});
		transfer.setEnabled(!machine.isDFA() && !machine.isE_NFA());
		simplifyMachine.setEnabled(machine.isDFA());
		transferENFAToNFA.setEnabled(machine.isE_NFA());
		
		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().addSelectionListener(this);
	}

	@Override
	public void setFocus() {
		// TODO 自动生成方法存根

	}

	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
		// TODO 自动生成方法存根
		IViewPart vp = getViewSite().getPage().findView(IAppConstants.OLD_ZDJ_VIEW_ID);
		Table table = ((OldZdj)vp).getTableViewer().getTable();
		
		machine = (AutoMachine)table.getItem(table.getSelectionIndex()).getData();
		transfer.setEnabled(!machine.isDFA() && !machine.isE_NFA());
		transferENFAToNFA.setEnabled(machine.isE_NFA());
		simplifyMachine.setEnabled(machine.isDFA());
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?