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

📄 newoperatordialog.java

📁 著名的开源仿真软件yale
💻 JAVA
字号:
 /*  *  YALE - Yet Another Learning Environment  *  Copyright (C) 2002  *      Simon Fischer, Ralf Klinkenberg, Ingo Mierswa,   *          Katharina Morik, Oliver Ritthoff  *      Artificial Intelligence Unit  *      Computer Science Department  *      University of Dortmund  *      44221 Dortmund,  Germany  *  email: yale@ls8.cs.uni-dortmund.de  *  web:   http://yale.cs.uni-dortmund.de/  *  *  This program is free software; you can redistribute it and/or  *  modify it under the terms of the GNU General Public License as   *  published by the Free Software Foundation; either version 2 of the  *  License, or (at your option) any later version.   *  *  This program is distributed in the hope that it will be useful, but  *  WITHOUT ANY WARRANTY; without even the implied warranty of  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  *  General Public License for more details.  *  *  You should have received a copy of the GNU General Public License  *  along with this program; if not, write to the Free Software  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  *  USA.  */ package edu.udo.cs.yale.gui;import edu.udo.cs.yale.operator.Operator;import edu.udo.cs.yale.Yale;import edu.udo.cs.yale.tools.param.OperatorParams;import edu.udo.cs.yale.tools.param.GroupTree;import edu.udo.cs.yale.tools.LogService;import javax.swing.JDialog;import javax.swing.JComboBox;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JLabel;import javax.swing.JTextArea;import javax.swing.JScrollPane;import javax.swing.text.JTextComponent;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import javax.swing.BorderFactory;import java.awt.Frame;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.event.*;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;import java.util.List;import java.util.LinkedList;import java.util.Collections;/** Dialog for creating a new operator. */public class NewOperatorDialog extends JDialog implements ItemListener {    private JTextField nameField = new JTextField("NewOperator");    private JComboBox classCombo;    private JComboBox groupCombo;    private boolean ok = false;    private JTextArea descriptionText = new JTextArea("",3,20);    public NewOperatorDialog(Frame owner) {	super(owner, "New operator", true);	getContentPane().setLayout(new BorderLayout());	JPanel rootPanel = new JPanel(new BorderLayout());	rootPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));	getContentPane().add(rootPanel, BorderLayout.CENTER);	JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));	JButton okButton = new JButton("Ok");	okButton.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) { ok(); }	    });	buttonPanel.add(okButton);	JButton cancelButton = new JButton("Cancel");	cancelButton.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) { cancel(); }	    });	buttonPanel.add(cancelButton);	rootPanel.add(buttonPanel, BorderLayout.SOUTH);	groupCombo = new JComboBox();	groupCombo.addItemListener(this);	groupCombo.setEditable(false);	groupCombo.addItem("All");	Iterator i = OperatorParams.getGroups().getSubGroups().iterator();	while (i.hasNext()) {	    groupCombo.addItem(((GroupTree)i.next()).getName());	    	}	groupCombo.setSelectedIndex(0);	classCombo = new JComboBox();	classCombo.addItemListener(this);	classCombo.setEditable(true);	setClasses();	GridBagLayout mainLayout = new GridBagLayout();	JPanel mainPanel = new JPanel(mainLayout);	GridBagConstraints c = new GridBagConstraints();	c.fill = GridBagConstraints.BOTH;	JLabel label = new JLabel("Name");	c.gridwidth = GridBagConstraints.RELATIVE;	c.ipadx = 10;	mainLayout.setConstraints(label, c);	mainPanel.add(label);	c.gridwidth = GridBagConstraints.REMAINDER;	mainLayout.setConstraints(nameField, c);	mainPanel.add(nameField);	 	label = new JLabel("Group");	c.ipadx = 10;	c.gridwidth = GridBagConstraints.RELATIVE;	mainLayout.setConstraints(label, c);	mainPanel.add(label);	c.gridwidth = GridBagConstraints.REMAINDER;	mainLayout.setConstraints(groupCombo, c);	mainPanel.add(groupCombo);	label = new JLabel("Class");	c.ipadx = 10;	c.gridwidth = GridBagConstraints.RELATIVE;	mainLayout.setConstraints(label, c);	mainPanel.add(label);	c.gridwidth = GridBagConstraints.REMAINDER;	mainLayout.setConstraints(classCombo, c);	mainPanel.add(classCombo);	descriptionText.setEditable(false);	descriptionText.setLineWrap(true);	descriptionText.setWrapStyleWord(true);	descriptionText.setBackground(this.getBackground());	c.gridwidth = GridBagConstraints.REMAINDER;	JScrollPane textScrollPane = new JScrollPane(descriptionText);	textScrollPane.setBorder(BorderFactory.createEmptyBorder(10,0,10,0));	mainLayout.setConstraints(textScrollPane, c);	mainPanel.add(textScrollPane);	rootPanel.add(mainPanel, BorderLayout.NORTH);	 	pack();	setLocationRelativeTo(owner);    }    private void ok() { 	ok = true; 	dispose();     }    private void cancel() { 	ok = false; 	dispose();     }    private Operator getOperatorInstance() {	return getOperatorInstance((String)classCombo.getSelectedItem(), nameField.getText());    }    public static Operator getOperatorInstance(String classname, String name) {	try {	    Class operatorClass = OperatorParams.getOperatorClass(classname);	    Operator operator = (Operator)operatorClass.newInstance();	    operator.register(Yale.getExperiment(), name);	    return operator;	} catch (Exception e) {	    SwingTools.showErrorMessage("Cannot instantiate '"+name+"'.", e);	    return null;	}	    }    public static Operator newOperator(MainFrame mainFrame) {	NewOperatorDialog dialog = new NewOperatorDialog(mainFrame);	dialog.show();	if (dialog.ok) return dialog.getOperatorInstance();	else return null;    }    private void setClasses() {	if (classCombo == null) return;		String group = (String)groupCombo.getSelectedItem();	Set sortedNames = null;	if (group.equals("All")) {	    sortedNames = new TreeSet(OperatorParams.getOperatorNames());	} else {	    GroupTree parentGroup = OperatorParams.getGroups();	    sortedNames = parentGroup.getSubGroup(group).getAllOperators();	}	classCombo.removeAllItems();	Iterator i = sortedNames.iterator();	while (i.hasNext()) {	    String current = (String)i.next();	    classCombo.addItem(current);	}    }    private void selectItem() {	String typed = ((JTextField)classCombo.getEditor().getEditorComponent()).getText();	for (int i = 0; i < classCombo.getItemCount(); i++) {	    if (((String)classCombo.getItemAt(i)).startsWith(typed)) {		classCombo.setSelectedIndex(i);		break;	    }	}    }    public void itemStateChanged(ItemEvent e) {	if (e.getSource().equals(classCombo)) {	    String name = (String)classCombo.getSelectedItem();	    descriptionText.setText(OperatorParams.getOperatorDescription(name).getDescription());	} else if (e.getSource().equals(groupCombo)) 	    setClasses();    }    }

⌨️ 快捷键说明

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