mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/fom/CastFOMContentComponentB.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: CastFOMContentComponentB.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.6 $
2 26 Feb 07 jari 8  * $Date: 2006/03/24 15:50:09 $
2 26 Feb 07 jari 9  * $Author: eleanorahowe $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.fom;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 15 import java.awt.GridBagLayout;
2 26 Feb 07 jari 16 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 17 import java.awt.event.ActionListener;
2 26 Feb 07 jari 18 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 19 import java.util.Arrays;
2 26 Feb 07 jari 20 import java.util.HashSet;
2 26 Feb 07 jari 21 import java.util.Iterator;
2 26 Feb 07 jari 22 import java.util.Vector;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 import javax.swing.JButton;
2 26 Feb 07 jari 25 import javax.swing.JComponent;
2 26 Feb 07 jari 26 import javax.swing.JFrame;
2 26 Feb 07 jari 27 import javax.swing.JList;
2 26 Feb 07 jari 28 import javax.swing.JPanel;
2 26 Feb 07 jari 29 import javax.swing.JScrollPane;
2 26 Feb 07 jari 30 import javax.swing.JTextArea;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 34
2 26 Feb 07 jari 35 public class CastFOMContentComponentB extends JPanel implements java.io.Serializable {
2 26 Feb 07 jari 36     public static final long serialVersionUID = 202003030001L;    
2 26 Feb 07 jari 37     
2 26 Feb 07 jari 38     //private FOMGraph fomGraphA;
2 26 Feb 07 jari 39     private FOMGraph fomGraphB;
2 26 Feb 07 jari 40     private int[] numOfCastClusters;
2 26 Feb 07 jari 41     
2 26 Feb 07 jari 42     private float[] fom_values;
2 26 Feb 07 jari 43     float interval;
2 26 Feb 07 jari 44     float[] sortedFomValues;
2 26 Feb 07 jari 45     int[] sortedNumCastClusters;
2 26 Feb 07 jari 46     JPanel listPanel;
2 26 Feb 07 jari 47
2 26 Feb 07 jari 48     private GridBagConstraints gbc;
2 26 Feb 07 jari 49     
2 26 Feb 07 jari 50     public CastFOMContentComponentB(float[] fom_values, float interval, int[] numOfCastClusters) { // take average by default
2 26 Feb 07 jari 51   setLayout(new GridBagLayout());
2 26 Feb 07 jari 52   //System.out.println("Entered CastFOMComponentB");
2 26 Feb 07 jari 53   this.fom_values = fom_values;
2 26 Feb 07 jari 54   this.interval = interval;
2 26 Feb 07 jari 55   this.numOfCastClusters = numOfCastClusters;
2 26 Feb 07 jari 56   this.sortedFomValues = createSortedFomValues(fom_values, numOfCastClusters);
2 26 Feb 07 jari 57   this.sortedNumCastClusters = createSortedClusterArray(numOfCastClusters);
2 26 Feb 07 jari 58   this.fomGraphB = new FOMGraph(sortedFomValues, null, "FOM value vs. # of Clusters", "# of Clusters", "Adjusted FOM", false);
2 26 Feb 07 jari 59   this.fomGraphB.setItems(createXItems(sortedFomValues.length), createYItems(sortedFomValues));
2 26 Feb 07 jari 60   this.fomGraphB.setMaxYValue((float)Math.ceil(getMaxValue(sortedFomValues)));
2 26 Feb 07 jari 61   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 62   gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 63   gbc.gridx = 0;
2 26 Feb 07 jari 64   gbc.gridy = 0;
2 26 Feb 07 jari 65   gbc.weightx = 0.9;
2 26 Feb 07 jari 66   gbc.weighty = 1.0;
2 26 Feb 07 jari 67   add(this.fomGraphB, gbc);
2 26 Feb 07 jari 68   gbc.gridx = 1;
2 26 Feb 07 jari 69   gbc.weightx = 0.1;
2 26 Feb 07 jari 70   add(createValuesList(sortedFomValues, numOfCastClusters), gbc);
2 26 Feb 07 jari 71     }
2 26 Feb 07 jari 72     
2 26 Feb 07 jari 73     public static String[] getPersistenceDelegateArgs(){
2 26 Feb 07 jari 74       return new String[] {"fom_values", "interval", "numOfCastClusters"};
2 26 Feb 07 jari 75     }
2 26 Feb 07 jari 76     public CastFOMContentComponentB(){
2 26 Feb 07 jari 77       setLayout(new GridBagLayout());
2 26 Feb 07 jari 78     gbc = new GridBagConstraints();
2 26 Feb 07 jari 79     gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 80     gbc.gridy = 0;
2 26 Feb 07 jari 81     gbc.weighty = 1.0;
2 26 Feb 07 jari 82     }
2 26 Feb 07 jari 83
2 26 Feb 07 jari 84   /**
2 26 Feb 07 jari 85    * @return Returns the fomGraphA.
2 26 Feb 07 jari 86    */
2 26 Feb 07 jari 87   public FOMGraph getFomGraphB() {
2 26 Feb 07 jari 88     return fomGraphB;
2 26 Feb 07 jari 89   }
2 26 Feb 07 jari 90   /**
2 26 Feb 07 jari 91    * @param fomGraphA The fomGraphA to set.
2 26 Feb 07 jari 92    */
2 26 Feb 07 jari 93   public void setFomGraphB(FOMGraph fomGraphB) {
2 26 Feb 07 jari 94     gbc.gridx = 0;
2 26 Feb 07 jari 95     gbc.weightx = 0.9;
2 26 Feb 07 jari 96     this.fomGraphB = fomGraphB;
2 26 Feb 07 jari 97   }
2 26 Feb 07 jari 98     /*
2 26 Feb 07 jari 99     public BufferedImage getImageA() {
2 26 Feb 07 jari 100   return this.fomGraphA.getImage();
2 26 Feb 07 jari 101     }
2 26 Feb 07 jari 102      */
2 26 Feb 07 jari 103     public BufferedImage getImageB() {
2 26 Feb 07 jari 104   return this.fomGraphB.getImage();
2 26 Feb 07 jari 105     }
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     private JComponent createValuesList(float[] fom_values, int[] numOfCastClusters) {
2 26 Feb 07 jari 108   String[] items = new String[fom_values.length];
2 26 Feb 07 jari 109   int[] sortedNumCastClusters = createSortedClusterArray(numOfCastClusters);
2 26 Feb 07 jari 110   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 111       items[i] = String.valueOf(sortedNumCastClusters[i]) + "---->" + String.valueOf(Math.round(fom_values[i]*1000)/1000f);
2 26 Feb 07 jari 112   }
2 26 Feb 07 jari 113   JPanel listPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 114   JScrollPane scroll = new JScrollPane(new JList(items));
2 26 Feb 07 jari 115   
2 26 Feb 07 jari 116   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 117   gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 118   gbc.gridx = 0;
2 26 Feb 07 jari 119   gbc.gridy = 0;
2 26 Feb 07 jari 120   gbc.weightx = 1.0;
2 26 Feb 07 jari 121   gbc.weighty = 1.0;
2 26 Feb 07 jari 122   listPanel.add(scroll, gbc);
2 26 Feb 07 jari 123   gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 124   gbc.gridy = 1;
2 26 Feb 07 jari 125   gbc.weighty = 0.0;
2 26 Feb 07 jari 126   JButton button = new JButton("Details");
2 26 Feb 07 jari 127   button.addActionListener(new ActionListener() {
2 26 Feb 07 jari 128       public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 129     onDetails();
2 26 Feb 07 jari 130       }
2 26 Feb 07 jari 131   });
2 26 Feb 07 jari 132   listPanel.add(button, gbc);
2 26 Feb 07 jari 133     this.listPanel = listPanel;
2 26 Feb 07 jari 134   return listPanel;
2 26 Feb 07 jari 135     }
2 26 Feb 07 jari 136     
2 26 Feb 07 jari 137     private void onDetails() {
2 26 Feb 07 jari 138   JFrame f = new JFrame("Details");
2 26 Feb 07 jari 139   JTextArea t = new JTextArea();
2 26 Feb 07 jari 140   t.setEditable(false);
2 26 Feb 07 jari 141   JScrollPane sp = new JScrollPane(t);
2 26 Feb 07 jari 142   StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 143   for (int i=0; i<sortedFomValues.length; i++) {
2 26 Feb 07 jari 144       sb.append(String.valueOf(sortedNumCastClusters[i]) + "\t" + String.valueOf(Math.round(sortedFomValues[i]*1000)/1000f)+"\n");
2 26 Feb 07 jari 145   }
2 26 Feb 07 jari 146   t.setText(sb.toString());
2 26 Feb 07 jari 147   t.setCaretPosition(0);
2 26 Feb 07 jari 148   f.getContentPane().add(sp);
2 26 Feb 07 jari 149   f.setSize(200, 200);
2 26 Feb 07 jari 150   java.awt.Dimension screenSize = f.getToolkit().getScreenSize();
2 26 Feb 07 jari 151   f.setLocation(screenSize.width/2 - f.getSize().width/2, screenSize.height/2 - f.getSize().height/2);
2 26 Feb 07 jari 152   f.setVisible(true);
2 26 Feb 07 jari 153     }
2 26 Feb 07 jari 154     
2 26 Feb 07 jari 155     /*
2 26 Feb 07 jari 156     private JComponent createValuesList(float[] fom_values) {
2 26 Feb 07 jari 157   String[] items = new String[fom_values.length];
2 26 Feb 07 jari 158   float threshold = interval;
2 26 Feb 07 jari 159   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 160     String s = "0.";
2 26 Feb 07 jari 161     int d = (int)Math.floor(threshold*100);
2 26 Feb 07 jari 162     //System.out.println ("Inside CastFOMContentComponent.createXThresholdItems(): d = " + d);
2 26 Feb 07 jari 163     if (d < 10) s = s + "0";
2 26 Feb 07 jari 164     s = s + d;
2 26 Feb 07 jari 165     if (d >= 100) s = "1.00";
2 26 Feb 07 jari 166     threshold = threshold + interval;
2 26 Feb 07 jari 167       items[i] = s + "---->" + String.valueOf(Math.round(fom_values[i]*1000)/1000f);
2 26 Feb 07 jari 168   }
2 26 Feb 07 jari 169   JPanel listPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 170   JScrollPane scroll = new JScrollPane(new JList(items));
2 26 Feb 07 jari 171      
2 26 Feb 07 jari 172   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 173   gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 174   gbc.gridx = 0;
2 26 Feb 07 jari 175   gbc.gridy = 0;
2 26 Feb 07 jari 176   gbc.weightx = 1.0;
2 26 Feb 07 jari 177   gbc.weighty = 1.0;
2 26 Feb 07 jari 178   listPanel.add(scroll, gbc);
2 26 Feb 07 jari 179   gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 180   gbc.gridy = 1;
2 26 Feb 07 jari 181   gbc.weighty = 0.0;
2 26 Feb 07 jari 182   JButton button = new JButton("Details");
2 26 Feb 07 jari 183   button.addActionListener(new ActionListener() {
2 26 Feb 07 jari 184              public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 185            onDetails();
2 26 Feb 07 jari 186              }
2 26 Feb 07 jari 187          });
2 26 Feb 07 jari 188   listPanel.add(button, gbc);
2 26 Feb 07 jari 189   return listPanel;
2 26 Feb 07 jari 190     }
2 26 Feb 07 jari 191      
2 26 Feb 07 jari 192     private void onDetails() {
2 26 Feb 07 jari 193   JFrame f = new JFrame("Details");
2 26 Feb 07 jari 194   JTextArea t = new JTextArea();
2 26 Feb 07 jari 195   t.setEditable(false);
2 26 Feb 07 jari 196   JScrollPane sp = new JScrollPane(t);
2 26 Feb 07 jari 197   StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 198   float threshold = interval;
2 26 Feb 07 jari 199   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 200     String s = "0.";
2 26 Feb 07 jari 201     int d = (int)Math.floor(threshold*100);
2 26 Feb 07 jari 202     //System.out.println ("Inside CastFOMContentComponent.createXThresholdItems(): d = " + d);
2 26 Feb 07 jari 203     if (d < 10) s = s + "0";
2 26 Feb 07 jari 204     s = s + d;
2 26 Feb 07 jari 205     if (d >= 100) s = "1.00";
2 26 Feb 07 jari 206     threshold = threshold + interval;
2 26 Feb 07 jari 207       sb.append(s + "\t" + String.valueOf(Math.round(fom_values[i]*1000)/1000f)+"\n");
2 26 Feb 07 jari 208   }
2 26 Feb 07 jari 209   t.setText(sb.toString());
2 26 Feb 07 jari 210   t.setCaretPosition(0);
2 26 Feb 07 jari 211   f.getContentPane().add(sp);
2 26 Feb 07 jari 212   f.setSize(200, 200);
2 26 Feb 07 jari 213   java.awt.Dimension screenSize = f.getToolkit().getScreenSize();
2 26 Feb 07 jari 214   f.setLocation(screenSize.width/2 - f.getSize().width/2, screenSize.height/2 - f.getSize().height/2);
2 26 Feb 07 jari 215   f.setVisible(true);
2 26 Feb 07 jari 216     }
2 26 Feb 07 jari 217      */
2 26 Feb 07 jari 218     
2 26 Feb 07 jari 219     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 220       boolean test = framework.getDisplayMenu().isAntiAliasing();
2 26 Feb 07 jari 221   this.fomGraphB.setAntiAliasing(framework.getDisplayMenu().isAntiAliasing());
2 26 Feb 07 jari 222     }
2 26 Feb 07 jari 223     
2 26 Feb 07 jari 224     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 225   this.fomGraphB.setAntiAliasing(menu.isAntiAliasing());
2 26 Feb 07 jari 226     }
2 26 Feb 07 jari 227     
2 26 Feb 07 jari 228     private String[] createXItems(int iterations) {
2 26 Feb 07 jari 229   String[] items = new String[iterations];
2 26 Feb 07 jari 230   for (int i=0; i<items.length; i++) {
2 26 Feb 07 jari 231       /*if ((i+1)%5 == 0 || i == 0 || i == items.length-1)*/ //{
2 26 Feb 07 jari 232       items[i] = String.valueOf(sortedNumCastClusters[i]);
2 26 Feb 07 jari 233       //}
2 26 Feb 07 jari 234   }
2 26 Feb 07 jari 235   return items;
2 26 Feb 07 jari 236     }
2 26 Feb 07 jari 237     
2 26 Feb 07 jari 238 /*
2 26 Feb 07 jari 239     private String[] createXThresholdItems(int iterations) {
2 26 Feb 07 jari 240   String[] items = new String[iterations];
2 26 Feb 07 jari 241   float threshold = interval;
2 26 Feb 07 jari 242   for (int i=0; i<items.length; i++) {
2 26 Feb 07 jari 243       //if ((i+1)%5 == 0 || i == 0 || i == items.length-1) {
2 26 Feb 07 jari 244     String s = "0.";
2 26 Feb 07 jari 245     int d = (int)Math.floor(threshold*100);
2 26 Feb 07 jari 246     //System.out.println ("Inside CastFOMContentComponent.createXThresholdItems(): d = " + d);
2 26 Feb 07 jari 247     if (d < 10) s = s + "0";
2 26 Feb 07 jari 248     s = s + d;
2 26 Feb 07 jari 249     if (d >= 100) s = "1.00";
2 26 Feb 07 jari 250     items[i] = s;//String.valueOf(threshold);
2 26 Feb 07 jari 251     threshold = threshold + interval;
2 26 Feb 07 jari 252     //System.out.println("Inside CastFOMContentComponent.createXThresholdItems(): threshold[" + i + "] =" + threshold);
2 26 Feb 07 jari 253       //}
2 26 Feb 07 jari 254   }
2 26 Feb 07 jari 255   return items;
2 26 Feb 07 jari 256     }
2 26 Feb 07 jari 257  */
2 26 Feb 07 jari 258     
2 26 Feb 07 jari 259     private int[] createSortedClusterArray(int[] numOfCastClusters) {
2 26 Feb 07 jari 260   int[] localNumClusters = new int[numOfCastClusters.length];
2 26 Feb 07 jari 261   for (int i = 0; i < localNumClusters.length; i++) {
2 26 Feb 07 jari 262       localNumClusters[i] = numOfCastClusters[i];
2 26 Feb 07 jari 263   }
2 26 Feb 07 jari 264     /*
2 26 Feb 07 jari 265     for (int i = 0; i < localNumClusters.length; i++) {
2 26 Feb 07 jari 266         System.out.println("localNumClusters[" + i + "] =" + localNumClusters[i]);
2 26 Feb 07 jari 267     }
2 26 Feb 07 jari 268      */
2 26 Feb 07 jari 269   //Arrays.sort(sortedNumClusters);
2 26 Feb 07 jari 270   Vector localVector = new Vector();
2 26 Feb 07 jari 271   for (int i = 0; i < localNumClusters.length; i++) {
2 26 Feb 07 jari 272       localVector.add(new Integer(localNumClusters[i]));
2 26 Feb 07 jari 273   }
2 26 Feb 07 jari 274   
2 26 Feb 07 jari 275   HashSet s = new HashSet(localVector);
2 26 Feb 07 jari 276   
2 26 Feb 07 jari 277   Vector setVector = new Vector();
2 26 Feb 07 jari 278   
2 26 Feb 07 jari 279   for (Iterator it = s.iterator(); it.hasNext();) {
2 26 Feb 07 jari 280       setVector.add(it.next());
2 26 Feb 07 jari 281   }
2 26 Feb 07 jari 282     /*
2 26 Feb 07 jari 283     for (int i = 0; i < setVector.size(); i++) {
2 26 Feb 07 jari 284         System.out.println("setVector[" + i + "] = " + ((Integer)(setVector.get(i))).intValue());
2 26 Feb 07 jari 285     }
2 26 Feb 07 jari 286      */
2 26 Feb 07 jari 287   int[] setArray = new int[setVector.size()];
2 26 Feb 07 jari 288   
2 26 Feb 07 jari 289   for (int i = 0; i < setArray.length; i++) {
2 26 Feb 07 jari 290       
2 26 Feb 07 jari 291       setArray[i] = ((Integer)(setVector.get(i))).intValue();
2 26 Feb 07 jari 292   }
2 26 Feb 07 jari 293   
2 26 Feb 07 jari 294   Arrays.sort(setArray);
2 26 Feb 07 jari 295   
2 26 Feb 07 jari 296   int[] lastElementDeductedArray = new int[setArray.length - 1];
2 26 Feb 07 jari 297   for (int i = 0; i < lastElementDeductedArray.length; i++) {
2 26 Feb 07 jari 298       lastElementDeductedArray[i] = setArray[i];
2 26 Feb 07 jari 299   }
2 26 Feb 07 jari 300     /*
2 26 Feb 07 jari 301     for (int i = 0; i < lastElementDeductedArray.length; i++){
2 26 Feb 07 jari 302         System.out.println("lastElementDeductedArray[" + i + "] = " + lastElementDeductedArray[i]);
2 26 Feb 07 jari 303     }
2 26 Feb 07 jari 304      */
2 26 Feb 07 jari 305   return lastElementDeductedArray;
2 26 Feb 07 jari 306     }
2 26 Feb 07 jari 307     
2 26 Feb 07 jari 308     
2 26 Feb 07 jari 309     private float[] createSortedFomValues(float[] fom_values, int[] numOfCastClusters) {
2 26 Feb 07 jari 310   
2 26 Feb 07 jari 311   int[] sortedCastClusters = createSortedClusterArray(numOfCastClusters);
2 26 Feb 07 jari 312   //System.out.println("Finished createSortedClusterArray()");
2 26 Feb 07 jari 313   Vector sortedFomVector = new Vector();
2 26 Feb 07 jari 314   
2 26 Feb 07 jari 315   for (int i = 0; i < sortedCastClusters.length; i++) {
2 26 Feb 07 jari 316       float currentFomValue = 0;
2 26 Feb 07 jari 317       int count = 0;
2 26 Feb 07 jari 318       for (int j = 0; j < numOfCastClusters.length; j++) {
2 26 Feb 07 jari 319     if (numOfCastClusters[j] == sortedCastClusters[i]) {
2 26 Feb 07 jari 320         currentFomValue = currentFomValue + fom_values[j];
2 26 Feb 07 jari 321         count++;
2 26 Feb 07 jari 322     }
2 26 Feb 07 jari 323       }
2 26 Feb 07 jari 324       currentFomValue = currentFomValue/count;
2 26 Feb 07 jari 325       sortedFomVector.add(new Float(currentFomValue));
2 26 Feb 07 jari 326   }
2 26 Feb 07 jari 327   
2 26 Feb 07 jari 328   float[] sortedFomValues = new float[sortedFomVector.size()];
2 26 Feb 07 jari 329   for (int i = 0; i < sortedFomValues.length; i++) {
2 26 Feb 07 jari 330       sortedFomValues[i] = ((Float)(sortedFomVector.get(i))).floatValue();
2 26 Feb 07 jari 331   }
2 26 Feb 07 jari 332   
2 26 Feb 07 jari 333   return sortedFomValues;
2 26 Feb 07 jari 334   
2 26 Feb 07 jari 335     }
2 26 Feb 07 jari 336     
2 26 Feb 07 jari 337     
2 26 Feb 07 jari 338     private float getMaxValue(float[] fom_values) {
2 26 Feb 07 jari 339   float max_value = -Float.MAX_VALUE;
2 26 Feb 07 jari 340   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 341       max_value = Math.max(max_value, fom_values[i]);
2 26 Feb 07 jari 342   }
2 26 Feb 07 jari 343   return max_value;
2 26 Feb 07 jari 344     }
2 26 Feb 07 jari 345     
2 26 Feb 07 jari 346     private String[] createYItems(float[] fom_values) {
2 26 Feb 07 jari 347   int number_of_items = (int)Math.ceil(getMaxValue(fom_values))+1;
2 26 Feb 07 jari 348   String[] items = new String[number_of_items];
2 26 Feb 07 jari 349   for (int i=0; i<items.length; i++) {
2 26 Feb 07 jari 350       if (i%2 == 0 || i == items.length-1) {
2 26 Feb 07 jari 351     items[i] = String.valueOf(i);
2 26 Feb 07 jari 352       }
2 26 Feb 07 jari 353   }
2 26 Feb 07 jari 354   return items;
2 26 Feb 07 jari 355     }
2 26 Feb 07 jari 356   /**
2 26 Feb 07 jari 357    * @return Returns the fom_values.
2 26 Feb 07 jari 358    */
2 26 Feb 07 jari 359   public float[] getFom_values() {
2 26 Feb 07 jari 360     return fom_values;
2 26 Feb 07 jari 361   }
2 26 Feb 07 jari 362   /**
2 26 Feb 07 jari 363    * @param fom_values The fom_values to set.
2 26 Feb 07 jari 364    */
2 26 Feb 07 jari 365   public void setFom_values(float[] fom_values) {
2 26 Feb 07 jari 366     this.fom_values = fom_values;
2 26 Feb 07 jari 367   }
2 26 Feb 07 jari 368   /**
2 26 Feb 07 jari 369    * @return Returns the interval.
2 26 Feb 07 jari 370    */
2 26 Feb 07 jari 371   public float getInterval() {
2 26 Feb 07 jari 372     return interval;
2 26 Feb 07 jari 373   }
2 26 Feb 07 jari 374   /**
2 26 Feb 07 jari 375    * @param interval The interval to set.
2 26 Feb 07 jari 376    */
2 26 Feb 07 jari 377   public void setInterval(float interval) {
2 26 Feb 07 jari 378     this.interval = interval;
2 26 Feb 07 jari 379   }
2 26 Feb 07 jari 380     /////////////////////////////////////////////////////////////////
2 26 Feb 07 jari 381   /*  public static void main(String[] args) throws Exception {
2 26 Feb 07 jari 382   javax.swing.JFrame frame = new javax.swing.JFrame();
2 26 Feb 07 jari 383   frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
2 26 Feb 07 jari 384   float[] fom_values = new float[] {1.5f, 0.88888888888f, 0.6666666666f, 2.5f, 0.33333333333f, 0.0f};
2 26 Feb 07 jari 385   FOMContentComponent content = new FOMContentComponent(fom_values);
2 26 Feb 07 jari 386   frame.getContentPane().add(content);
2 26 Feb 07 jari 387   frame.setSize(700, 400);
2 26 Feb 07 jari 388   java.awt.Dimension screenSize = frame.getToolkit().getScreenSize();
2 26 Feb 07 jari 389   frame.setLocation(screenSize.width/2 - frame.getSize().width/2, screenSize.height/2 - frame.getSize().height/2);
2 26 Feb 07 jari 390   frame.setVisible(true);
2 26 Feb 07 jari 391     }
2 26 Feb 07 jari 392    **/
2 26 Feb 07 jari 393   /**
2 26 Feb 07 jari 394    * @return Returns the numOfCastClusters.
2 26 Feb 07 jari 395    */
2 26 Feb 07 jari 396   public int[] getNumOfCastClusters() {
2 26 Feb 07 jari 397     return numOfCastClusters;
2 26 Feb 07 jari 398   }
2 26 Feb 07 jari 399   /**
2 26 Feb 07 jari 400    * @return Returns the sortedFomValues.
2 26 Feb 07 jari 401    */
2 26 Feb 07 jari 402   public float[] getSortedFomValues() {
2 26 Feb 07 jari 403     return sortedFomValues;
2 26 Feb 07 jari 404   }
2 26 Feb 07 jari 405   /**
2 26 Feb 07 jari 406    * @return Returns the sortedNumCastClusters.
2 26 Feb 07 jari 407    */
2 26 Feb 07 jari 408   public int[] getSortedNumCastClusters() {
2 26 Feb 07 jari 409     return sortedNumCastClusters;
2 26 Feb 07 jari 410   }
2 26 Feb 07 jari 411 }