Changeset 7167


Ignore:
Timestamp:
11/05/10 21:38:39 (9 years ago)
Author:
aivar
Message:

Added setFittedComponents and refineFit, to enable cumulative curve fitting. Disable UI during curve fitting. Added stretched exponential UI. Added Gray NR versions of the curve fitting algorithms.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/maven/projects/slim-plugin/src/main/java/loci/slim/ui/UserInterfacePanel.java

    r7139 r7167  
    9090    private static final String ALL_REGION = "Each Pixel"; 
    9191     
    92     private static final String PB_RLD_ALGORITHM = "Paul Barber NR RLD"; 
    93     private static final String PB_LMA_ALGORITHM = "Paul Barber NR LMA"; 
     92    private static final String GRAY_RLD_ALGORITHM = "Gray NR RLD"; 
     93    private static final String GRAY_LMA_ALGORITHM = "Gray NR LMA"; 
    9494    private static final String JAOLHO_LMA_ALGORITHM = "Jaolho LMA"; 
    95     private static final String SLIM_CURVE_RLD_ALGORITHM = "SLIM Curve RLD"; 
    96     private static final String SLIM_CURVE_LMA_ALGORITHM = "SLIM Curve LMA"; 
    97  
    98     private static final String SINGLE_COMPONENT = "Single Exponential"; 
    99     private static final String DOUBLE_COMPONENT = "Double Exponential"; 
    100     private static final String TRIPLE_COMPONENT = "Triple Exponential"; 
    101     private static final String STRETCH_COMPONENT = "Stretched Exponential"; 
     95    private static final String SLIM_CURVE_RLD_ALGORITHM = "SLIMCurve RLD"; 
     96    private static final String SLIM_CURVE_LMA_ALGORITHM = "SLIMCurve LMA"; 
     97 
     98    private static final String SINGLE_EXPONENTIAL = "Single Exponential"; 
     99    private static final String DOUBLE_EXPONENTIAL = "Double Exponential"; 
     100    private static final String TRIPLE_EXPONENTIAL = "Triple Exponential"; 
     101    private static final String STRETCHED_EXPONENTIAL = "Stretched Exponential"; 
    102102     
    103103    private static final String DO_FIT = "Do Fit"; 
     
    108108 
    109109    private static final String REGION_ITEMS[] = { SUM_REGION, ROIS_REGION, PIXEL_REGION, ALL_REGION }; 
    110     private static final String ALGORITHM_ITEMS[] = { JAOLHO_LMA_ALGORITHM, SLIM_CURVE_RLD_ALGORITHM, SLIM_CURVE_LMA_ALGORITHM }; 
    111     private static final String FUNCTION_ITEMS[] = { SINGLE_COMPONENT, DOUBLE_COMPONENT, TRIPLE_COMPONENT }; 
     110    private static final String ALGORITHM_ITEMS[] = { JAOLHO_LMA_ALGORITHM, GRAY_RLD_ALGORITHM, GRAY_LMA_ALGORITHM, SLIM_CURVE_RLD_ALGORITHM, SLIM_CURVE_LMA_ALGORITHM }; 
     111    private static final String FUNCTION_ITEMS[] = { SINGLE_EXPONENTIAL, DOUBLE_EXPONENTIAL, TRIPLE_EXPONENTIAL, STRETCHED_EXPONENTIAL }; 
    112112     
    113113    public IUserInterfacePanelListener m_listener; 
     114 
     115    int m_fittedComponents = 0; 
    114116 
    115117    // UI panel 
     
    134136 
    135137    // single exponent fit 
    136     JTextField m_a1Param1; 
    137     JCheckBox m_a1Fix1; 
    138     JTextField m_t1Param1; 
    139     JCheckBox m_t1Fix1; 
     138    JTextField m_aParam1; 
     139    JCheckBox m_aFix1; 
     140    JTextField m_tParam1; 
     141    JCheckBox m_tFix1; 
    140142    JTextField m_cParam1; 
    141143    JCheckBox m_cFix1; 
     
    175177    JCheckBox m_startParam3; 
    176178 
     179    // stretched exonent fit 
     180    JTextField m_aParam4; 
     181    JCheckBox m_aFix4; 
     182    JTextField m_tParam4; 
     183    JCheckBox m_tFix4; 
     184    JTextField m_hParam4; 
     185    JCheckBox m_hFix4; 
     186    JTextField m_cParam4; 
     187    JCheckBox m_cFix4; 
     188    JTextField m_chiSqParam4; 
     189    JCheckBox m_startParam4; 
     190 
    177191    JButton m_quitButton; 
    178192    JButton m_fitButton; 
     
    202216        // Create cards and the panel that contains the cards 
    203217        m_cardPanel = new JPanel(new CardLayout()); 
    204         m_cardPanel.add(createSingleExponentialPanel(lifetimeLabel), SINGLE_COMPONENT); 
    205         m_cardPanel.add(createDoubleExponentialPanel(lifetimeLabel), DOUBLE_COMPONENT); 
    206         m_cardPanel.add(createTripleExponentialPanel(lifetimeLabel), TRIPLE_COMPONENT); 
     218        m_cardPanel.add(createSingleExponentialPanel(lifetimeLabel), SINGLE_EXPONENTIAL); 
     219        m_cardPanel.add(createDoubleExponentialPanel(lifetimeLabel), DOUBLE_EXPONENTIAL); 
     220        m_cardPanel.add(createTripleExponentialPanel(lifetimeLabel), TRIPLE_EXPONENTIAL); 
     221        m_cardPanel.add(createStretchedExponentialPanel(lifetimeLabel), STRETCHED_EXPONENTIAL); 
    207222        m_cardPanel.setBorder(border("Params")); 
    208223        innerPanel.add(m_cardPanel); 
     
    231246                    String text = (String)e.getActionCommand(); 
    232247                    if (text.equals("Do Fit")){ 
     248                        enableAll(false); 
    233249                        setFitButtonState(false); 
    234250                        if (null != m_listener) { 
     
    277293 
    278294    public void reset() { 
     295        enableAll(true); 
    279296        setFitButtonState(true); 
    280297    } 
     
    308325                    CardLayout cl = (CardLayout)(m_cardPanel.getLayout()); 
    309326                    cl.show(m_cardPanel, (String)e.getItem()); 
     327                    reconcileStartParam(); 
    310328                } 
    311329            } 
     
    322340    } 
    323341 
     342    /* 
     343     * Creates a panel that has some settings that control the fit. 
     344     */ 
    324345    private JPanel createControlPanel() { 
    325346        JPanel controlPanel = new JPanel(); 
     
    366387    } 
    367388 
     389    /* 
     390     * Creates panel for the single exponential version of the fit parameters. 
     391     */ 
    368392    private JPanel createSingleExponentialPanel(String lifetimeLabel) { 
    369393        JPanel expPanel = new JPanel(); 
     
    371395        expPanel.setLayout(new SpringLayout()); 
    372396 
    373         JLabel a1Label1 = new JLabel("A"); 
    374         a1Label1.setHorizontalAlignment(SwingConstants.RIGHT); 
    375         expPanel.add(a1Label1); 
    376         m_a1Param1 = new JTextField(9); 
     397        JLabel aLabel1 = new JLabel("A"); 
     398        aLabel1.setHorizontalAlignment(SwingConstants.RIGHT); 
     399        expPanel.add(aLabel1); 
     400        m_aParam1 = new JTextField(9); 
    377401        //m_a1Param1.setEditable(false); 
    378         expPanel.add(m_a1Param1); 
    379         m_a1Fix1 = new JCheckBox("Fix"); 
     402        expPanel.add(m_aParam1); 
     403        m_aFix1 = new JCheckBox("Fix"); 
    380404        //m_a1Fix1.addItemListener(this); 
    381         expPanel.add(m_a1Fix1); 
     405        expPanel.add(m_aFix1); 
    382406 
    383407        JLabel t1Label1 = new JLabel(lifetimeLabel); 
    384408        t1Label1.setHorizontalAlignment(SwingConstants.RIGHT); 
    385409        expPanel.add(t1Label1); 
    386         m_t1Param1 = new JTextField(9); 
     410        m_tParam1 = new JTextField(9); 
    387411        //m_t1Param1.setEditable(false); 
    388         expPanel.add(m_t1Param1); 
    389         m_t1Fix1 = new JCheckBox("Fix"); 
     412        expPanel.add(m_tParam1); 
     413        m_tFix1 = new JCheckBox("Fix"); 
    390414        //m_t1Fix1.addItemListener(this); 
    391         expPanel.add(m_t1Fix1); 
     415        expPanel.add(m_tFix1); 
    392416 
    393417        JLabel cLabel1 = new JLabel("C"); 
     
    425449 
    426450        m_startParam1 = new JCheckBox("Use as starting parameters for fit"); 
    427      m_startParam1.setSelected(true); 
    428      m_startParam1.setEnabled(false); 
     451        m_startParam1.setSelected(true); 
     452        m_startParam1.setEnabled(false); 
    429453 
    430454        panel.add("South", m_startParam1); 
     
    432456    } 
    433457 
     458    /* 
     459     * Creates panel for the double exponential version of the fit parameters. 
     460     */ 
    434461    private JPanel createDoubleExponentialPanel(String lifetimeLabel) { 
    435462        JPanel expPanel = new JPanel(); 
     
    513540 
    514541        m_startParam2 = new JCheckBox("Use as starting parameters for fit"); 
    515       m_startParam2.setSelected(true); 
    516       m_startParam2.setEnabled(false); 
     542        m_startParam2.setSelected(true); 
     543        m_startParam2.setEnabled(false); 
    517544        panel.add("South", m_startParam2); 
    518545        return panel; 
    519546    } 
    520547 
     548    /* 
     549     * Creates panel for the triple exponential version of the fit parameters. 
     550     */ 
    521551    private JPanel createTripleExponentialPanel(String lifetimeLabel) { 
    522552        JPanel expPanel = new JPanel(); 
     
    623653 
    624654        m_startParam3 = new JCheckBox("Use as starting parameters for fit"); 
    625       m_startParam2.setSelected(true); 
    626       m_startParam2.setEnabled(false); 
     655        m_startParam3.setSelected(true); 
     656        m_startParam3.setEnabled(false); 
    627657        panel.add("South", m_startParam3); 
    628658        return panel; 
    629  
     659    } 
     660 
     661    /* 
     662     * Creates panel for the stretched exponential version of the fit parameters. 
     663     */ 
     664    private JPanel createStretchedExponentialPanel(String lifetimeLabel) { 
     665        JPanel expPanel = new JPanel(); 
     666        expPanel.setBorder(new EmptyBorder(0, 0, 8, 8)); 
     667        expPanel.setLayout(new SpringLayout()); 
     668 
     669        JLabel a1Label4 = new JLabel("A"); 
     670        a1Label4.setHorizontalAlignment(SwingConstants.RIGHT); 
     671        expPanel.add(a1Label4); 
     672        m_aParam4 = new JTextField(9); 
     673        //m_a1Param1.setEditable(false); 
     674        expPanel.add(m_aParam4); 
     675        m_aFix4 = new JCheckBox("Fix"); 
     676        //m_a1Fix1.addItemListener(this); 
     677        expPanel.add(m_aFix4); 
     678 
     679        JLabel tLabel4 = new JLabel(lifetimeLabel); 
     680        tLabel4.setHorizontalAlignment(SwingConstants.RIGHT); 
     681        expPanel.add(tLabel4); 
     682        m_tParam4 = new JTextField(9); 
     683        //m_t1Param1.setEditable(false); 
     684        expPanel.add(m_tParam4); 
     685        m_tFix4 = new JCheckBox("Fix"); 
     686        //m_t1Fix1.addItemListener(this); 
     687        expPanel.add(m_tFix4); 
     688 
     689        JLabel hLabel4 = new JLabel("H"); 
     690        hLabel4.setHorizontalAlignment(SwingConstants.RIGHT); 
     691        expPanel.add(hLabel4); 
     692        m_hParam4 = new JTextField(9); 
     693        //m_hParam4.setEditable(false); 
     694        expPanel.add(m_hParam4); 
     695        m_hFix4 = new JCheckBox("Fix"); 
     696        //m_hFix4.addItemListener(this); 
     697        expPanel.add(m_hFix4); 
     698 
     699        JLabel cLabel1 = new JLabel("C"); 
     700        cLabel1.setHorizontalAlignment(SwingConstants.RIGHT); 
     701        expPanel.add(cLabel1); 
     702        m_cParam4 = new JTextField(9); 
     703        //m_cParam1.setEditable(false); 
     704        expPanel.add(m_cParam4); 
     705        m_cFix4 = new JCheckBox("Fix"); 
     706        //m_cFix1.addItemListener(this); 
     707        expPanel.add(m_cFix4); 
     708 
     709        JLabel chiSqLabel4 = new JLabel("" + CHI + SQUARE); 
     710        chiSqLabel4.setHorizontalAlignment(SwingConstants.RIGHT); 
     711        expPanel.add(chiSqLabel4); 
     712        m_chiSqParam4 = new JTextField(9); 
     713        m_chiSqParam4.setEditable(false); 
     714        expPanel.add(m_chiSqParam4); 
     715        JLabel nullLabel1 = new JLabel(""); 
     716        expPanel.add(nullLabel1); 
     717 
     718        // SLIMPlotter look & feel: 
     719        //Color fixColor = m_a1Param1.getBackground(); 
     720        //Color floatColor = a1Label1.getBackground(); 
     721        //m_a1Param1.setBackground(floatColor); 
     722        //m_t1Param1.setBackground(floatColor); 
     723        //m_cParam1.setBackground(floatColor); 
     724        //m_chiSqParam1.setBackground(floatColor); 
     725 
     726        // rows, cols, initX, initY, xPad, yPad 
     727        SpringUtilities.makeCompactGrid(expPanel, 5, 3, 4, 4, 4, 4); 
     728 
     729        JPanel panel = new JPanel(new BorderLayout()); 
     730        panel.add("North", expPanel); 
     731 
     732        m_startParam4 = new JCheckBox("Use as starting parameters for fit"); 
     733        m_startParam4.setSelected(true); 
     734        m_startParam4.setEnabled(false); 
     735 
     736        panel.add("South", m_startParam4); 
     737        return panel; 
    630738    } 
    631739 
     
    642750    private boolean getFitButtonState() { 
    643751        return m_fitButton.getText().equals(DO_FIT); 
     752    } 
     753 
     754    /* 
     755     * Disables and enables UI during and after a fit. 
     756     * 
     757     * @param enable 
     758     */ 
     759    private void enableAll(boolean enable) { 
     760        m_regionComboBox.setEnabled(enable); 
     761        m_algorithmComboBox.setEnabled(enable); 
     762        m_functionComboBox.setEnabled(enable); 
     763 
     764        // fit settings 
     765        m_xField.setEditable(enable); 
     766        m_yField.setEditable(enable); 
     767        m_startField.setEditable(enable); 
     768        m_stopField.setEditable(enable); 
     769        m_thresholdField.setEditable(enable); 
     770 
     771        // single exponent fit 
     772        m_aParam1.setEditable(enable); 
     773        m_aFix1.setEnabled(enable); 
     774        m_tParam1.setEditable(enable); 
     775        m_tFix1.setEnabled(enable); 
     776        m_cParam1.setEditable(enable); 
     777        m_cFix1.setEnabled(enable); 
     778 
     779        // double exponent fit 
     780        m_a1Param2.setEditable(enable); 
     781        m_a1Fix2.setEnabled(enable); 
     782        m_a2Param2.setEditable(enable); 
     783        m_a2Fix2.setEnabled(enable); 
     784        m_t1Param2.setEditable(enable); 
     785        m_t1Fix2.setEnabled(enable); 
     786        m_t2Param2.setEditable(enable); 
     787        m_t2Fix2.setEnabled(enable); 
     788        m_cParam2.setEditable(enable); 
     789        m_cFix2.setEnabled(enable); 
     790 
     791        // triple exponent fit 
     792        m_a1Param3.setEditable(enable); 
     793        m_a1Fix3.setEnabled(enable); 
     794        m_a2Param3.setEditable(enable); 
     795        m_a2Fix3.setEnabled(enable); 
     796        m_a3Param3.setEditable(enable); 
     797        m_a3Fix3.setEnabled(enable); 
     798        m_t1Param3.setEditable(enable); 
     799        m_t1Fix3.setEnabled(enable); 
     800        m_t2Param3.setEditable(enable); 
     801        m_t2Fix3.setEnabled(enable); 
     802        m_t3Param3.setEditable(enable); 
     803        m_t3Fix3.setEnabled(enable); 
     804        m_cParam3.setEditable(enable); 
     805        m_cFix3.setEnabled(enable); 
     806 
     807        // stretched exonent fit 
     808        m_aParam4.setEditable(enable); 
     809        m_aFix4.setEnabled(enable); 
     810        m_tParam4.setEditable(enable); 
     811        m_tFix4.setEnabled(enable); 
     812        m_hParam4.setEditable(enable); 
     813        m_hFix4.setEnabled(enable); 
     814        m_cParam4.setEditable(enable); 
     815        m_cFix4.setEnabled(enable); 
     816 
     817        if (enable) { 
     818            reconcileStartParam(); 
     819        } 
    644820    } 
    645821 
     
    668844            algorithm = FitAlgorithm.JAOLHO; 
    669845        } 
     846        else if (selected.equals(GRAY_RLD_ALGORITHM)) { 
     847            algorithm = FitAlgorithm.BARBER2_RLD; 
     848        } 
     849        else if (selected.equals(GRAY_LMA_ALGORITHM)) { 
     850            algorithm = FitAlgorithm.BARBER2_LMA; 
     851        } 
    670852        else if (selected.equals(SLIM_CURVE_RLD_ALGORITHM)) { 
    671853            algorithm = FitAlgorithm.SLIMCURVE_RLD; 
     
    680862        FitFunction function = null; 
    681863        String selected = (String) m_functionComboBox.getSelectedItem(); 
    682         if (selected.equals(SINGLE_COMPONENT)) { 
     864        if (selected.equals(SINGLE_EXPONENTIAL)) { 
    683865            function = FitFunction.SINGLE_EXPONENTIAL; 
    684866        } 
    685         else if (selected.equals(DOUBLE_COMPONENT)) { 
     867        else if (selected.equals(DOUBLE_EXPONENTIAL)) { 
    686868            function = FitFunction.DOUBLE_EXPONENTIAL; 
    687869        } 
    688         else if (selected.equals(TRIPLE_COMPONENT)) { 
     870        else if (selected.equals(TRIPLE_EXPONENTIAL)) { 
    689871            function = FitFunction.TRIPLE_EXPONENTIAL; 
     872        } 
     873        else if (selected.equals(STRETCHED_EXPONENTIAL)) { 
     874            function = FitFunction.STRETCHED_EXPONENTIAL; 
    690875        } 
    691876        return function; 
     
    735920        int components = 0; 
    736921        String function = (String) m_functionComboBox.getSelectedItem(); 
    737         if (function.equals(SINGLE_COMPONENT)) { 
    738             components = 1; 
    739         } 
    740         else if (function.equals(DOUBLE_COMPONENT)) { 
    741             components = 2; 
    742         } 
    743         else if (function.equals(TRIPLE_COMPONENT)) { 
     922        if (function.equals(SINGLE_EXPONENTIAL)) { 
    744923            components = 3; 
    745924        } 
     925        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
     926            components = 5; 
     927        } 
     928        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
     929            components = 7; 
     930        } 
     931        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     932            components = 4; 
     933        } 
    746934        return components; 
     935    } 
     936 
     937    public void setFittedComponents(int components) { 
     938        m_fittedComponents = components; 
    747939    } 
    748940 
     
    750942        double parameters[] = null; 
    751943        String function = (String) m_functionComboBox.getSelectedItem(); 
    752         if (function.equals(SINGLE_COMPONENT)) { 
     944        if (function.equals(SINGLE_EXPONENTIAL)) { 
    753945            parameters = new double[3]; 
    754             parameters[0] = Double.valueOf(m_a1Param1.getText()); 
    755             parameters[1] = Double.valueOf(m_t1Param1.getText()); 
     946            parameters[0] = Double.valueOf(m_aParam1.getText()); 
     947            parameters[1] = Double.valueOf(m_tParam1.getText()); 
    756948            parameters[2] = Double.valueOf(m_cParam1.getText()); 
    757949        } 
    758         else if (function.equals(DOUBLE_COMPONENT)) { 
     950        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
    759951            parameters = new double[5]; 
    760952            parameters[0] = Double.valueOf(m_a1Param2.getText()); 
     
    764956            parameters[4] = Double.valueOf(m_cParam2.getText()); 
    765957        } 
    766         else if (function.equals(TRIPLE_COMPONENT)) { 
     958        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
    767959            parameters = new double[7]; 
    768960            parameters[0] = Double.valueOf(m_a1Param3.getText()); 
     
    774966            parameters[6] = Double.valueOf(m_cParam3.getText()); 
    775967        } 
     968        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     969            parameters = new double[4]; 
     970            parameters[0] = Double.valueOf(m_aParam4.getText()); 
     971            parameters[1] = Double.valueOf(m_tParam4.getText()); 
     972            parameters[2] = Double.valueOf(m_hParam4.getText()); 
     973            parameters[3] = Double.valueOf(m_cParam4.getText()); 
     974        } 
    776975        return parameters; 
    777976    } 
     
    779978    public void setParameters(double params[]) { 
    780979        String function = (String) m_functionComboBox.getSelectedItem(); 
    781         if (function.equals(SINGLE_COMPONENT)) { 
    782             m_a1Param1.setText("" + (float) params[0]); 
    783             m_t1Param1.setText("" + (float) params[1]); 
     980        if (function.equals(SINGLE_EXPONENTIAL)) { 
     981            m_aParam1.setText("" + (float) params[0]); 
     982            m_tParam1.setText("" + (float) params[1]); 
    784983            m_cParam1.setText( "" + (float) params[2]); 
    785984        } 
    786         else if (function.equals(DOUBLE_COMPONENT)) { 
     985        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
    787986            m_a1Param2.setText("" + (float) params[0]); 
    788987            m_t1Param2.setText("" + (float) params[1]); 
     
    791990            m_cParam2.setText( "" + (float) params[4]); 
    792991        } 
    793         else if (function.equals(TRIPLE_COMPONENT)) { 
     992        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
    794993            m_a1Param3.setText("" + (float) params[0]); 
    795994            m_t1Param3.setText("" + (float) params[1]); 
     
    800999            m_cParam3.setText( "" + (float) params[6]); 
    8011000         } 
     1001        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     1002            m_aParam4.setText("" + (float) params[0]); 
     1003            m_tParam4.setText("" + (float) params[1]); 
     1004            m_hParam4.setText("" + (float) params[2]); 
     1005            m_cParam4.setText("" + (float) params[3]); 
     1006        } 
    8021007    } 
    8031008 
     
    8051010        switch (function) { 
    8061011            case 0: 
    807                 m_a1Param1.setText("" + (float) params[0]); 
    808                 m_t1Param1.setText("" + (float) params[1]); 
     1012                m_aParam1.setText("" + (float) params[0]); 
     1013                m_tParam1.setText("" + (float) params[1]); 
    8091014                m_cParam1.setText( "" + (float) params[2]); 
    8101015                break; 
     
    8251030                m_cParam3.setText( "" + (float) params[6]); 
    8261031                break; 
     1032            case 3: 
     1033                m_aParam4.setText("" + (float) params[0]); 
     1034                m_tParam4.setText("" + (float) params[1]); 
     1035                m_hParam4.setText("" + (float) params[2]); 
     1036                m_cParam4.setText("" + (float) params[3]); 
     1037                break; 
    8271038        } 
    8281039    } 
     
    8311042        boolean free[] = null; 
    8321043        String function = (String) m_functionComboBox.getSelectedItem(); 
    833         if (function.equals(SINGLE_COMPONENT)) { 
     1044        if (function.equals(SINGLE_EXPONENTIAL)) { 
    8341045            free = new boolean[3]; 
    835             free[0] = !m_a1Fix1.isSelected(); 
    836             free[1] = !m_t1Fix1.isSelected(); 
     1046            free[0] = !m_aFix1.isSelected(); 
     1047            free[1] = !m_tFix1.isSelected(); 
    8371048            free[2] = !m_cFix1.isSelected(); 
    8381049        } 
    839         else if (function.equals(DOUBLE_COMPONENT)) { 
     1050        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
    8401051            free = new boolean[5]; 
    8411052            free[0] = !m_a1Fix2.isSelected(); 
     
    8451056            free[4] = !m_cFix2.isSelected(); 
    8461057        } 
    847         else if (function.equals(TRIPLE_COMPONENT)) { 
     1058        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
    8481059            free = new boolean[7]; 
    8491060            free[0] = !m_a1Fix3.isSelected(); 
     
    8561067 
    8571068        } 
     1069        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     1070            free = new boolean[4]; 
     1071            free[0] = !m_aFix4.isSelected(); 
     1072            free[1] = !m_tFix4.isSelected(); 
     1073            free[2] = !m_hFix4.isSelected(); 
     1074            free[3] = !m_cFix4.isSelected(); 
     1075        } 
    8581076        return free; 
    8591077    } 
     
    8611079    public void setChiSquare(double chiSquare) { 
    8621080        String function = (String) m_functionComboBox.getSelectedItem(); 
    863         if (function.equals(SINGLE_COMPONENT)) { 
     1081        if (function.equals(SINGLE_EXPONENTIAL)) { 
    8641082            m_chiSqParam1.setText("" + (float) chiSquare); 
    8651083        } 
    866         else if (function.equals(DOUBLE_COMPONENT)) { 
     1084        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
    8671085            m_chiSqParam2.setText("" + (float) chiSquare); 
    8681086        } 
    869         else if (function.equals(TRIPLE_COMPONENT)) { 
     1087        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
    8701088            m_chiSqParam3.setText("" + (float) chiSquare); 
    871          } 
     1089        } 
     1090        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     1091            m_chiSqParam4.setText("" + (float) chiSquare); 
     1092        } 
     1093    } 
     1094 
     1095    public boolean refineFit() { 
     1096        JCheckBox checkBox = null; 
     1097        String function = (String) m_functionComboBox.getSelectedItem(); 
     1098        if (function.equals(SINGLE_EXPONENTIAL)) { 
     1099            checkBox = m_startParam1; 
     1100        } 
     1101        else if (function.equals(DOUBLE_EXPONENTIAL)) { 
     1102            checkBox = m_startParam2; 
     1103        } 
     1104        else if (function.equals(TRIPLE_EXPONENTIAL)) { 
     1105            checkBox = m_startParam3; 
     1106        } 
     1107        else if (function.equals(STRETCHED_EXPONENTIAL)) { 
     1108            checkBox = m_startParam4; //TODO use an array of checkboxes, etc. 
     1109        } 
     1110        return !checkBox.isSelected(); 
    8721111    } 
    8731112 
     
    8821121        return value; 
    8831122    } 
     1123 
     1124    void reconcileStartParam() { 
     1125        boolean enable = (m_fittedComponents == getComponents()); 
     1126        m_startParam1.setEnabled(enable); 
     1127        m_startParam2.setEnabled(enable); 
     1128        m_startParam3.setEnabled(enable); 
     1129        m_startParam4.setEnabled(enable); 
     1130    } 
    8841131} 
Note: See TracChangeset for help on using the changeset viewer.