import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
这一堆包都没有
下载了org.eclipse包可能放错地方了,程序还是跑不起来
下面是主函数
package visualizer;
import interpreter.*;
import java.io.*;
import java.util.*;
import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
@version 1.0
*/
public class Main {
private Shell shell = null;
private Menu menu = null;
private TabFolder tabFolder = null;
private MenuItem roundRobinItem = null;
private MenuItem uniformItem = null;
private MenuItem userItem = null;
boolean firstOpen = true;
private void menuFileNew() {
TabItem[] tabItem = new TabItem[1];
tabItem[0] = new TabItem(tabFolder, SWT.NONE);
tabItem[0].setControl(new VisualizerTab(tabFolder, SWT.NONE));
tabItem[0].setText("Unnamed.mwl");
((AbstractTab) tabItem[0].getControl()).setFilename("Unnamed.mwl");
tabFolder.setSelection(tabItem);
firstOpen = false;
}
private void menuFileOpen() {
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
fileDialog.setFilterExtensions(new String[] { "*.mwl" });
if (fileDialog.open() == null)
return;
String fileSeparator = System.getProperty("file.separator");
String filename = fileDialog.getFilterPath() + fileSeparator
+ fileDialog.getFileName();
String program = getStringFromFile(filename);
if (program == null)
return;
TabItem[] tabItem = new TabItem[1];
tabItem[0] = null;
if (firstOpen && !getCurrentTab().getChanged()) {
tabItem[0] = tabFolder.getItem(0);
} else {
tabItem[0] = new TabItem(tabFolder, SWT.NONE);
tabItem[0].setControl(new VisualizerTab(tabFolder, SWT.NONE));
}
tabItem[0].setText(fileDialog.getFileName());
AbstractTab exploit = (AbstractTab) tabItem[0].getControl();
exploit.setFilename(filename);
exploit.setCode(program);
tabFolder.setSelection(tabItem);
firstOpen = false;
}
private void menuFileClose() {
TabItem[] tabItems = tabFolder.getSelection();
if (tabItems.length != 1)
return;
AbstractTab exploit = (AbstractTab) tabItems[0].getControl();
if (!exploit.close())
return;
tabItems[0].dispose();
}
private void menuFileSave() {
AbstractTab tab = getCurrentTab();
writeStringToFile(tab.getFilename(), tab.getCode());
}
private void menuFileSaveAs() {
// get the filename
AbstractTab tab = getCurrentTab();
int index = tabFolder.getSelectionIndex();
if (index == -1)
return;
TabItem tabItem = tabFolder.getItem(index);
String filename = tabItem.getText();
// prepare save dialog
FileDialog saveDialog = new FileDialog(shell, SWT.SAVE);
saveDialog.setFileName(getCurrentTab().getFilename());
if (saveDialog.open() == null)
return;
String fileSeparator = System.getProperty("file.separator");
// execute dialog, save file and refresh filename fields
filename = saveDialog.getFilterPath() + fileSeparator + saveDialog.getFileName();
writeStringToFile(filename, tab.getCode());
tabItem.setText(saveDialog.getFileName());
tab.setFilename(filename);
}
private void menuFileExit() {
// only close the shell if all tabs have been closed
TabItem[] tabItems = tabFolder.getItems();
for (int i = 0; i < tabItems.length; i++) {
AbstractTab exploit = (AbstractTab) tabItems[i].getControl();
if (!exploit.close())
return;
}
shell.close();
}
private AbstractTab getCurrentTab() {
int index = tabFolder.getSelectionIndex();
if (index == -1)
return null;
TabItem tabItem = tabFolder.getItem(index);
return (AbstractTab) tabItem.getControl();
}
public String getStringFromFile(String filename) {
String code = "";
try {
InputStreamReader in = new InputStreamReader(new FileInputStream(filename));
char[] buf = new char[1000];
int num = 0;
while (true) {
num = in.read(buf);
if (num < 0)
break;
code += new String(buf, 0, num);
}
} catch (FileNotFoundException e) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
messageBox.setMessage("File: " + filename + " not found");
messageBox.open();
} catch (IOException e) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
messageBox.setMessage("Error while reading from file: " + filename);
messageBox.open();
}
return code;
}
public void writeStringToFile(String filename, String text) {
try {
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
filename));
out.write(text);
out.flush();
} catch (FileNotFoundException e) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
messageBox.setMessage("File: " + filename + " not found");
messageBox.open();
} catch (IOException e) {
MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
messageBox.setMessage("Error while writing to file: " + filename);
messageBox.open();
}
}
private void createMenu() {
menu = new Menu(shell, SWT.BAR);
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
MenuItem fileItem = new MenuItem(menu, SWT.CASCADE);
fileItem.setText("&File");
fileItem.setMenu(fileMenu);
MenuItem newItem = new MenuItem(fileMenu, SWT.PUSH);
newItem.setText("&New\tCrtl+N");
newItem.setAccelerator(SWT.CTRL + 'N');
newItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileNew();
}
});
MenuItem openItem = new MenuItem(fileMenu, SWT.PUSH);
openItem.setText("&Open\tCrtl+O");
openItem.setAccelerator(SWT.CTRL + 'O');
openItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileOpen();
}
});
MenuItem closeItem = new MenuItem(fileMenu, SWT.PUSH);
closeItem.setText("&Close\tCrtl+C");
closeItem.setAccelerator(SWT.CTRL + 'C');
closeItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileClose();
}
});
MenuItem saveItem = new MenuItem(fileMenu, SWT.PUSH);
saveItem.setText("&Save\tCrtl+S");
saveItem.setAccelerator(SWT.CTRL + 'S');
saveItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileSave();
}
});
MenuItem saveAsItem = new MenuItem(fileMenu, SWT.PUSH);
saveAsItem.setText("&Save as...\tCrtl+A");
saveAsItem.setAccelerator(SWT.CTRL + 'A');
saveAsItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileSaveAs();
}
});
new MenuItem(fileMenu, SWT.SEPARATOR);
MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH);
exitItem.setText("Exit\tCrtl+E");
exitItem.setAccelerator(SWT.CTRL + 'E');
exitItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
menuFileExit();
}
});
Menu editMenu = new Menu(shell, SWT.DROP_DOWN);
MenuItem editItem = new MenuItem(menu, SWT.CASCADE);
editItem.setText("&Edit");
editItem.setMenu(editMenu);
MenuItem cutItem = new MenuItem(editMenu, SWT.PUSH);
cutItem.setText("Cu&t\tShift+Delete");
cutItem.setAccelerator(SWT.SHIFT + SWT.DEL);
cutItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().cut();
}
});
MenuItem copyItem = new MenuItem(editMenu, SWT.PUSH);
copyItem.setText("&Copy\tCrtl+Insert");
copyItem.setAccelerator(SWT.CTRL + SWT.INSERT);
copyItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().copy();
}
});
MenuItem pasteItem = new MenuItem(editMenu, SWT.PUSH);
pasteItem.setText("&Paste\tShift+Insert");
pasteItem.setAccelerator(SWT.SHIFT + SWT.INSERT);
pasteItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().paste();
}
});
Menu actionMenu = new Menu(shell, SWT.DROP_DOWN);
MenuItem actionItem = new MenuItem(menu, SWT.CASCADE);
actionItem.setText("&Action");
actionItem.setMenu(actionMenu);
MenuItem runItem = new MenuItem(actionMenu, SWT.PUSH);
runItem.setText("&Visualize\tF1");
runItem.setAccelerator(SWT.F1);
runItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().simulate();
}
});
MenuItem stepItem = new MenuItem(actionMenu, SWT.PUSH);
stepItem.setText("&Step\tF2");
stepItem.setAccelerator(SWT.F2);
stepItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().step();
}
});
MenuItem resetItem = new MenuItem(actionMenu, SWT.PUSH);
resetItem.setText("&Reset\tF3");
resetItem.setAccelerator(SWT.F3);
resetItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().reset();
}
});
MenuItem checkItem = new MenuItem(actionMenu, SWT.PUSH);
checkItem.setText("&Check\tF4");
checkItem.setAccelerator(SWT.F4);
checkItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().check();
}
});
MenuItem transformItem = new MenuItem(actionMenu, SWT.PUSH);
transformItem.setText("&Transform\tF5");
transformItem.setAccelerator(SWT.F5);
transformItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().transform();
}
});
Menu schedulerMenu = new Menu(shell, SWT.DROP_DOWN);
MenuItem schedulerItem = new MenuItem(menu, SWT.CASCADE);
schedulerItem.setText("&Scheduler");
schedulerItem.setMenu(schedulerMenu);
roundRobinItem = new MenuItem(schedulerMenu, SWT.RADIO);
roundRobinItem.setText("&Round Robin");
roundRobinItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().setScheduler(new RoundRobinScheduler());
}
});
roundRobinItem.setSelection(true);
uniformItem = new MenuItem(schedulerMenu, SWT.RADIO);
uniformItem.setText("&Uniform");
uniformItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
getCurrentTab().setScheduler(new UniformScheduler());
}
});
}
private void setScheduler() {
AbstractTab exploit = getCurrentTab();
if (exploit == null)
return;
Scheduler scheduler = exploit.getScheduler();
roundRobinItem.setSelection(false);
uniformItem.setSelection(false);
if (scheduler instanceof RoundRobinScheduler)
roundRobinItem.setSelection(true);
else if (scheduler instanceof UniformScheduler)
uniformItem.setSelection(true);
else
roundRobinItem.setSelection(true);
}
private void createShell() {
shell = new Shell();
FillLayout fillLayout = new FillLayout();
fillLayout.type = SWT.VERTICAL;
shell.setLayout(fillLayout);
tabFolder = new TabFolder(shell, SWT.NONE);
tabFolder.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
setScheduler();
}
});
createMenu();
shell.setMenuBar(menu);
menuFileNew();
shell.setText("Information Leak Visualizer");
shell.setSize(new Point(1024, 768));
}
public static void main(String[] args) {
Display display = Display.getDefault();
Main test = new Main();
test.createShell();
test.shell.open();
while (!test.shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
你看下你的eclipse安装目录下的plugins文件下有没有你需要的jar包