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

📄 mainframe.java

📁 著名的开源仿真软件yale
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	menuBar.add(expMenu);	setJMenuBar(menuBar);	JMenu helpMenu = new JMenu("Help");	helpMenu.setMnemonic(KeyEvent.VK_H);	JMenuItem aboutItem = new JMenuItem("About",					    new ImageIcon(Tools.getResource("icons/icon_about.gif")));	aboutItem.setToolTipText("Display information about Yale");	aboutItem.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) {		    try {			new AboutBox(MainFrame.this, 				     "YALE", 				     "YALE - Yet Another Learning Environment\n"+				     "Copyright (C) 2001, 2002, 2003 "+				     "Simon Fischer, Ralf Klinkenberg, Ingo Mierswa, Katharina Morik, Oliver Ritthoff\n"+				     "Artificial Intelligence Unit, Computer Science Department, University of Dortmund, 44221 Dortmund, Germany\n"+				     "email: yale@ls8.cs.uni-dortmund.de, web: http://yale.cs.uni-dortmund.de/\n\n"+				     "Yale comes with ABSOLUTELY NO WARRANTY; This is free software," +				     "and you are welcome to redistribute it under certain conditions;"+				     "see license information in the file named LICENSE.",				     new Image[] { ImageIO.read(Tools.getResource("yale_logo.gif"))}).show();		    } catch (IOException ioe) {			ioe.printStackTrace();		    }		}	    });	helpMenu.add(aboutItem);	JMenuItem contents = new JMenuItem("Contents");	contents.setToolTipText("Browse the Yale GU Manual");	contents.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) {		    //Browser.showDialog("file:///home/simon/yale/tutorial/Manual-HTML/Manual.html");		    Browser.showDialog(Tools.getResource("html/manual/Manual.html"));		}	    });	helpMenu.add(contents);	menuBar.add(helpMenu);	JMenuItem paperItem = new JMenuItem("Generate Paper");	paperItem.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) {		    JOptionPane.showMessageDialog(MainFrame.this, 						  "Function will be implemented in later release.", 						  "Error", 						  JOptionPane.WARNING_MESSAGE);		} 	    });	helpMenu.add(paperItem);	menuBar.add(helpMenu);		JToolBar toolBar = new JToolBar();	toolBar.setRollover(true);	toolBar.removeNotify();	toolBar.add(NEW_ACTION);	toolBar.add(OPEN_ACTION);	toolBar.add(SAVE_ACTION);        toolBar.add(SAVE_AS_ACTION);        toolBar.add(PRINT_ACTION);	toolBar.addSeparator();        toolBar.add(treePanel.getOperatorTree().CUT_ACTION);        toolBar.add(treePanel.getOperatorTree().PASTE_ACTION);	toolBar.addSeparator();	toolBar.add(RUN_ACTION);	toolBar.add(RESUME_ACTION);	toolBar.add(STOP_ACTION);	toolBar.addSeparator();        toolBar.add(treePanel.getOperatorTree().INSERT_OPERATOR_ACTION);	toolBar.add(VALIDATE_ACTION);	getContentPane().add(toolBar, BorderLayout.NORTH);	getContentPane().add(statusBar, BorderLayout.SOUTH);	enableActions();	pack();	splitPaneV.setDividerLocation(3*splitPaneV.getHeight()/4);    }    public int getHorizontalDividerLocation() {	return splitPaneV.getDividerLocation();    }    public int getVerticalDividerLocation() {	return treePanel.getDividerLocation();    }    public void setDividerLocations(int h, int v) {	splitPaneV.setDividerLocation(h);	treePanel.setDividerLocation(v);    }    public OperatorPropertyTable getPropertyTable() {	return treePanel.getPropertyTable();    }    public MessageViewer getMessageViewer() {	return messageViewer;    }    public OperatorTree getOperatorTree() {	return treePanel.getOperatorTree();    }        public ResultDisplay getResultDisplay() {	return resultDisplay;    }    public void experimentEnded(IOContainer results) {	if (results != null) {	    statusBar.experimentEnded();	    resultDisplay.setData(results, "Experiment results:");	    editorTabs.setSelectedComponent(resultDisplay);	    resultDisplay.showSomething();	}    	experimentThread = null;	enableActions();    }    public void breakpointReached(Operator operator, IOContainer ioContainer) {	List additionalButtons= new LinkedList();	additionalButtons.add(new JButton(RESUME_ACTION));	additionalButtons.add(new JButton(STOP_ACTION));	resultDisplay.setData(ioContainer, 			      "Results in application "+operator.getApplyCount()+" of "+operator.getName()+":");	ExperimentThread.beep("breakpoint");    }    /** Sets a new experiment and registers the MainFrame listener. */    public void setExperiment(Experiment experiment) {	Yale.setExperiment(experiment);	Yale.getExperiment().addBreakpointListener(MainFrame.this);	setOperator(Yale.getExperiment().getRootOperator());	Yale.getExperiment().getRootOperator().addExperimentListener(monitorPanel);	Yale.getExperiment().getRootOperator().addExperimentListener(statusBar);	resultDisplay.clear();	enableActions();	setTitle();    }    /** Sets the root operator for all editors. */    public void setOperator(Operator root) {	treePanel.experimentChanged(root);	editor.experimentChanged(root);	experimentPanel.experimentChanged(root);    }    /** Must be called when the experiment changed (such that is different     *  from the experiment last saved to disk. */    public void experimentChanged() {	boolean oldValue = this.changed;	this.changed = true;	if (!oldValue) {	    setTitle();	}		if (Yale.getExperiment().getExperimentFile() != null)	    this.SAVE_ACTION.setEnabled(true);	    }    /** Sets the window title (Yale + filename + an asterisk if experiment was modified. */    private void setTitle() {	File file = null;	if (Yale.getExperiment() != null)	    file = Yale.getExperiment().getExperimentFile();	if (file != null) {	    setTitle(TITLE + " ("+file.getName()+		     (changed?"*":"")+")");	     	} else {	    setTitle(TITLE);	}	    }    ////////////////////// File menu actions ////////////////////    private boolean close() {	if (changed) {	    File file = Yale.getExperiment().getExperimentFile();	    if (file == null) {		file = new File("unnamed.xml");	    }		    int choice = JOptionPane.showConfirmDialog(this,						       "Save changes to '"+file+"'?", 						       "Save changes", 						       JOptionPane.YES_NO_CANCEL_OPTION);	    switch (choice) {	    case JOptionPane.YES_OPTION:		save();	    case JOptionPane.NO_OPTION:		if (experimentThread != null) experimentThread.stopExperiment();		return true;	    default:	    case JOptionPane.CANCEL_OPTION:		return false;	    }	} else {	    return true;	}    }    protected void open() {	if (close()) {	    File file = SwingTools.chooseFile(MainFrame.this, null, true);	    if (file == null) {		return;	    }	    	    open(file);	}    }    protected void open(File file) {	try {	    try {		YaleGUI.readExperimentFile(file);				setExperiment(Yale.getExperiment());	    } catch (XMLException ex) {		ex.printStackTrace();		SwingTools.showErrorMessage("While loading '"+file+"'", ex);		Experiment experiment = new Experiment();		experiment.setExperimentFile(file);		YaleGUI.setExperiment(experiment);		setExperiment(experiment);		editorTabs.setSelectedComponent(editor);	    		editor.setText(Tools.readOutput(new BufferedReader(new FileReader(file))));	    }	} catch (Exception ex) { // io exceptions	    ex.printStackTrace();	    SwingTools.showErrorMessage("While loading '"+file+"'", ex);	    return;	}	SAVE_ACTION.setEnabled(false);	YaleGUI.useExperimentFile();	updateRecentFileList();    }    private void save() {	try {	    File file = Yale.getExperiment().getExperimentFile();	    if (file == null) {		file = SwingTools.chooseFile(this, new File("."), false);		if (file == null) return;		else Yale.getExperiment().setExperimentFile(file);	    } 	    Yale.getExperiment().save();	    	    SAVE_ACTION.setEnabled(false);	    changed = false;	    setTitle();	    YaleGUI.useExperimentFile();	    updateRecentFileList();   	} catch (IOException ex) {  	    SwingTools.showErrorMessage("Cannot save experiment file!", ex);  	}    }    private void exit() {	if (changed) {	    File file = Yale.getExperiment().getExperimentFile();	    if (file == null) {		file = new File("unnamed.xml");	    }	    	    switch (JOptionPane.showConfirmDialog(this,						  "Save changes to '"+file+"'?", 						  "Save changes", 						  JOptionPane.YES_NO_CANCEL_OPTION)) {	    case JOptionPane.YES_OPTION:		save();		if (changed) return;		break;			    case JOptionPane.NO_OPTION:		break;			    case JOptionPane.CANCEL_OPTION:	    default:		return;	    }	} else if (JOptionPane.showConfirmDialog(this, "Really exit?", "Exit Yale", JOptionPane.YES_NO_OPTION)		   != JOptionPane.YES_OPTION) {	    return;	}	dispose();	System.exit(0);    }    /** Updates the list of recently used files. */    public void updateRecentFileList() {	recentFilesMenu.removeAll();	List recentFiles = YaleGUI.getRecentFiles();	Iterator i = recentFiles.iterator();	int j = 1;	while (i.hasNext()) {	    final File recentFile = (File)i.next();	    JMenuItem menuItem = new JMenuItem(j+" "+recentFile.getPath());	    menuItem.setMnemonic('0'+j);	    menuItem.addActionListener(new ActionListener() {		    public void actionPerformed(ActionEvent e) {			open(recentFile);		    }		    		});	    recentFilesMenu.add(menuItem);	    j++;	}    }    public void windowOpened(WindowEvent e) { }    public void windowClosing(WindowEvent e) { exit(); }    public void windowClosed(WindowEvent e) { }    public void windowIconified(WindowEvent e) { }    public void windowDeiconified(WindowEvent e) { }    public void windowActivated(WindowEvent e) { }    public void windowDeactivated(WindowEvent e) { }    /** Handles events of the editorTabs, i.e. updates all editors such that     *  they reflect the changed experiment. */    public void stateChanged(ChangeEvent e) {	ExperimentEditor newEditor = (ExperimentEditor)editorTabs.getSelectedComponent();	if (newEditor.equals(currentExperimentEditor)) {	    return;	}		try {	    currentExperimentEditor.validateExperiment();	    newEditor.experimentChanged(Yale.getExperiment().getRootOperator());	    currentExperimentEditor = newEditor;	} catch (Exception ex) {	    switch (JOptionPane.showConfirmDialog(this, ex.toString()+"\nCancel to ignore changes, Ok to go on editing.", 						  "Error", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE)) {	    case JOptionPane.OK_OPTION:		editorTabs.setSelectedComponent((Component)currentExperimentEditor);		 		break;	    default:	    case JOptionPane.CANCEL_OPTION:		currentExperimentEditor.experimentChanged(Yale.getExperiment().getRootOperator());		currentExperimentEditor = newEditor;		break;			    }	}	enableActions();    }    /** Enables and disables all actions according to the current state (experiment running,     *  operator selected... */    public void enableActions() {	boolean[] currentStates = new boolean[ConditionalAction.NUMBER_OF_CONDITIONS];	Operator op = treePanel.getOperatorTree().getSelectedOperator();	if (op != null) {	    currentStates[ConditionalAction.OPERATOR_SELECTED] = true;	    if (op instanceof OperatorChain) currentStates[ConditionalAction.OPERATOR_CHAIN_SELECTED] = true;	    if (op.getParent() == null) currentStates[ConditionalAction.ROOT_SELECTED] = true;	}	currentStates[ConditionalAction.EXPERIMENT_RUNNING] = (experimentThread != null) && (experimentThread.isAlive());	currentStates[ConditionalAction.CLIPBOARD_FILLED] = treePanel.getOperatorTree().getClipBoard() != null;		ConditionalAction.updateAll(currentStates);	    }}

⌨️ 快捷键说明

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