📄 selectoperatorproperty.java
字号:
*/
if (m_MetaData == null || m_Node == null)
return;
int m_Column = m_MetaData.getAttributesNumber();
if (m_Column == 0)
return;
MiningAttribute[] miningAttributes = m_MetaData.getAttributesArray();
MiningAttribute attribute = null;
String name = null;
int index = 0;
int attrIndex = 0;
MiningAttribute mAtt = null;
value = (String) m_Node.getParameterValue("target");
m_AttributeJCB.removeAllItems();
m_AttributeJCB.addItem(DEFAULT);
for (int i = 0; i < m_Column; i++) {
attribute = miningAttributes[i];
name = attribute.getName();
m_AttributeJCB.addItem(name);
index++;
if (value != null && value.equalsIgnoreCase(name)) {
attrIndex = index;
mAtt = attribute;
}
}
m_AttributeJCB.setSelectedIndex(attrIndex);
//if (!m_RadioByValue.isSelected())
// return;
if (mAtt != null) {
if (mAtt instanceof NumericAttribute) {
setEnabledNumericAttribute(true);
// << Added by Joyce 08/03/2005 reset information
//set value get form the node
value = (String) m_Node.getParameterValue("mode");
if (value != null) {
mode = Integer.parseInt(value);
}
if (mode == SelectOperator.BY_RANGE) {
setEnabledByRange(true);
m_RadioByRange.setSelected(true);
} else if (mode == SelectOperator.BY_VALUE) {
setEnabledByRange(false);
m_RadioByValue.setSelected(true);
}
//>>
return;
} else {
setEnabledNumericAttribute(false);
m_SmallerThanTF.setEnabled(false);
SelectTableModel model = (SelectTableModel) m_TableModel
.get(mAtt.getName());
Boolean[] selection = null;
value = (String) m_Node.getParameterValue("selection");
if (value != null) {
selection = parseSelected(value);
if (selection.length == ((CategoricalAttribute) mAtt)
.getCategoriesNumber()) {
for (int i = 0; i < selection.length; i++) {
model.setValueAt(selection[i], i);
}
m_Table.setModel(model);
//<< Added by Joyce 08/03/2005 reset information
//set value get form the node
// value = m_Node.getParameterValue("mode");
// if (value != null) {
// mode = Integer.parseInt(value);
// }
// if (mode == SelectOperator.BY_RANGE) {
// setEnabledByRange(true);
// m_RadioByRange.setSelected(true);
//
// } else if (mode == SelectOperator.BY_VALUE) {
//
// setEnabledByRange(false);
// m_RadioByValue.setSelected(true);
// }
//>>
return;
}
}
}
}
m_AttributeJCB.setSelectedIndex(0);
// m_RadioRangeKeep.setSelected(true);
// setEnabledByRange(true);
// m_FromTF.setText("");
// m_ToTF.setText("");
// m_RadioRangeKeep.setSelected(true);
// m_SmallerThanTF.setText("");
// m_MissingValCBox.setSelected(false);
// m_RadioValueKeep.setSelected(true);
m_Table.setModel(new SelectTableModel());
// setEnabledNumericAttribute(true);
}
private boolean setContent() {
if (!validateProperty())
return false;
//<< added by Joyce 2005/03/17 to clear result
// Operator op = m_ParentPanel.getOperator(m_NodeID);
//((SelectOperator) op).clearResult();
clearOperatorTempResult();
//>>
m_Node.getParameters().remove("mode");
m_Node.getParameters().remove("from");
m_Node.getParameters().remove("to");
m_Node.getParameters().remove("keep");
// m_Node.getParameters().remove("valKeep");
m_Node.getParameters().remove("target");
m_Node.getParameters().remove("targetType");
m_Node.getParameters().remove("selection");
m_Node.getParameters().remove("missingValue");
m_Node.getParameters().remove("smallerThan");
if (m_RadioByRange.isSelected())
m_Node.setParameterValue("mode", Integer
.toString(SelectOperator.BY_RANGE));
else
m_Node.setParameterValue("mode", Integer
.toString(SelectOperator.BY_VALUE));
m_Node.setParameterValue("from", m_FromTF.getText().trim());
m_Node.setParameterValue("to", m_ToTF.getText().trim());
if (m_RadioKeep.isSelected())
m_Node.setParameterValue("keep", "true");
else
m_Node.setParameterValue("keep", "false");
String attrName = (String) m_AttributeJCB.getSelectedItem();
m_Node.setParameterValue("target", attrName);
MiningAttribute mAtt = m_MetaData.getMiningAttribute(attrName);
if (mAtt instanceof CategoricalAttribute)
m_Node.setParameterValue("targetType", CATEG);
else
m_Node.setParameterValue("targetType", NUM);
SelectTableModel model = (SelectTableModel) m_Table.getModel();
Boolean[] selection = new Boolean[model.getRowCount()];
for (int i = 0; i < selection.length; i++) {
selection[i] = model.getValueAt(i);
}
m_Node.setParameterValue("selection", parseSelected(selection));
m_Node.setParameterValue("smallerThan", m_SmallerThanTF.getText()
.trim());
if (m_MissingValCBox.isSelected())
m_Node.setParameterValue("missingValue", "true");
else
m_Node.setParameterValue("missingValue", "false");
// if (m_RadioValueKeep.isSelected())
// m_Node.setParameterValue("valKeep", "true");
// else
// m_Node.setParameterValue("valKeep", "false");
setPropertiesModified();
return true;
}
class PopupListener extends MouseAdapter {
JPopupMenu menu;
PopupListener(JPopupMenu popup) {
menu = popup;
}
public void mousePressed(MouseEvent me) {
showMenu(me);
}
public void mouseReleased(MouseEvent me) {
showMenu(me);
}
private void showMenu(MouseEvent me) {
if (me.isPopupTrigger() && m_RadioByValue.isSelected()) {
menu.show(me.getComponent(), me.getX(), me.getY());
}
}
}
private void initMappingTable() {
if (m_MetaData == null || m_Node == null)
return;
int numAttr = m_MetaData.getAttributesNumber();
if (numAttr == 0)
return;
MiningAttribute[] miningAttributes = m_MetaData.getAttributesArray();
m_TableModel = new Hashtable<Object, SelectTableModel>();
for (int i = 0; i < numAttr; i++) {
if (miningAttributes[i] instanceof CategoricalAttribute) {
CategoricalAttribute attr = (CategoricalAttribute) miningAttributes[i];
String attrName = miningAttributes[i].getName();
int numCat = attr.getCategoriesNumber();
Object[][] content = new Object[numCat][m_MetaDataTableHeader.length];
Object[] row = null;
ArrayList catValues = attr.getValues();
for (int j = 0; j < catValues.size(); j++) {
row = new Object[2];
row[0] = ((Category) catValues.get(j)).getValue()
.toString();
row[1] = new Boolean(false);
content[j] = row;
}
SelectTableModel model = new SelectTableModel(content,
m_MetaDataTableHeader, i);
m_TableModel.put(attrName, model);
}
}
}
private void setEnabledByRange(boolean a_Flag) {
m_FromTF.setEnabled(a_Flag);
m_ToTF.setEnabled(a_Flag);
// m_RadioKeep.setEnabled(a_Flag);
// m_RadioRemove.setEnabled(a_Flag);
m_AttributeJCB.setEnabled(!a_Flag);
m_SmallerThanTF.setEnabled(!a_Flag);
m_MissingValCBox.setEnabled(!a_Flag);
setEnabledTable(!a_Flag);
// m_RadioValueKeep.setEnabled(!a_Flag);
// m_RadioValueRemove.setEnabled(!a_Flag);
}
private void setEnabledTable(boolean a_Flag) {
if (!a_Flag) {
m_Table.setEnabled(false);
m_Table.setBackground(DISABLED_COLOR);
m_Table.setForeground(Color.GRAY);
} else {
m_Table.setEnabled(true);
m_Table.setBackground(ENABLED_COLOR);
m_Table.setForeground(Color.BLACK);
}
}
private void setEnabledNumericAttribute(boolean a_Flag) {
setEnabledTable(!a_Flag);
m_SmallerThanTF.setEnabled(a_Flag);
}
private String parseSelected(Boolean[] a_Selection) {
String parsed = "";
for (int i = 0; i < a_Selection.length; i++) {
if (a_Selection[i].booleanValue()) {
parsed += "1";
} else {
parsed += "0";
}
}
return parsed;
}
private Boolean[] parseSelected(String a_Selection) {
Boolean[] selection = new Boolean[a_Selection.length()];
for (int i = 0; i < a_Selection.length(); i++) {
if (a_Selection.charAt(i) == '0') {
selection[i] = Boolean.FALSE;
} else {
selection[i] = Boolean.TRUE;
}
}
return selection;
}
}
/**
* TableModel is a special kind of TableModel for showing Operator property.
*/
class SelectTableModel extends DefaultTableModel implements TableModelListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Class[] types;
boolean[] canEdit;
Object[][] m_TableContent;
int m_Target = -1;
boolean m_Modified = false;
public SelectTableModel() {
super();
}
/**
* Constructs a TableMode.
*
* @param a_TableContent
* an Object array storing table content.
* @param a_TableHeader
* an Object array storing header names.
*/
public SelectTableModel(Object[][] a_TableContent, Object[] a_TableHeader,
int a_Target) {
super(a_TableContent, a_TableHeader);
m_Target = a_Target;
types = new Class[a_TableHeader.length];
canEdit = new boolean[a_TableHeader.length];
types[0] = String.class;
types[1] = Boolean.class;
canEdit[0] = false;
canEdit[1] = true;
m_TableContent = a_TableContent;
addTableModelListener(this);
}
/**
* Gets content of a row.
*
* @param rowIndex
* index of the row.
* @return String[] a String array of size 2 with the first element stores
* text of (rowIndex, 0) cell the table content; the second element
* stores text of (rowIndex, 1) cell in the table content.
*/
public Boolean getValueAt(int rowIndex) {
return (Boolean) super.getValueAt(rowIndex, 1);
}
public void setValueAt(Boolean value, int rowIndex) {
super.setValueAt(value, rowIndex, 1);
m_Modified = true;
}
public void setValue(Boolean value) {
for (int i = 0; i < getRowCount(); i++) {
setValueAt(value, i, 1);
}
}
/**
* @see javax.swing.event.TableModelListener#tableChanged(TableModelEvent)
*/
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
SelectTableModel model = (SelectTableModel) e.getSource();
Boolean data = model.getValueAt(row);
m_TableContent[row][1] = data;
}
/**
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
@SuppressWarnings("unchecked")
public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}
/**
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}
public boolean isModified() {
return m_Modified;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -