Update of /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/aide
In directory sc8-pr-cvs1:/tmp/cvs-serv5622/aide
Added Files:
FudaaAidePreferencesPanel.java FudaaAstuces.java
FudaaAstucesDialog.java FudaaAstucesPanel.java astuces.txt
Log Message:
Creation d'un module pour l'aide astuce et pref
--- NEW FILE: FudaaAidePreferencesPanel.java ---
/*
* @file FudaaPreferencesPanel.java
* @creation 2001-09-13
* @modification $Date: 2003/07/04 14:58:10 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.commun.aide;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JComponent;
import javax.swing.JRadioButton;
import javax.swing.border.Border;
import com.memoire.bu.BuAbstractPreferencesPanel;
import com.memoire.bu.BuBorderLayout;
import com.memoire.bu.BuCheckBox;
import com.memoire.bu.BuCommonImplementation;
import com.memoire.bu.BuGridLayout;
import com.memoire.bu.BuLabel;
import com.memoire.bu.BuPanel;
import com.memoire.bu.BuPreferences;
import com.memoire.bu.BuTextField;
import com.memoire.bu.BuVerticalLayout;
import org.fudaa.fudaa.commun.FudaaImplementation;
import org.fudaa.fudaa.commun.FudaaLib;
/**
* Panneau de preferences pour Fudaa.
*
* @version $Revision: 1.1 $ $Date: 2003/07/04 14:58:10 $ by $Author: deniger $
* @author Fred Deniger
*/
public class FudaaAidePreferencesPanel
extends BuAbstractPreferencesPanel
implements ActionListener
{
/**
* Utiliser l'aide locale
*/
private JRadioButton cbAideLocale_;
/**
* Utiliser l'aide du site Fudaa
*/
private JRadioButton cbAideSiteFudaa_;
/**
* Utiliser une autre aide
*/
private JRadioButton cbAideExterne_;
/**
* Le chemin d'acces a l'aide
*/
private BuTextField urlAideExterne_;
/**
* La checkbox controlant l'aparition des astuces au demarrage
*/
private BuCheckBox cbAstuceVisible_;
/**
* L'application concernee.
*/
BuCommonImplementation app_;
/**
* Les options.
*/
BuPreferences options_;
/**
* Les variables utilisees dans les preferences.
*/
private static final String LOCALE="local";
private static final String SITE_FUDAA="site_fudaa";
private static final String AUTRE="autre";
/**
* Les noms des preferences utilisees.
*/
private static final String AIDE_SITE_TYPE_PREF="aide.site.type";
private static final String AIDE_URL_AUTRE_PREF="aide.site.url.autre";
private static final String ASTUCES_VISIBLES_PREF="astuce.visible";
/**
* Renvoie pour les preferences <code>_options</code>, le chemin d'acces
* a l'aide.
*/
public static String getHelpUrl( BuPreferences _options)
{
String type=_options.getStringProperty(AIDE_SITE_TYPE_PREF, LOCALE);
if( AUTRE.equals(type) )
return _options.getStringProperty(AIDE_URL_AUTRE_PREF,
FudaaImplementation.LOCAL_MAN);
else if ( SITE_FUDAA.equals(type) )
return FudaaImplementation.REMOTE_MAN;
else
return FudaaImplementation.LOCAL_MAN;
}
/**
* Renvoie <code>true</code> si les astuces sont declares comme visibles
* au demarrage dans les preferences <code>_options</code>.
*/
public static boolean isAstucesVisibles( BuPreferences _options)
{
return _options.getBooleanProperty(ASTUCES_VISIBLES_PREF,true);
}
/**
* Modifie la valeur concernant l'apparition automatique des astuces
* au demarrage de l'application.
*/
public static void setAstucesVisibles( BuPreferences _options,boolean _b)
{
_options.putBooleanProperty(ASTUCES_VISIBLES_PREF,_b);
_options.writeIniFile();
}
/**
* Initialise la bordure utilisee par les panels principaux: panel du
* format de page et le panel des entetes et pieds de page.
*
* @param _titre le titre ajoute a la bordure.
*/
private static final Border initTitreBorder(String _titre)
{
return BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(FudaaLib.geti18n(_titre)),
BorderFactory.createEmptyBorder(5,5,5,5));
}
/**
* Initialisation de l'application et des composant swing.
*
* @param _app
*/
public FudaaAidePreferencesPanel(BuCommonImplementation _app,
BuPreferences _options)
{
super();
setLayout(new BuVerticalLayout(5,true,true));
setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
app_ = _app;
options_ = _options;
//astuces
BuPanel panelAstuce=new BuPanel();
panelAstuce.setLayout(new BuBorderLayout());
panelAstuce.setBorder(initTitreBorder("Astuces"));
cbAstuceVisible_ = new BuCheckBox
(FudaaLib.geti18n("Astuces au démarrage"));
panelAstuce.add(cbAstuceVisible_,BuBorderLayout.CENTER);
add(panelAstuce);
//aide
BuPanel panelAide = new BuPanel();
panelAide.setLayout(new BuGridLayout(2,5,5));
panelAide.setBorder(initTitreBorder("Aide ressources"));
cbAideLocale_=new JRadioButton(FudaaLib.geti18n("Locale"));
cbAideLocale_.setName("HELP_INTERNAL" );
cbAideLocale_.addActionListener(this);
panelAide.add(cbAideLocale_);
panelAide.add(getBuLabel(FudaaImplementation.LOCAL_MAN));
cbAideSiteFudaa_=new JRadioButton(FudaaLib.geti18n("Site Fudaa"));
cbAideSiteFudaa_.setName("HELP_SITE" );
cbAideSiteFudaa_.addActionListener(this);
panelAide.add(cbAideSiteFudaa_);
panelAide.add(getBuLabel(FudaaImplementation.REMOTE_MAN));
cbAideExterne_=new JRadioButton(FudaaLib.geti18n("Autre"));
cbAideExterne_.setName("HELP_OTHER");
cbAideExterne_.addActionListener(this);
urlAideExterne_=new BuTextField(
options_.getStringProperty(AIDE_URL_AUTRE_PREF));
urlAideExterne_.setEditable(false);
panelAide.add(cbAideExterne_);
panelAide.add(urlAideExterne_);
ButtonGroup bg=new ButtonGroup();
bg.add(cbAideLocale_);
bg.add(cbAideSiteFudaa_);
bg.add(cbAideExterne_);
add(panelAide);
updateComponents();
}
private BuLabel getBuLabel(String _txt)
{
BuLabel r=new BuLabel(_txt);
r.setVerticalAlignment(BuLabel.CENTER);
return r;
}
/**
* ....
*/
private void fillTable()
{
options_.putStringProperty(AIDE_SITE_TYPE_PREF,getType());
if( AUTRE.equals(getType()) )
{
String url=urlAideExterne_.getText();
if( (url ==null) || (url.length()==0) )
url=FudaaImplementation.LOCAL_MAN;
else if( !url.endsWith("/") )
url=url+"/";
options_.putStringProperty(AIDE_URL_AUTRE_PREF,url);
}
options_.putBooleanProperty(ASTUCES_VISIBLES_PREF,
cbAstuceVisible_.isSelected());
}
private String getType()
{
if( cbAideExterne_.isSelected() )
return AUTRE;
else if(cbAideSiteFudaa_.isSelected() )
return SITE_FUDAA;
else
return LOCALE;
}
/**
* ....
*/
private void updateComponents()
{
String type=options_.getStringProperty(AIDE_SITE_TYPE_PREF,LOCALE);
urlAideExterne_.setEditable(false);
if( AUTRE.equals(type) )
{
cbAideExterne_.setSelected(true);
urlAideExterne_.setEditable(true);
}
else if ( SITE_FUDAA.equals(type) )
{
cbAideSiteFudaa_.setSelected(true);
}
else
{
cbAideLocale_.setSelected(true);
}
cbAstuceVisible_.setSelected(
options_.getBooleanProperty(ASTUCES_VISIBLES_PREF,true));
}
/* private String getPreferencesHelpUrl()
{
return getPreferencesHelpUrl(options_);
} */
/**
* Le titre du panel.
*
* @return "Fudaa"
*/
public String getTitle()
{
return FudaaLib.geti18n("aide");
}
/**
* Retourne true.
*
* @return true
*/
public boolean isPreferencesValidable()
{
return true;
}
/**
* Retourne false.
*
* @return false
*/
public boolean isPreferencesApplyable()
{
return false;
}
/**
* Retourne false.
*
* @return false
*/
public boolean isPreferencesCancelable()
{
return true;
}
/**
* Gestion des evenements.
*
* @param _evt
*/
public void actionPerformed(ActionEvent _evt)
{
JComponent source = (JComponent)_evt.getSource();
System.err.println("SOURCE=" + source.getName());
System.err.println("ACTION=" + _evt.getActionCommand());
if( "HELP_OTHER".equals(source.getName()) )
urlAideExterne_.setEditable(true);
else
urlAideExterne_.setEditable(false);
}
/**
* Enregistrement des modification apportees dans ce panel.
*/
public void validatePreferences()
{
fillTable();
options_.writeIniFile();
updateComponents();
app_.getInformationsSoftware().man=getHelpUrl(options_);
}
/**
* Annuler les modifications.
*/
public void cancelPreferences()
{
options_.readIniFile();
updateComponents();
}
}
--- NEW FILE: FudaaAstuces.java ---
/*
* @file FudaaAstuces.java
* @creation 2001-09-01
* @modification $Date: 2003/07/04 14:58:10 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.commun.aide;
import com.memoire.bu.BuPreferences;
import org.fudaa.fudaa.commun.FudaaPreferences;
import java.io.*;
/**
* Classe de gestion des astuces
*
* @version $Revision: 1.1 $ $Date: 2003/07/04 14:58:10 $ by $Author: deniger $
* @author Fred Deniger
*/
public class FudaaAstuces
{
/**
* Singleton de FudaaAstuces.
*/
public static FudaaAstuces FUDAA = new FudaaAstuces();
/**
* Le nom du fichier d'astuces.
*/
protected final static String NOM_FICHIER = "astuces.txt";
/**
* La variable utilisee dans les fichiers de ressources des applications.
*/
protected final static String NOM_VARIABLE = "astuce.nombre";
/**
* Choisit au hasard un entier strictement positif inferieur a _nombreMax.
* Si nombreMax_ est inferieur ou egal a 1, 1 est renvoye.
*
* @param _nombreMax
* @return entier strictement positif inferieur a _nombreMax
*/
public static int hasard(int _nombreMax)
{
//choisi dans l'intervalle [1,_nombreMax]
if(_nombreMax < 2)
{
return 1;
}
return (int)(Math.round(Math.random() * (_nombreMax - 1))) + 1;
}
/**
* Retourne l'astuce positionne a la place i.
*
* @param i
* @return astuce
*/
public String getAstuce(int i)
{
return lecture(i);
}
/**
* Retourne l'astuce suivante.
*
* @param i
* @return La valeur AstuceRecursif
*/
public String getAstuceRecursif(int i)
{
if((i < 1) || (i > getNombreLigneTotal()))
{
return "\nPas d'astuces trouvées";
}
int nombreInf = 0;
if(getParent() != null)
{
nombreInf = getParent().getNombreLigneTotal();
}
if(i > nombreInf)
{
return getAstuce(i - nombreInf);
}
else
{
if(getParent() != null)
{
return getParent().getAstuceRecursif(i);
}
}
return "\nPas d'astuce trouvée";
}
/**
* Calcule le nombre d'astuces total, choisi un nombre au hasard dans
* [0,nombreTotalAstuces] et retourne l'astuce correspondante.
*
* @return astuce au hasard.
*/
public String getAstuceHasard()
{
return getAstuceRecursif(hasard(getNombreLigneTotal()));
}
/**
* Retourne le nombre d'astuces.
*
* @return La valeur NombreLigne
*/
public int getNombreLigne()
{
String temp = (PREF().getStringProperty(NOM_VARIABLE)).trim();
if((temp == null) || ("".equals(temp)) || ("0".equals(temp)))
{
lecture(0);
temp = PREF().getStringProperty(NOM_VARIABLE);
}
return Integer.parseInt(temp);
}
/**
* Retourne la somme de tous les nombres de lignes des astuces parents.
*
* @return La valeur NombreLigneTotal
*/
public int getNombreLigneTotal()
{
int nbLigne = getNombreLigne();
if(getParent() != null)
{
nbLigne += getParent().getNombreLigneTotal();
}
return nbLigne;
}
/**
* Retourne le FudaaAstuces parent.
*
* @return null
*/
protected FudaaAstuces getParent()
{
return null;
}
/**
* Les preferences utilisees a ce niveau.
*
* @return FudaaPreferences.FUDAA
*/
protected BuPreferences PREF()
{
return FudaaPreferences.FUDAA;
}
/**
* Lit la ligne i dans le fichier d'astuces. En plus, Mise a jour de la valeur
* de NOM_VARIABLE dans les Preferences (PREF()).
*
* @param i
* @return Astuce a la place i.
*/
protected String lecture(int i)
{
String retour = "\nAstuce non trouvée.";
int nombreLigneLu = 0;
try
{
LineNumberReader lu = new LineNumberReader(
new InputStreamReader(new BufferedInputStream
(getClass().getResourceAsStream(NOM_FICHIER))));
while(lu.ready())
{
String ligneLu = lu.readLine();
if((ligneLu == null) || (ligneLu.equals("")))
{
break;
}
if(++nombreLigneLu == i)
{
retour = ligneLu;
}
}
PREF().putIntegerProperty(NOM_VARIABLE, nombreLigneLu);
PREF().writeIniFile();
return retour;
}
catch(Exception _exception)
{
return retour;
}
}
/**
* Main
*
* @param argv
*/
/*
public static void main(String argv[])
{
for(int i = 0; i < 20; i++)
{
System.out.println("num "+i);
System.out.println(hasard(i));
}
}*/
}
--- NEW FILE: FudaaAstucesDialog.java ---
/*
* @file FudaaAstucesDialog.java
* @creation 2001-09-01
* @modification $Date: 2003/07/04 14:58:10 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.commun.aide;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.border.*;
import com.memoire.bu.*;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.ressource.*;
/**
* Fenetre dialohue pour afficher les astuces
*
* @version $Revision: 1.1 $ $Date: 2003/07/04 14:58:10 $ by $Author: deniger $
* @author Fred Deniger
*/
public class FudaaAstucesDialog
extends BuDialog
{
/**
* CheckBox pour valider ou non l'apparition des astuces.
*/
private JCheckBox cbShowNextTime_;
/**
* Le panel d'affichage.
*/
private FudaaAstucesPanel textePanel_;
/**
* La chaine correspondant a fermer.
*/
private final static String FERMER = FudaaLib.geti18n("Fermer");
/**
* L'icone fermer.
*/
private final static BuIcon BOUTON_FERMER = FudaaLib.getIcon("fermer");
/**
* L'icone suivant:nouvelle astuce.
*/
private final static BuIcon BOUTON_SUIVANT = FudaaLib.getIcon("avancer");
/**
* La chaine correspondant a afficher une autre astuce.
*/
private final static String SUIVANT = FudaaLib.geti18n("Autre Astuce");
/**
* Chaine pour ne plus voir les astuces.
*/
private final static String VOIR_ASTUCE = FudaaLib.geti18n(
"Toujours afficher les astuces");
/**
* Les preferences utilisees.
*/
private BuPreferences options_;
/**
* initialisation de textPanel_ et affichage.
*
* @param _parent
* @param _isoft
* @param _message
*/
public FudaaAstucesDialog(BuPreferences _options,BuCommonInterface _parent,
BuInformationsSoftware _isoft, FudaaAstucesPanel _message)
{
super(_parent, _isoft, FudaaLib.geti18n("Astuces"), _message);
options_=_options;
textePanel_ = _message;
cbShowNextTime_ = new BuCheckBox(VOIR_ASTUCE);
cbShowNextTime_.setSelected(
FudaaAidePreferencesPanel.isAstucesVisibles(options_));
BuButton btFermer = new BuButton(BOUTON_FERMER, FERMER);
btFermer.setActionCommand("FERMER");
getRootPane().setDefaultButton(btFermer);
BuButton btSuivant = new BuButton(BOUTON_SUIVANT, SUIVANT);
btSuivant.setActionCommand("SUIVANT");
BuPanel sousBoutons = new BuPanel();
sousBoutons.setLayout(new BuHorizontalLayout(5, true, true));
sousBoutons.add(btSuivant);
sousBoutons.add(btFermer);
BuPanel boutons = new BuPanel();
boutons.setLayout(new BuBorderLayout(5, 0));
boutons.add(sousBoutons, BuBorderLayout.EAST);
boutons.add(cbShowNextTime_, BuBorderLayout.WEST);
btSuivant.addActionListener(this);
btFermer.addActionListener(this);
content_.add(boutons, BorderLayout.SOUTH); pack();
}
/**
* Fonction appelée lors de la fermeture du dialogue.
*/
public void fermer()
{
reponse_ = JOptionPane.CLOSED_OPTION;
FudaaAidePreferencesPanel.setAstucesVisibles(
options_,cbShowNextTime_.isSelected());
dispose();
}
/**
* Gestion des actions sur la croix.
*
* @param _e
*/
protected void processWindowEvent(WindowEvent _e)
{
if(_e.getID() == WindowEvent.WINDOW_CLOSING)
{
fermer();
}
}
/**
* retourne la valeur Component de FudaaAstucesDialog object
*
* @return La valeur Component
*/
public JComponent getComponent()
{
return textePanel_;
}
/**
* Gestion des evenements sur les boutons fermer et suivant.
*
* @param _evt
*/
public void actionPerformed(ActionEvent _evt)
{
String source = _evt.getActionCommand();
if("SUIVANT".equals(source))
{
reponse_ = JOptionPane.OK_OPTION;
textePanel_.changeTexte();
}
if("FERMER".equals(source))
{
fermer();
}
}
/**
* Affiche la boite de dialogue de FudaaAstuces.
*
* @param _app
* @param _astuces
* @return
*/
public static int showDialog(BuPreferences _pref,BuCommonImplementation _app,
FudaaAstuces _astuces)
{
return new FudaaAstucesDialog
(_pref,_app, _app.getInformationsSoftware(), new FudaaAstucesPanel(_astuces))
.activate();
}
/**
* Le main.
*
* @param _args The command line arguments
*/
public static void main(String[] _args)
{
String essai="essai";
essai=null;
//showDialog(new BuApplication().getImplementation(), FudaaAstuces.FUDAA);
System.out.println("ok");
System.gc();
System.out.println("ok");
}
}
--- NEW FILE: FudaaAstucesPanel.java ---
/*
* @file FudaaAstucesPanel.java
* @creation 2000-09-01
* @modification $Date: 2003/07/04 14:58:10 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.commun.aide;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import com.memoire.bu.*;
import org.fudaa.fudaa.commun.FudaaLib;
import java.util.Calendar;
import java.util.Vector;
/**
* Classe de création du Panel d'affichage des astuces
*
* @version $Revision: 1.1 $ $Date: 2003/07/04 14:58:10 $ by $Author: deniger $
* @author Fred Deniger
*/
public class FudaaAstucesPanel extends BuPanel
{
// variables privees
/**
* Astuces utilisees.
*/
private FudaaAstuces astuce_;
/**
* Le label contenant les astuces.
*/
private BuLabelMultiLine texte_;
/**
* L'image de fond.
*/
private BuPicture imageFond_;
/**
* Chaine correspondant a la fin du fichier image.
*/
private final static String FIN_NOM_IMAGE = "_astuce.jpg";
/**
* Initialisation: texte,astuce et image.
*
* @param _astuce
*/
public FudaaAstucesPanel(FudaaAstuces _astuce)
{
super();
setBorder(new EmptyBorder(15,0, 0, 0));
initialiseEcran();
astuce_ = _astuce;
changeTexte();
}
/**
* Initialisation de l'image de fond puis du texte.
*/
private void initialiseEcran()
{
setLayout(new BuOverlayLayout());
buildImageFond();
texte_ = new BuLabelMultiLine("?");
texte_.setOpaque(false);
texte_.setBorder(new EmptyBorder(5, 5, 5, 5));
//texte_.setFont(BuLib.deriveFont("Label",Font.PLAIN,0));
texte_.setFont(new Font("SansSerif", Font.PLAIN, 12));
//texte_.setSize(imageFond_.getPreferredSize());
add(texte_);
add(imageFond_);
}
/**
* Choisit une image en fonction du mois. Les images sont dans le fichier
* astuces.
*/
private void buildImageFond()
{
String mois = String.valueOf(Calendar.getInstance().get(Calendar.MONTH) + 1);
imageFond_ = new BuPicture
(FudaaLib.getIcon("astuces/" +
mois + FIN_NOM_IMAGE));
imageFond_.setMode(BuPicture.SCALE);
}
/**
* @return imageFond_
*/
public BuPicture getImageFond()
{
return imageFond_;
}
/**
* Choisit une astuce au hasard et
*/
public void changeTexte()
{
String t = astuce_.getAstuceHasard();
for(int i = 35; i < t.length(); i += 35)
{
int j = t.indexOf(' ', i);
if(j >= 0)
{
t = t.substring(0, j) + '\n' + t.substring(j + 1);
}
if(j > i)
{
i = j;
}
}
texte_.setText(t);
}
/*
public static void main(String[] argv)
{
FudaaAstucesPanel panel=new FudaaAstucesPanel(FudaaAstuces.FUDAA);
JFrame fen=new JFrame("essai");
fen.getContentPane().add(panel);
fen.pack();
fen.show();
}*/
}
--- NEW FILE: astuces.txt ---
(This appears to be a binary file; contents omitted.)
|