📄 valuecelleditor.java
字号:
/* * YALE - Yet Another Learning Environment * Copyright (C) 2002, 2003 * 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.operator.Value;import edu.udo.cs.yale.operator.parameter.ParameterType;import edu.udo.cs.yale.operator.parameter.ParameterTypeValue;import edu.udo.cs.yale.Experiment;import javax.swing.JTable;import javax.swing.JPanel;import javax.swing.JComboBox;import javax.swing.AbstractCellEditor;import java.awt.Component;import java.awt.GridLayout;import java.awt.event.ItemListener;import java.awt.event.ItemEvent;import java.util.Collections;import java.util.List;import java.util.Iterator;import java.util.Vector;/** Parameter editor for {@link ParameterTypeValue}. * @version $Id: ValueCellEditor.java,v 2.2 2003/07/02 13:57:10 fischer Exp $ */public class ValueCellEditor extends AbstractCellEditor implements PropertyCellEditor { private JPanel panel = new JPanel(); private JComboBox operatorCombo; private JComboBox typeCombo = new JComboBox(new String[] {"value", "parameter"}); private JComboBox valueCombo = new JComboBox(); private Experiment experiment; private ParameterTypeValue type; public ValueCellEditor(ParameterTypeValue type, Experiment experiment) { this.type = type; this.experiment = experiment; operatorCombo = createOperatorCombo(); typeCombo.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { fillValueCombo(); fireEditingStopped(); } }); valueCombo.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { fireEditingStopped(); } }); fillValueCombo(); panel.setLayout(new GridLayout(1,3)); panel.add(operatorCombo); panel.add(typeCombo); panel.add(valueCombo); } private JComboBox createOperatorCombo() { Vector allOps = new Vector(experiment.getAllOperatorNames()); Collections.sort(allOps); JComboBox combo = new JComboBox(allOps); combo.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { fillValueCombo(); fireEditingStopped(); } }); return combo; } private void fillValueCombo() { valueCombo.removeAllItems(); Operator operator = experiment.getOperator((String)operatorCombo.getSelectedItem()); switch (typeCombo.getSelectedIndex()) { case 0: Iterator i = operator.getValues().iterator(); while (i.hasNext()) { valueCombo.addItem(((Value)i.next()).getKey()); } if (valueCombo.getItemCount() == 0) valueCombo.addItem("no values"); break; case 1: i = operator.getParameterTypes().iterator(); while (i.hasNext()) { valueCombo.addItem(((ParameterType)i.next()).getKey()); } if (valueCombo.getItemCount() == 0) valueCombo.addItem("no params"); break; } valueCombo.setSelectedIndex(0); } public Object getCellEditorValue() { return "operator." + operatorCombo.getSelectedItem() + "." + ((typeCombo.getSelectedIndex() == 0) ? "value":"parameter") + "." + valueCombo.getSelectedItem(); } public void setValue(String valueName) { if (valueName != null) { String[] components = valueName.split("\\."); if (components.length == 4) { String operator = components[1]; int type = components[2].equals("parameter") ? 1 : 0; String name = components[3]; operatorCombo.setSelectedItem(operator); typeCombo.setSelectedIndex(type); valueCombo.setSelectedItem(name); } else { operatorCombo.setSelectedIndex(0); typeCombo.setSelectedIndex(0); valueCombo.setSelectedIndex(0); } } else { operatorCombo.setSelectedIndex(0); typeCombo.setSelectedIndex(0); valueCombo.setSelectedIndex(0); } } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) { setValue((String)value); return panel; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return getTableCellEditorComponent(table, value, isSelected, row, column); } public boolean useEditorAsRenderer() { return true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -