package tr.gov.ulakbim.jDenetX.gui.clustertab;
import tr.gov.ulakbim.jDenetX.core.AutoClassDiscovery;
import tr.gov.ulakbim.jDenetX.core.AutoExpandVector;
import tr.gov.ulakbim.jDenetX.evaluation.MeasureCollection;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.logging.Logger;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ClusteringEvalPanel.java
*
* Created on 20.03.2010, 11:19:30
*/
/**
* @author admin
*/
public class ClusteringEvalPanel extends javax.swing.JPanel {
Class<?>[] measure_classes = null;
ArrayList<JLabel> labels = null;
ArrayList<JCheckBox> checkboxes = null;
/**
* Creates new form ClusteringEvalPanel
*/
public ClusteringEvalPanel() {
initComponents();
measure_classes = findMeasureClasses();
labels = new ArrayList<JLabel>();
checkboxes = new ArrayList<JCheckBox>();
addComponents();
}
private void addComponents() {
GridBagConstraints gb = new GridBagConstraints();
gb.insets = new java.awt.Insets(4, 7, 4, 7);
int counter = 0;
for (int i = 0; i < measure_classes.length; i++) {
try {
MeasureCollection m = (MeasureCollection) measure_classes[i].newInstance();
for (int j = 0; j < m.getNumMeasures(); j++) {
String t = m.getName(j);
JLabel l = new JLabel(m.getName(j));
l.setPreferredSize(new java.awt.Dimension(100, 14));
//labels[i].setToolTipText("");
gb.gridx = 0;
gb.gridy = counter;
labels.add(l);
contentPanel.add(l, gb);
JCheckBox cb = new JCheckBox();
if (m.isEnabled(j))
cb.setSelected(true);
else
cb.setSelected(false);
gb.gridx = 1;
checkboxes.add(cb);
contentPanel.add(cb, gb);
counter++;
}
} catch (Exception ex) {
Logger.getLogger("Couldn't create Instance for " + measure_classes[i].getName());
ex.printStackTrace();
}
}
JLabel dummy = new JLabel();
gb.gridx = 0;
gb.gridy++;
gb.gridwidth = 3;
gb.weightx = 1;
gb.weighty = 1;
add(dummy, gb);
}
private Class<?>[] findMeasureClasses() {
AutoExpandVector<Class<?>> finalClasses = new AutoExpandVector<Class<?>>();
Class<?>[] classesFound = AutoClassDiscovery.findClassesOfType("moa.evaluation",
MeasureCollection.class);
for (Class<?> foundClass : classesFound) {
finalClasses.add(foundClass);
}
return finalClasses.toArray(new Class<?>[finalClasses.size()]);
}
public MeasureCollection[] getSelectedMeasures() {
ArrayList<MeasureCollection> measuresSelect = new ArrayList<MeasureCollection>();
int counter = 0;
for (int i = 0; i < measure_classes.length; i++) {
try {
MeasureCollection m = (MeasureCollection) measure_classes[i].newInstance();
boolean addMeasure = false;
for (int j = 0; j < m.getNumMeasures(); j++) {
boolean selected = checkboxes.get(counter).isSelected();
m.setEnabled(j, selected);
if (selected) addMeasure = true;
counter++;
}
if (addMeasure)
measuresSelect.add(m);
} catch (Exception ex) {
Logger.getLogger("Couldn't create Instance for " + measure_classes[i].getName());
ex.printStackTrace();
}
}
MeasureCollection[] measures = new MeasureCollection[measuresSelect.size()];
for (int i = 0; i < measures.length; i++) {
measures[i] = measuresSelect.get(i);
}
return measures;
}
/**
* This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
scrollPane = new javax.swing.JScrollPane();
contentPanel = new javax.swing.JPanel();
setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Evaluation Measures", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
setLayout(new java.awt.GridBagLayout());
scrollPane.setBorder(null);
scrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new java.awt.Dimension(100, 225));
contentPanel.setLayout(new java.awt.GridBagLayout());
scrollPane.setViewportView(contentPanel);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(scrollPane, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel contentPanel;
private javax.swing.JScrollPane scrollPane;
// End of variables declaration//GEN-END:variables
}