package IBA_J.resources.lib; import IBA_J.GeneratedMap.GeneratedMap; import IBA_J.MainFrame.MainFrame; import IBA_J.Spectra.Spectra; import IBA_J.Prefs.PrefsManager; import ij.*; import java.awt.Color; import java.awt.Dimension; import java.awt.event.WindowEvent; import java.io.File; import java.util.ArrayList; import java.util.Vector; import javax.swing.GroupLayout; import javax.swing.GroupLayout.ParallelGroup; import javax.swing.GroupLayout.SequentialGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.LayoutStyle.ComponentPlacement; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.LogarithmicAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.RefineryUtilities; /** * Class XYPlotSp is the class representing the spectra management window */ public class XYPlotSp extends JFrame { private String titleGraph; private Spectra drawSpectra; private JFreeChart chart; private static MainFrame parentWindow; private boolean yIsLog=false; private CheckBoxListenerSp checkBoxListener; private final CustomChartPanel chartPanel; public XYPlotSp(Spectra spectraDrew, final String titleWindow,final String titleGraph2, double[] energiesX, double[] dataY,int nROI) { super(titleWindow); this.parentWindow=spectraDrew.getParentWindowS(); this.titleGraph=titleGraph2; this.drawSpectra=spectraDrew; //create the dataset final XYDataset dataset = createDataset(energiesX,dataY); //create the chart final JFreeChart myChart = createChart(dataset,titleGraph2,checkCalib()); this.chart = myChart; this.chartPanel= new CustomChartPanel(myChart,this); chartPanel.setMouseWheelEnabled(true); chartPanel.setPreferredSize(new Dimension(500, 270)); jButtonLogLinActionPerformed(null); initComponents(nROI); } public Vector getVectButtonsSupp(){ return vectButtonsSupp; } public JFreeChart getChart(){ return chart; } /** * Creates the dataset of the Spectra * @returns a dataset. */ private static XYDataset createDataset(double[] energiesX,double[] dataY) { final XYSeries series1 = new XYSeries(tr("Spectra")+" 1"); for(int i=0;i<energiesX.length;i++){ if(dataY[i]>0) series1.add(energiesX[i],dataY[i]); } final XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(series1); return dataset; } /** * Creates a chart. * @param dataset the data for the chart. * @returns a chart. */ private static JFreeChart createChart(final XYDataset dataset, final String titleGraph2, final String titleAxisX) { // create the chart... final JFreeChart chart = ChartFactory.createXYLineChart( titleGraph2, // chart title tr(titleAxisX), // x axis label tr("Events number"), // y axis label dataset, // data PlotOrientation.VERTICAL, // plot orientation (pretty obvious this one) false, // if true show the legeng (useful for several lignes) true, // tooltips false // URLs ); // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... chart.setBackgroundPaint(Color.white); //final StandardLegend legend = (StandardLegend) chart.getLegend(); //legend.setDisplaySeriesShapes(true); // get a reference to the plot for further customisation... final XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.white); //plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0)); plot.setDomainGridlinePaint(Color.lightGray); plot.setRangeGridlinePaint(Color.lightGray); //code for points and no lines on the chart //final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); //renderer.setSeriesLinesVisible(0, false); //renderer.setSeriesShapesVisible(1, false); //plot.setRenderer(renderer); // change the auto tick unit selection to integer units only... final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // OPTIONAL CUSTOMISATION COMPLETED. return chart; } /** * Use this method to show the window to the user */ public void showVisible() { pack(); RefineryUtilities.centerFrameOnScreen(this); setVisible(true); } public void windowClosing(final WindowEvent evt){ if(evt.getWindow() == this){ dispose(); } } /** * This method will link each CheckBox to CheckBoxListenerSp * @see CheckBoxListenerSp */ private void initComponents(int nROI) { int nAddedField=vectButtonsSupp.size()+1; checkBoxListener = new CheckBoxListenerSp(this); int nbFieldsToAdd=nROI-vectButtonsSupp.size(); if (nbFieldsToAdd>0){ if((vectButtonsSupp.size()%3)!=0){ nbFieldsToAdd=3-(vectButtonsSupp.size()%3); for(int j=0;j<nbFieldsToAdd;j++){ addField(nAddedField); nAddedField+=1; } } nbFieldsToAdd=nROI-vectButtonsSupp.size(); int nbLinesToAdd=nbFieldsToAdd/3; if((nbFieldsToAdd%3)!=0) nbLinesToAdd+=1; int nbFieldsPerLine=3; for (int i=0; i<nbLinesToAdd;i++){ if (i==nbLinesToAdd-1) nbFieldsPerLine=(nbFieldsToAdd%3); if (nbFieldsPerLine==0) nbFieldsPerLine=3; for(int j=0;j<nbFieldsPerLine;j++){ addField(nAddedField); nAddedField+=1; } } } //setSelectedCheckBox(); jButtonPlus = new JButton(); jButtonPlus.setText(tr("+ ROI ...")); jButtonPlus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonMoreActionPerformed(evt); } }); jButtonGenImg = new JButton(); jButtonGenImg.setText(tr("Generate pictures")); jButtonGenImg.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonGenImgActionPerformed(evt); } }); jButtonLogLin = new JButton(); jButtonLogLin.setText(tr("Log/Lin")); jButtonLogLin.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonLogLinActionPerformed(evt); } }); jButtonSave = new JButton(); jButtonSave.setText("Save prefs"); jButtonSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSaveActionPerformed(evt); } }); jButtonSaveGup = new JButton(); jButtonSaveGup.setText(tr("Save Gupix")); jButtonSaveGup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSaveGupActionPerformed(evt); } }); JPanel panel = new JPanel(); remove(getContentPane()); setContentPane(panel); GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); // horizontal Layout ParallelGroup paralGroupHor=layout.createParallelGroup(GroupLayout.Alignment.LEADING); SequentialGroup grpChartPanel=layout.createSequentialGroup(); grpChartPanel.addComponent(chartPanel); paralGroupHor.addGroup(grpChartPanel); //panel for fields JPanel panelFields = new JPanel(); GroupLayout layoutPanelFields = new GroupLayout(panelFields); panelFields.setLayout(layoutPanelFields); ParallelGroup paralGroupHorPanelFields=layoutPanelFields.createParallelGroup(GroupLayout.Alignment.LEADING); int nbLines=nROI/3; if (nROI%3>0) nbLines+=1; int nbFieldsPerLine=3; //IJ.log("N retrieved ROI from Prefs : "+String.valueOf(nROI)); for (int i=0; i<nbLines;i++){ SequentialGroup grp1 = layoutPanelFields.createSequentialGroup(); grp1.addContainerGap(); if (i==nbLines-1) nbFieldsPerLine=(nROI%3); if (nbFieldsPerLine==0) nbFieldsPerLine=3; for(int j=0;j<nbFieldsPerLine;j++){ int currentField=i*3+j; JComponent[] tablJComp = (JComponent[]) vectButtonsSupp.get(currentField); JCheckBox checkBoxCurrent = (JCheckBox) tablJComp[0]; JTextField textFieldCurrentName= (JTextField) tablJComp[1]; JTextField textFieldCurrentMin= (JTextField) tablJComp[2]; JTextField textFieldCurrentMax=(JTextField) tablJComp[3]; grp1.addComponent(checkBoxCurrent, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE); grp1.addPreferredGap(ComponentPlacement.RELATED); grp1.addComponent(textFieldCurrentName, 20, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); grp1.addPreferredGap(ComponentPlacement.RELATED); grp1.addComponent(textFieldCurrentMin, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE); grp1.addPreferredGap(ComponentPlacement.RELATED); grp1.addComponent(textFieldCurrentMax, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE); if (j!=3){ grp1.addGap(40,40,40); } else{ grp1.addContainerGap(25, Short.MAX_VALUE); } } paralGroupHorPanelFields.addGroup(grp1); } JScrollPane scroll = new JScrollPane(panelFields,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); if(nROI>15){//so enable scrolling scroll = new JScrollPane(panelFields,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scroll.setPreferredSize(new Dimension(320,260)); } scroll.setBorder(null); SequentialGroup grpPanelFields=layout.createSequentialGroup(); grpPanelFields.addComponent(scroll); paralGroupHor.addGroup(grpPanelFields); //layout horizontal for buttons SequentialGroup grpButton = layout.createSequentialGroup(); grpButton.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); //grpButton.addGap(130); grpButton.addComponent(jButtonPlus, GroupLayout.PREFERRED_SIZE, 90, GroupLayout.PREFERRED_SIZE); grpButton.addPreferredGap(ComponentPlacement.RELATED); grpButton.addComponent(jButtonGenImg, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE); grpButton.addPreferredGap(ComponentPlacement.RELATED); grpButton.addComponent(jButtonLogLin, GroupLayout.PREFERRED_SIZE, 90, GroupLayout.PREFERRED_SIZE); grpButton.addPreferredGap(ComponentPlacement.RELATED); grpButton.addComponent(jButtonSave, GroupLayout.PREFERRED_SIZE, 90, GroupLayout.PREFERRED_SIZE); grpButton.addPreferredGap(ComponentPlacement.RELATED); grpButton.addComponent(jButtonSaveGup, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE); grpButton.addGap(70,70,70); paralGroupHor.addGroup(GroupLayout.Alignment.TRAILING, grpButton); //vertical Layout ParallelGroup paralGroup2Vert=layout.createParallelGroup(GroupLayout.Alignment.LEADING); SequentialGroup grpAll = layout.createSequentialGroup(); ParallelGroup gpChart = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); gpChart.addComponent(chartPanel); grpAll.addGroup(gpChart); ParallelGroup paralGroup2VertPanFields=layoutPanelFields.createParallelGroup(GroupLayout.Alignment.LEADING); SequentialGroup grpAllFields = layoutPanelFields.createSequentialGroup(); nbFieldsPerLine=3; for (int i=0; i<nbLines;i++){ ParallelGroup grpIntChannel = layoutPanelFields.createParallelGroup(GroupLayout.Alignment.BASELINE); if (i==nbLines-1) nbFieldsPerLine=(nROI%3); if (nbFieldsPerLine==0) nbFieldsPerLine=3; for(int j=0;j<nbFieldsPerLine;j++){ int currentField=i*3+j; JComponent[] tablJComp = (JComponent[]) vectButtonsSupp.get(currentField); JCheckBox checkBoxCurrent = (JCheckBox) tablJComp[0]; JTextField textFieldCurrentName= (JTextField) tablJComp[1]; JTextField textFieldCurrentMin= (JTextField) tablJComp[2]; JTextField textFieldCurrentMax= (JTextField) tablJComp[3]; grpIntChannel.addComponent(checkBoxCurrent); grpIntChannel.addComponent(textFieldCurrentName,GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE); grpIntChannel.addComponent(textFieldCurrentMin,GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE); grpIntChannel.addComponent(textFieldCurrentMax,GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE); } grpAllFields.addContainerGap(10, Short.MAX_VALUE).addGroup(grpIntChannel); grpAllFields.addPreferredGap(ComponentPlacement.RELATED); } grpAllFields.addGap(6, 6, 6); paralGroup2VertPanFields.addGroup(GroupLayout.Alignment.TRAILING,grpAllFields); ParallelGroup grpPanFields = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); grpPanFields.addComponent(scroll); grpAll.addGroup(grpPanFields); ParallelGroup grpButtons = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); grpButtons.addComponent(jButtonPlus, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE); grpButtons.addComponent(jButtonGenImg, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE); grpButtons.addComponent(jButtonLogLin, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE); grpButtons.addComponent(jButtonSave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE); grpButtons.addComponent(jButtonSaveGup, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE); grpAll.addContainerGap(10, Short.MAX_VALUE).addGroup(grpButtons); grpAll.addGap(6, 6, 6); paralGroup2Vert.addGroup(GroupLayout.Alignment.TRAILING,grpAll); layoutPanelFields.setHorizontalGroup(paralGroupHorPanelFields); layoutPanelFields.setVerticalGroup(paralGroup2VertPanFields); layout.setHorizontalGroup(paralGroupHor); layout.setVerticalGroup(paralGroup2Vert); pack(); } private void addField(){ JComponent[] buttonsToAdd= new JComponent[4]; buttonsToAdd[0] = new JCheckBox(); buttonsToAdd[1] = new JTextField(); buttonsToAdd[2] = new JTextField(); buttonsToAdd[3] = new JTextField(); vectButtonsSupp.add(buttonsToAdd); JCheckBox checkBoxCurrent = (JCheckBox) buttonsToAdd[0]; JTextField textFieldCurrentName= (JTextField) buttonsToAdd[1]; JTextField textFieldCurrentMin= (JTextField) buttonsToAdd[2]; JTextField textFieldCurrentMax=(JTextField) buttonsToAdd[3]; checkBoxCurrent.setText(tr("NA")); textFieldCurrentName.setText(tr("Name")); textFieldCurrentMin.setText(tr("Min")); textFieldCurrentMax.setText(tr("Max")); checkBoxCurrent.addItemListener(checkBoxListener); textFieldCurrentMin.getDocument().addDocumentListener(checkBoxListener); textFieldCurrentMax.getDocument().addDocumentListener(checkBoxListener); } private void addField(int ROI){ PrefsManager prefs=new PrefsManager(); JComponent[] buttonsToAdd= new JComponent[4]; buttonsToAdd[0] = new JCheckBox(); buttonsToAdd[1] = new JTextField(); buttonsToAdd[2] = new JTextField(); buttonsToAdd[3] = new JTextField(); vectButtonsSupp.add(buttonsToAdd); JCheckBox checkBoxCurrent = (JCheckBox) buttonsToAdd[0]; checkBoxCurrent.setSelected(prefs.getROIState(ROI)); JTextField textFieldCurrentName= (JTextField) buttonsToAdd[1]; JTextField textFieldCurrentMin= (JTextField) buttonsToAdd[2]; JTextField textFieldCurrentMax=(JTextField) buttonsToAdd[3]; checkBoxCurrent.setText(tr("NA")); textFieldCurrentName.setText(prefs.ijGetValue("IBA.roi"+String.valueOf(ROI)+".name","?")); textFieldCurrentMin.setText(prefs.ijGetValue("IBA.roi"+String.valueOf(ROI)+".min",Integer.toString(1))); textFieldCurrentMax.setText(prefs.ijGetValue("IBA.roi"+String.valueOf(ROI)+".max",Integer.toString(4095))); checkBoxCurrent.addItemListener(checkBoxListener); textFieldCurrentMin.getDocument().addDocumentListener(checkBoxListener); textFieldCurrentMax.getDocument().addDocumentListener(checkBoxListener); updateLinesOnChart(checkBoxCurrent); } private void jButtonMoreActionPerformed(java.awt.event.ActionEvent evt) { initComponents(vectButtonsSupp.size()+1); } private void jButtonGenImgActionPerformed(java.awt.event.ActionEvent evt) { // generates images for all selected checkbox //First which checkbox is selected // number of checkboxes = vectButtonsSupp.size() // the whole is taken if JComp[0] is selected and 1,2 et 3 are corrects try { GeneratedMap[] tabImgGenFromSpectra; Vector vectValues = getValuesMinMaxNames(false,true,true); ArrayList<String> nameOfImgGen = (ArrayList<String>) vectValues.get(0); ArrayList<float[]> minMaxSpectra = (ArrayList<float[]>) vectValues.get(1); float[][] minMaxSpectraArray = minMaxSpectra.toArray(new float[minMaxSpectra.size()][2]); if(minMaxSpectraArray.length>0){ tabImgGenFromSpectra = drawSpectra.elementMaps(minMaxSpectraArray); GeneratedMap imgToShow=tabImgGenFromSpectra[0]; imgToShow.setTitle(nameOfImgGen.get(0)); int nbOfOtherImg=tabImgGenFromSpectra.length-1; if(nbOfOtherImg>0){//check if more than one image to show GeneratedMap[] tabOtherImgToShow = new GeneratedMap[nbOfOtherImg]; for (int i=0;i<nbOfOtherImg;i++){ tabOtherImgToShow[i]=tabImgGenFromSpectra[i+1]; tabOtherImgToShow[i].setTitle(nameOfImgGen.get(i+1)); } imgToShow.showWithOtherImgs(tabOtherImgToShow); } else{ imgToShow.show(); } } } catch(NullPointerException e){} } public ArrayList<JCheckBox> getSelectedCheckBox(){ ArrayList<JCheckBox> selectedCheckboxes = new ArrayList<>(); for (Object vectButtonsSupp1 : vectButtonsSupp) { JComponent[] jComponentTable; jComponentTable = (JComponent[]) vectButtonsSupp1; JCheckBox currentCheckbox = (JCheckBox) jComponentTable[0]; if(currentCheckbox.isSelected()){ selectedCheckboxes.add(currentCheckbox); } } return selectedCheckboxes; } public JCheckBox getLastActivatedCheckBox(){ return checkBoxListener.getLastCheckBoxActivated(); } public void updateLinesOnChart(JCheckBox checkBoxToUpdate){ checkBoxListener.update(checkBoxToUpdate); } /** * Gets the min, max and name values if checkboxs are selected * @param minOrMax if false min AND max have to be correct * @param nameIsImportant if false the method will not check the name * @return a vector containing the arraylist of the names and the arraylist of the [min,max] */ public Vector getValuesMinMaxNames(boolean minOrMax, boolean nameIsImportant, boolean showError){ ArrayList<String> nameOfImgGen = new ArrayList<>(); ArrayList<float[]> minMaxSpectra = new ArrayList<>(); boolean errorShowed1=false, errorShowed2=false, errorShowed3=false, errorShowed4=false; for (Object vectButtonsSupp1 : vectButtonsSupp) { JComponent[] tabJCompToCheck = (JComponent[]) vectButtonsSupp1; JCheckBox checkBoxCurrent = (JCheckBox) tabJCompToCheck[0]; if(checkBoxCurrent.isSelected()){ JTextField name= (JTextField) tabJCompToCheck[1]; JTextField min= (JTextField) tabJCompToCheck[2]; JTextField max=(JTextField) tabJCompToCheck[3]; if(!( (min.getText().equals(tr("Min")) && max.getText().equals(tr("Max"))) )){ if(minOrMax|| !((min.getText().equals(tr("Min")) || max.getText().equals(tr("Max"))))){ if ( !nameIsImportant || !(name.getText().equals(tr("Name"))) ) { float start=-1; float end=-1; try { start = Float.valueOf(min.getText()); } catch(NumberFormatException e){ if(showError && !errorShowed1){ errorShowed1=true; IJ.error(tr("Put numbers in the Min and Max text fields")); } } try { end = Float.valueOf(max.getText()); } catch(NumberFormatException e){} if(minOrMax||start<end){ if (drawSpectra.isAvailable(start) || drawSpectra.isAvailable(end)){ if (!drawSpectra.isAvailable(start)){ start=drawSpectra.getEnergies()[0]; } else if(!drawSpectra.isAvailable(end)) { int length = drawSpectra.getEnergies().length; end=drawSpectra.getEnergies()[length-1]; } if( !nameIsImportant || !nameOfImgGen.contains(name.getText()) ){//useful to avoid saving problems if( !nameIsImportant || !(name.getText().contains("_")) ){//useful to avoid restoring problems nameOfImgGen.add(name.getText()); float[] tabMinMax = new float[2]; tabMinMax[0]=start; tabMinMax[1]=end; minMaxSpectra.add(tabMinMax); } else{ if(showError && !errorShowed1 && !errorShowed2){ IJ.error(tr("The character '_' is not allowed")); errorShowed2=true; } } } else{ if(showError && !errorShowed1 && !errorShowed2 && !errorShowed3){ IJ.error(tr("Give different title for each picture please")); errorShowed3=true; } } } } } else { if(showError && !errorShowed1 && !errorShowed2 && !errorShowed3 && !errorShowed4){ IJ.error(tr("Give names please (other that Name)")); errorShowed4=true; } } } } } } Vector vectToReturn = new Vector(); vectToReturn.add(nameOfImgGen); vectToReturn.add(minMaxSpectra); return vectToReturn; } private String selectDirectory(){ File selectedFile = null; PrefsManager prefs=new PrefsManager(); prefs.setPreference(); File myDir=new File(prefs.getLastUsedDirectory()); JFileChooser fileChooser = new JFileChooser(myDir.getAbsolutePath()); IJ.log("start "+prefs.getLastUsedDirectory()); fileChooser.setCurrentDirectory(myDir); fileChooser.setMultiSelectionEnabled(false); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int option = fileChooser.showDialog(null,tr("Select directory")); if (option == JFileChooser.APPROVE_OPTION) { selectedFile = fileChooser.getSelectedFile(); // if the user accidently clicks on a file, the parent directory is selected. if (!selectedFile.isDirectory()) { selectedFile = selectedFile.getParentFile(); } } if (selectedFile!=null){ prefs.saveDirectory(selectedFile.getAbsolutePath()); return selectedFile.getAbsolutePath()+"/";} return myDir.getAbsolutePath(); } private void jButtonLogLinActionPerformed(java.awt.event.ActionEvent evt) { XYPlot plot = (XYPlot) chart.getPlot(); if (!yIsLog){ plot.setRangeAxis(new LogarithmicAxis(tr("X-ray intensity (counts)"))); yIsLog=true; } else{ plot.setRangeAxis(new NumberAxis(tr("X-ray intensity (counts)"))); yIsLog=false; } } private void jButtonSaveActionPerformed(java.awt.event.ActionEvent evt) { //String directory=selectDirectory(); //if(directory!=null){ // drawSpectra.save(directory); //} PrefsManager prefs=new PrefsManager(); } /** * @see ADC.saveGupixSpectra */ private void jButtonSaveGupActionPerformed(java.awt.event.ActionEvent evt) { String directory=selectDirectory(); //IJ.log("Saving: "); if(directory!=null){ File f=new File(drawSpectra.getPath()); String nameToSave=f.getName()+".gup"; IJ.log("File saved: "+nameToSave); //IJ.log("Path: "+directory+nameToSave); drawSpectra.getADC().saveGupixSpectra(directory+nameToSave); } } public static String tr(String strToTranslate){ return parentWindow.tr(strToTranslate); } public float getRealXValue(double value, boolean rightIncluded){ if(drawSpectra.isAvailable((float) value)){ int indiceNearValue=drawSpectra.getIndex((float)value,rightIncluded); return drawSpectra.getEnergies()[indiceNearValue]; } return -1; } public JTextField getField(JCheckBox checkBoxOfInterest,String nameField){ for (Object vectButtonsSupp1 : vectButtonsSupp) { JComponent[] tabJComp = (JComponent[]) vectButtonsSupp1; JCheckBox checkBoxCurrent = (JCheckBox) tabJComp[0]; if(checkBoxCurrent==checkBoxOfInterest){ int indexOfInterest=-1; switch(nameField){ case "Name" : indexOfInterest=1;break; case "Min" : indexOfInterest=2; break; case "Max" : indexOfInterest=3;break; } if (indexOfInterest!=-1){ return (JTextField) tabJComp[indexOfInterest]; } } } return null; } public JCheckBox getCheckBoxRelatedToField(String text){ for (Object vectButtonsSupp1 : vectButtonsSupp) { JComponent[] tabJComp = (JComponent[]) vectButtonsSupp1; for(int j=2;j<4;j++){ JTextField currentTextField = (JTextField) tabJComp[j]; if(currentTextField.getText().equals(text)) return (JCheckBox) tabJComp[0]; } } return null; } public String checkCalib(){ if(drawSpectra.isScaled()) return "Photon energy (keV)"; return "Photon energy (channels)"; } // Variables declaration - do not modify private Vector vectButtonsSupp=new Vector(); private JButton jButtonPlus; private JButton jButtonGenImg; private JButton jButtonLogLin; private JButton jButtonSave; private JButton jButtonSaveGup; // End of variables declaration }