📄 operatorproperty.java
字号:
// "parameter_3", "value_3" }, {
// "parameter_4", "value_4" }, {
// "parameter_5", "value_5" }, {
// "parameter_6", "value_6" }, {
// "parameter_7", "value_7" }, {
// "parameter_8", "value_8" }, {
// "parameter_9", "value_9" }, {
// "parameter_10", "value_10" }
// };
// //if (m_TableContent==null)
// // m_TableContent = tableContent;
//
// if (m_TableContent == null
// && node.getOperatorNodeType() == OperatorNode.SAS_TREE) {
// Object[][] content =
// { { "Splitting criterion", "Chi-squre test" }, {
// "Significance level", "0.200" }, {
// "Minimum number of observations in a leaf", "1" }, {
// "Observations required for a split search", "16" }, {
// "Maximum number of branches from a node", "2" }, {
// "Maximum depth of tree", "6" }, {
// "Splitting rules saved in each node", "5" }, {
// "Surrogate rules saved in each node", "0" }, {
// "Treat missing as an acceptable value", "No" }, {
// "Model assessment measure", "Automatic" }, {
// "Sub-tree", "Best assessment value" }, {
// "Observations sufficient for split search", "1600" }, {
// "Maximum tries in an exhaustive split search", "5000" }, };
// m_TableContent = content;
// }
// 01/03/2005 Li : Read parameter from xml file>>
}
/**
* Sets the property content of the Operator.
* @throws SysException
*/
private void setContent() throws SysException {
IOperatorNode node = m_CaseHandler.getOperatorNode(m_CaseID, m_NodeID);
//(OperatorNode) selectedCase.getNode( NodeFactory.OPERATOR, m_NodeID);
if (node == null) {
//return;
}
TableModel model = (TableModel) jTable1.getModel();
for (int i = 0; i < model.getRowCount(); i++) {
node.setParameterValue(model.getValueAt(i)[0],
model.getValueAt(i)[1]);
System.out.println(model.getValueAt(i)[0] + " "
+ model.getValueAt(i)[1]);
}
try {
m_CaseHandler.updateOperatorNode(node);
} catch (BaseException be) {
System.out.println(be.getMessage());
}
m_ParameterChanged = true;
setPropertiesModified();
}
/*
* Trigger parent nodes execution. If the operator property needs the
* parents nodes to be executed in order to get the parameters, call this at
* before initContent()
*/
protected void triggerParentNodesExecution() throws SysException {
if (m_ParentOperators == null || m_ParentOperators.size() == 0) {
// Do Nothing if no parent node
return;
}
// Execute parent nodes one by one
int size = m_ParentOperators.size();
if(size==0) {
return;
}
Vector<String> nodeIDs = new Vector<String>(size);
for (int i = 0; i < size; i++) {
Operator parentOp = (Operator)m_ParentOperators.elementAt(i);
// Execute if the parent node has no result
if (!parentOp.hasResult()) {
nodeIDs.add(parentOp.getNodeID());
}
}
try {
m_CaseHandler.executeNode(m_CaseID,
nodeIDs);
} catch (AppException e) {
throw new SysException(e);
}
}
/**
* Creates the OperatorProperty internal window.
* @throws SysException
* @throws MiningException
*/
protected void createOperatorProperty() throws SysException
{
jScrollPane1 = new JScrollPane();
jTable1 = new JTable();
this.setIconifiable(false);
this
.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
m_ButtonSave.setText(Resource.srcStr("m_ButtonApply"));
m_ButtonCancel.setSelected(false);
m_ButtonCancel.setText(Resource.srcStr("m_ButtonCancel"));
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
this.getContentPane().add(jPanel1, BorderLayout.SOUTH);
jPanel1.add(m_ButtonSave, null);
jPanel1.add(m_ButtonReset, null);
jPanel1.add(m_ButtonCancel, null);
jScrollPane1.getViewport().setBackground(Color.white);
jScrollPane1.getViewport().add(jTable1, null);
m_ButtonReset.addActionListener(this);
m_ButtonSave.addActionListener(this);
m_ButtonCancel.addActionListener(this);
JTableHeader tableHeader = jTable1.getTableHeader();
tableHeader.setReorderingAllowed(false);
getContent();
jTable1.setModel(new TableModel(m_TableContent, m_TableHeader));
// <<09/03/2005 Mark Li: Modify panel size
TableColumn column = jTable1.getColumnModel().getColumn(0);
column.setMinWidth(ColumnSize);
column.setPreferredWidth(ColumnSize);
column.setCellRenderer(new TextAreaCellRenderer());
// this.setSize(350, 230);
this.setSize(470, 280);
TableColumn column1 = jTable1.getColumnModel().getColumn(1);
column1.setCellRenderer(new TextAreaCellRenderer());
// 09/03/2005 Mark Li: Modify panel size>>
this.addInternalFrameListener(this);
}
/* (non-Javadoc)
* @see eti.bi.alphaminer.core.observer.ObserveSubject#registerInterest(eti.bi.alphaminer.core.observer.Observer)
*/
@SuppressWarnings("unchecked")
public void registerInterest(Observer a_Observer) {
m_Observers.add(a_Observer);
}
protected void setPropertiesModified()
{
sendNotifyAll(ObserveMessage.MSG_VALUE_MODIFIED);
}
protected void clearOperatorTempResult()
{
m_Operator.clearResult();
}
/**
* Notifies the current Observer that a change has been taken place.
* @param a_Message the message to be received.
*/
public void sendNotify(String a_Message) {
if(a_Message.equals(Resource.CHANGE_LOCALE)) {
resetLocale();
}
}
/**
* Notifies the current Observer that a change has been taken place.
* @param a_Message the message to be received.
*/
public void sendNotify(int a_Message) {}
/**
* Notifies the current Observer that a change has been taken place.
* @param a_Message the message to be received.
*/
public void sendNotify(int a_Message, Object a_Object) {}
// <<22/07/2005 Kenneth Lai: Added for JHelp
/**
* Notifies the current Observer that a change in help state has been taken place.
* @param a_HelpState the help state to be received.
*/
public void sendNotify(boolean a_HelpState) {}
// 22/07/2005 Kenneth Lai: Added for JHelp>>
// 15/08/2006 Xiaojun Chen:Add for multi-language
/**
* Handler the change locale event
* */
public void resetLocale() {
m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
m_ButtonSave.setText(Resource.srcStr("m_ButtonApply"));
m_ButtonCancel.setText(Resource.srcStr("m_ButtonCancel"));
}
}
/**
* TableModel is a special kind of TableModel for showing Operator property.
*/
class TableModel extends DefaultTableModel implements TableModelListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Class[] types = new Class[] { String.class, String.class };
boolean[] canEdit = new boolean[] { false, true };
Object[][] m_TableContent;
/**
* Constructs a TableMode.
*
* @param a_TableContent
* an Object array storing table content.
* @param a_TableHeader
* an Object array storing header names.
*/
public TableModel(Object[][] a_TableContent, Object[] a_TableHeader) {
super(a_TableContent, a_TableHeader);
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 String[] getValueAt(int rowIndex) {
String[] value = new String[2];
value[0] = (String) super.getValueAt(rowIndex, 0);
value[1] = (String) super.getValueAt(rowIndex, 1);
return value;
}
/**
* @see javax.swing.event.TableModelListener#tableChanged(TableModelEvent)
*/
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
TableModel model = (TableModel) e.getSource();
String[] data = model.getValueAt(row);
m_TableContent[row][1] = data[1];
}
/**
* @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];
}
}
//<<09/03/2005 Mark Li Wrap text in Table
class TextAreaCellRenderer extends JTextArea implements TableCellRenderer {
/**
*
*/
private static final long serialVersionUID = 1L;
public TextAreaCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable jTable, Object obj,
boolean isSelected, boolean hasFocus, int row, int column) {
// set color & border here
setFont(new java.awt.Font("Dialog", 5, 12));
setText((obj == null) ? "" : obj.toString());
setSize(jTable.getColumnModel().getColumn(column).getWidth(),
getPreferredSize().height);
if (jTable.getRowHeight(row) != getPreferredSize().height) {
jTable.setRowHeight(row, getPreferredSize().height);
}
return this;
}
}
//09/03/2005 Mark Li Wrap text in Table>>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -