/*
*Copyright 2007, 2011 CCLS Columbia University (USA), LIFO University of Orl��ans (France), BRGM (France)
*
*Authors: Cyril Nortet, Xiangrong Kong, Ansaf Salleb-Aouissi, Christel Vrain, Daniel Cassard
*
*This file is part of QuantMiner.
*
*QuantMiner is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
*
*QuantMiner is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
*You should have received a copy of the GNU General Public License along with QuantMiner. If not, see <http://www.gnu.org/licenses/>.
*/
package src.graphicalInterface;
import javax.swing.*;
import javax.swing.filechooser.*;
import java.io.*;
import java.util.ArrayList;
import java.awt.*;
import javax.sound.sampled.*;
import src.tools.*;
public class ToolsInterface {
public static String DialogSauvegardeFichier(Component parent, String sCheminDossier, String sDescriptionExtension, String sExtension) {
JFileChooser fenetreChoixFichier = null;
FiltreChoiceFiles filtreChoix = null;
int iResultatChoixFichier = 0;
File fichierChoisi = null;
String sFichierChoisi = null;
boolean bFichierCibleOK = false;
fenetreChoixFichier = new JFileChooser(sCheminDossier);
fenetreChoixFichier.setMultiSelectionEnabled(false);
fenetreChoixFichier.setAcceptAllFileFilterUsed(false);
filtreChoix = new FiltreChoiceFiles(sDescriptionExtension);
filtreChoix.AjouterExtension(sExtension);
fenetreChoixFichier.setFileFilter(filtreChoix);
bFichierCibleOK = false;
iResultatChoixFichier = fenetreChoixFichier.showSaveDialog(parent);
if (iResultatChoixFichier == JFileChooser.APPROVE_OPTION) {
fichierChoisi = fenetreChoixFichier.getSelectedFile();
if (fichierChoisi != null) {
sFichierChoisi = fichierChoisi.getAbsolutePath();
// Correction de l'extension si besoin :
sFichierChoisi = FileTools.AssurerBonneExtension(sFichierChoisi, sExtension);
fichierChoisi = new File(sFichierChoisi);
if ( fichierChoisi.exists() )
bFichierCibleOK = ( JOptionPane.showConfirmDialog(
parent,
"This file exists, do you want to replace it?",
"Confirmation replace file.",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE ) == JOptionPane.YES_OPTION );
else
bFichierCibleOK = true;
}
}
if (bFichierCibleOK)
return sFichierChoisi;
else
return null;
}
public static String DialogOuvertureFichier(Component parent, String sCheminDossier, ArrayList<String> sDescription, ArrayList<String> sExtention){//, String sDescriptionExtension, String sExtension) {
JFileChooser fenetreChoixFichier = null;
FiltreChoiceFiles filtreChoix = null;
int iResultatChoixFichier = 0;
File fichierChoisi = null;
String sFichierChoisi = null;
boolean bFichierCibleOK = false;
fenetreChoixFichier = new JFileChooser(sCheminDossier);
fenetreChoixFichier.setMultiSelectionEnabled(false);
fenetreChoixFichier.setAcceptAllFileFilterUsed(false);
assert(sDescription.size() == sDescription.size());
for (int i =0; i < sDescription.size(); i++)
{
filtreChoix = new FiltreChoiceFiles(sDescription.get(i));
filtreChoix.AjouterExtension(sExtention.get(i));
fenetreChoixFichier.addChoosableFileFilter(filtreChoix);
}
bFichierCibleOK = false;
iResultatChoixFichier = fenetreChoixFichier.showOpenDialog(parent);
if (iResultatChoixFichier == JFileChooser.APPROVE_OPTION) {
fichierChoisi = fenetreChoixFichier.getSelectedFile();
if (fichierChoisi != null) {
sFichierChoisi = fichierChoisi.getAbsolutePath();
bFichierCibleOK = true;
}
}
if (bFichierCibleOK)
return sFichierChoisi;
else
return null;
}
// Classe permettant la correction de la saisie dans un JTextField d'un nombre contraint � un intervalle :
public static class VerifieurTextFieldIntervalleFloat extends InputVerifier {
float m_fValeurMin = 0.0f;
float m_fValeurMax = 0.0f;
public VerifieurTextFieldIntervalleFloat(float fValeurMin, float fValeurMax) {
super();
m_fValeurMin = fValeurMin;
m_fValeurMax = fValeurMax;
}
public boolean verify(JComponent input) {
float fValeur = 0.0f;
// V�rification de la valeur de support minimal saisie :
if (input instanceof JTextField) {
try {
fValeur = Float.parseFloat( ((JTextField)input).getText() );
}
catch (NumberFormatException e) {
return false;
}
if (fValeur > m_fValeurMax)
((JTextField)input).setText( String.valueOf(m_fValeurMax) );
if (fValeur < m_fValeurMin)
((JTextField)input).setText( String.valueOf(m_fValeurMin) );
return true;
}
return true;
}
}
public static void JouerSon(String sCheminFichierSon) { //play sound
File fichierSon = null;
AudioInputStream audioInputStream = null;
AudioFormat audioFormat = null;
SourceDataLine ligne = null;
DataLine.Info info = null;
int iNombreOctetsLus = 0;
byte[] tBuffer = new byte[128000];
fichierSon = new File(sCheminFichierSon);
try {
audioInputStream = AudioSystem.getAudioInputStream(fichierSon);
}
catch (Exception e) { e.printStackTrace(); return; }
audioFormat = audioInputStream.getFormat();
info = new DataLine.Info(SourceDataLine.class, audioFormat);
try {
ligne = (SourceDataLine)AudioSystem.getLine(info);
ligne.open(audioFormat);
}
catch (LineUnavailableException e) { return; }
catch (Exception e) { return; }
ligne.start();
while (iNombreOctetsLus != -1) {
try {
iNombreOctetsLus = audioInputStream.read(tBuffer, 0, tBuffer.length);
}
catch (IOException e) {
iNombreOctetsLus = -1;
}
if (iNombreOctetsLus > 0) {
int nBytesWritten = ligne.write(tBuffer, 0, iNombreOctetsLus);
}
}
ligne.drain();
ligne.close();
}
}