Thread: [queryviewer-devel] queryviewer/src/net/sourceforge/queryviewer/ui/event AbstractControler.java,NONE
Status: Alpha
Brought to you by:
avdyk
From: <av...@us...> - 2003-06-16 07:46:18
|
Update of /cvsroot/queryviewer/queryviewer/src/net/sourceforge/queryviewer/ui/event In directory sc8-pr-cvs1:/tmp/cvs-serv12467 Added Files: AbstractControler.java CloseControler.java ControlerFactory.java OpenControler.java QueryActions.java QueryControler.java QuitControler.java Log Message: ajout des controleurs --- NEW FILE: AbstractControler.java --- package net.sourceforge.queryviewer.ui.event; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import net.sourceforge.queryviewer.Query; import net.sourceforge.queryviewer.ui.ViewInfo; /** * Classe mère de tous les contrôles du QueryViewer. * Pour que les sous-classe fonctionnent correctement, il va mettre à jour le Map tel que: * <ul> * <li><b>NAME</b> la clé pour stocker le nom de l'action (utilisé pour menu ou bouton).</li> * <li><b>SHORT_DESCRIPTION</b> la clé pour stocker une description courte de l'action. * C'est utilisé pour les texte 'tooltip'.</li> * <li><b>LONG_DESCRIPTION</b> la clé pour stocker une description plus longue. * Cela peut être utilisé pour l'aide contextuelle.</li> * <li><b>SMALL_ICON</b> la clé pour stocker une petite icône (toolbar).</li> * <li><b>ACTION_COMMAND_KEY</b> la clé pour déterminer la chaîne de commande pour l'{@link java.awt.event.ActionEvent} * qui sera créée quand l'action aura lieu et qu'elle notifiera * en tant que résultat d'une clé associée avec un JComponent.</li> * <li><b>ACCELERATOR_KEY</b> la clé pour stocker l'association de touches utilisée comme raccourci * pour lancer une action.</li> * </ul> * * Created: Fri Jun 13 14:27:09 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: AbstractControler.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public class AbstractControler extends AbstractAction { protected Query query; protected ViewInfo viewInfo; public AbstractControler(Query query) { super(); this.query = query; } // AbstractControler constructor /** * Get the Query value. * @return the Query value. */ public Query getQuery() { return this.query; } /** * Set the Query value. * @param newQuery The new Query value. */ public void setQuery(Query newQuery) { super.firePropertyChange( "Query", this.query, newQuery ); this.query = newQuery; } /** * Get the ViewInfo value. * @return the ViewInfo value. */ public ViewInfo getViewInfo() { return this.viewInfo; } /** * Set the ViewInfo value. * @param newViewInfo The new ViewInfo value. */ public void setViewInfo(ViewInfo newViewInfo) { super.firePropertyChange( "ViewInfo", this.viewInfo, newViewInfo ); this.viewInfo = newViewInfo; } /** * Méthode héritée de {@link java.awt.event.ActionListener}. * * @param action l'action qui vient d'avoir lieu */ public void actionPerformed(ActionEvent action); } // AbstractControler --- NEW FILE: CloseControler.java --- package net.sourceforge.queryviewer.ui.event; import java.awt.Event; import java.awt.event.ActionEvent; import javax.swing.Action; import javax.swing.KeyStroke; import net.sourceforge.queryviewer.Connection; import net.sourceforge.queryviewer.Query; /** * Action de fermer une connexion. * * * Created: Sat Jun 14 15:46:42 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: CloseControler.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public class CloseControler extends AbstractControler { /** * Création d'une action fermeture de connexion. * * @param query l'objet requête que l'on va fermer. */ public CloseControler(Query query) { super(query); super.putValue( Action.NAME, "Fermer la connexion" ); super.putValue( Action.SHORT_DESCRIPTION, "Fermeture de la connexion à la source de données" ); super.putValue( Action.LONG_DESCRIPTION, "Choisissez cette option pour clôturer\n" + "la connexion à la source de données" ); //super.putValue( Action.SMALL_ICON, ); super.putValue( Action.ACTION_COMMAND_KEY, KeyStroke.getKeyStroke( new Character( 'w' ), Event.CTRL_MASK ) ); super.putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke( new Character( 'w' ), Event.CTRL_MASK ) ); } // CloseConnection constructor public void actionPerformed(ActionEvent action) { Connection connection = super.query.getConnection(); try { connection.close(); super.query.setConnection(null); } catch(QueryException qe) { // passer l'exception à la vue? } } } // CloseControler --- NEW FILE: ControlerFactory.java --- package net.sourceforge.queryviewer.ui.event; import java.util.Map; import java.util.HashMap; import javax.swing.Action; import net.sourceforge.queryviewer.Query; /** * Fabricateur de contrôles. Cette classe va générer une requête et donner vie aux contrôleurs * qui vont réagir aux événements des utilisateurs. Chaque contrôleur va étendre {@link javax.swing.Action} * même si les sous-classe n'implémentent pas toutes les méthodes. Les vues appelleront la méthode {@link getAction(String,ViewInfo)} * qui leur renverra une instance {@link javax.swing.Action} prette à l'emploi en fonction de l'action qui doit être gérée par cette vue. * toutes les actions possible sont définies sous forme de constantes dans l'interface {@link QueryActions}. * * Created: Fri Jun 13 09:12:32 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: ControlerFactory.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ * @since 0.2 */ public class ControlerFactory { /** Ouvrir une connexion */ public static final String OPEN_CONNECTION = "openconnection"; /** Fermer une connexion */ public static final String CLOSE_CONNECTION = "closeconnection"; /** Quitter le programme */ public static final String QUIT = "quit"; /** Exécuter une requête */ public static final String EXECUTE_QUERY = "executequery"; protected Map actions; /** Constructeur par défaut. * Construction de l'objet {@link Query} qui sera connu de tous les controleurs. * Construction de tous les contrôleurs. */ public ControlerFactory() { Query q = new Query(); this.actions = new HasMap(); this.actions.put( ControlerFactory.OPEN_CONNECTION, new OpenConnectionControler( q ) ); this.actions.put( ControlerFactory.CLOSE_CONNECTION, new CloseConnectionControler( q ) ); this.actions.put( ControlerFactory.QUIT, new QuitControler( q ) ); this.actions.put( ControlerFactory.EXECUTE_QUERY, new QueryControler( q ) ); } // ControlerFactory constructor /** * Retourne un contrôleur en n'oubliant pas de lui fournir la vue pour qu'il puisse l'interroger. * @param action une représentation du contrôleur que l'on désire * @param viewInfo la vue qui pourra fournir les entrées de l'utilisateur. * @return le contrôleur. */ public Action getAction( String action, ViewInfo viewInfo ) { AbstractControler controler = (AbstractControler) this.actions.get( action ); controler.setViewInfo( viewInfo ); return (Action)controler; } } // ControlerFactory --- NEW FILE: OpenControler.java --- package net.sourceforge.queryviewer.ui.event; import java.awt.Event; import java.awt.event.ActionEvent; import java.util.Map; import javax.swing.Action; import javax.swing.KeyStroke; import net.sourceforge.queryviewer.Connection; import net.sourceforge.queryviewer.JDBCConnectionImpl; import net.sourceforge.queryviewer.Query; import net.sourceforge.queryviewer.ui.ViewInfo; import net.sourceforge.queryviewer.ui.event.QueryActions; /** * Action d'ouvrir une connexion. * * * Created: Sat Jun 14 15:46:42 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: OpenControler.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public class OpenControler extends AbstractControler { /** * Création d'une action fermeture de connexion. * * @param query l'objet requête que l'on va ouvrir. */ public OpenControler(Query query) { super(query); super.putValue( Action.NAME, "Ouvrir la connexion" ); super.putValue( Action.SHORT_DESCRIPTION, "Ouverture de la connexion à la source de données" ); super.putValue( Action.LONG_DESCRIPTION, "Choisissez cette option pour ouvrir\n" + "la connexion à la source de données" ); //super.putValue( Action.SMALL_ICON, ); super.putValue( Action.ACTION_COMMAND_KEY, KeyStroke.getKeyStroke( new Character( 'o' ), Event.CTRL_MASK ) ); super.putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke( new Character( 'o' ), Event.CTRL_MASK ) ); } // CloseConnection constructor public void actionPerformed(ActionEvent action) { try { // pour l'instant, on ne peut ouvrir qu'une JDBCConnectionImpl // récupérer les informations de la vue if( super.getViewInfo()!=null ) { ViewInfo vi = super.getViewInfo(); Map map = vi.getuserInputs(); String driver = map.get( QueryActions.TF_JDBC_DRIVER ); String url = map.get( QueryActions.TF_JDBC_URL ); String username = map.get( QueryActions.TF_JDBC_USERNAME ); String password = map.get( QueryActions.TF_JDBC_PASSWORD ); Connection connection = new JDBCConnectionImpl( driver, url, username, password ); super.query.setConnection( connection ); } catch(QueryException qe) { // passer l'exception à la vue? } } } // OpenControler --- NEW FILE: QueryActions.java --- package net.sourceforge.queryviewer.ui.event; /** * QueryActions.java * * * Created: Sat Jun 14 16:51:27 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: QueryActions.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public interface QueryActions { public static final String TF_JDBC_DRIVER ="tfjdbcdriver"; public static final String TF_JDBC_URL ="tfjdbcurl"; public static final String TF_JDBC_USERNAME ="tfjdbcusername"; public static final String TF_JDBC_PASSWORD ="tfjdbcpassword"; public static final String TF_QUERY_STRING ="tfquerystring"; }// QueryActions --- NEW FILE: QueryControler.java --- package net.sourceforge.queryviewer.ui.event; import java.awt.Event; import java.awt.event.ActionEvent; import javax.swing.Action; import javax.swing.KeyStroke; import net.sourceforge.queryviewer.Connection; import net.sourceforge.queryviewer.Query; /** * Action d'exécuter une requête. * * * Created: Sat Jun 14 15:46:42 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: QueryControler.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public class QueryControler extends AbstractControler { /** * Création d'une action d'exécution d'une requête. * * @param query l'objet requête que l'on va fermer. */ public QueryControler(Query query) { super(query); super.putValue( Action.NAME, "Exécuter une requête" ); super.putValue( Action.SHORT_DESCRIPTION, "Exécution d'une requête sur la source de données" ); super.putValue( Action.LONG_DESCRIPTION, "Choisissez cette option pour exécuter\n" + "une requête sur la source de données" ); //super.putValue( Action.SMALL_ICON, ); super.putValue( Action.ACTION_COMMAND_KEY, KeyStroke.getKeyStroke( new Character( 'e' ), Event.CTRL_MASK ) ); super.putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke( new Character( 'e' ), Event.CTRL_MASK ) ); } // CloseConnection constructor public void actionPerformed(ActionEvent action) { try { // récupérer les informations de la vue if( super.getViewInfo()!=null ) { ViewInfo vi = super.getViewInfo(); Map map = vi.getuserInputs(); String queryString = map.get( QueryActions.TF_QUERY_STRING ); super.query.setQuery( queryString ); // et automatiquement, la requête est effectuée ;-) } } catch(QueryException qe) { // passer l'exception à la vue? } } } // QueryControler --- NEW FILE: QuitControler.java --- package net.sourceforge.queryviewer.ui.event; import java.awt.Event; import java.awt.event.ActionEvent; import java.util.Map; import javax.swing.Action; import javax.swing.KeyStroke; import net.sourceforge.queryviewer.Connection; import net.sourceforge.queryviewer.JDBCConnectionImpl; import net.sourceforge.queryviewer.Query; import net.sourceforge.queryviewer.ui.ViewInfo; import net.sourceforge.queryviewer.ui.event.QueryActions; /** * Action de fermer l'application. * * * Created: Sat Jun 14 15:46:42 2003 * * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: QuitControler.java,v 1.1 2003/06/16 07:46:14 avdyk Exp $ */ public class QuitControler extends AbstractControler { /** * Création d'une action fermeture de connexion. * * @param query l'objet requête que l'on va ouvrir. */ public QuitControler(Query query) { super(query); super.putValue( Action.NAME, "Quitter" ); super.putValue( Action.SHORT_DESCRIPTION, "Quitter le programme" ); super.putValue( Action.LONG_DESCRIPTION, "Quitter le programme" ); //super.putValue( Action.SMALL_ICON, ); super.putValue( Action.ACTION_COMMAND_KEY, KeyStroke.getKeyStroke( new Character( 'q' ), Event.CTRL_MASK ) ); super.putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke( new Character( 'q' ), Event.CTRL_MASK ) ); } // CloseConnection constructor public void actionPerformed(ActionEvent action) { // il faudrait peut-être gentillement appeler // l'action de fermeture de connexion System.exit( 0 ); } } // QuitControler |