⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nfatodfa.java

📁 有限自动机输入,转换,识别,图形显示与化简
💻 JAVA
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -