Exercice de codage d'une vue constituée d'1 table à 2 champs (code,libellé) par l'exemple en 3 minutes et 4 classes.

Résultat à obtenir


Ces quatre première sources sont fournies

Mappage de la liste

public class TableTestLISTE extends AbstractFieldsDef {
	public TableTestLISTE(Sql sql, Vue vue) {
		super(sql,vue);
	}
	public Object adapteField(Vue vue){
		t_table="table_test"; //Nom de la table 
		t_nbLigne=28;         //Nombre de ligne à afficher
		t_filtre=null;
		v_filtre=null;
		t_index=new String[]{"c_code"}; //Order de la table
		switch (vue){
		case F3:
		default:{
			addSqlField("c_code" ,  2, Fma.NUMGRAS, "Code");  //1ere Colonne et 1er titre de colonne
			addSqlField("c_libe" , 30, Fma.FIELD, "Libelle"); //2eme Colonne et 2eme titre de colonne
		break;
		}
	}
	return this;
	}
}

Mappage de la fiche

public class TableTestFICHE extends AbstractFieldsDef {
	public TableTestFICHE(Sql sql, Vue vue) {
		super(sql, vue);
	}
	public Object adapteField(Vue vue){
			t_table="table_test"; //Nom de la table
			t_nbLigne=1;
			t_filtre=null;
			v_filtre=null;
			t_index=new String[]{"c_code"}; //Order de la table
			switch (vue){
			default:{
				addSqlField("c_code" ,  2, Fma.F2, "Code", "", Edit.F2, "");           //1er Edit et 1er Libellé
				addSqlField("c_libe" , 30, Fma.FIELD, "Libelle", "", Edit.TEXT, "");  //2eme Edit et 2eme Libellé
			break;}
	}
	return this;
	}
}

L'affichage et la saisie standard

public class TableTestSAISIE extends AbstractDbFiche {
	private static final long serialVersionUID = 1L;		
	// Déclaration des composants
	JTextDb lcode,llibe; // Les Labels de la fiche
	JTextDbF2 code=null; //1er Edit
	JTextDb libe=null; //2eme Edit
	public TableTestSAISIE(Sql sql) {
		super(sql);
		initStart();
	}

	////////////////////
	// Initialisation //
	////////////////////

	// Création des composants
	public void initCreateLE() {
		// Les labels
		lcode=new JTextDb();
		llibe=new JTextDb();
		// Les Edits
		code =new JTextDbF2(new TableTestVUE(sql, "", Vue.F2)); //Une Combobox de choix Pour la saisie du code
		libe =new JTextDb();
	}
	// Mappage des composants
	public void initMapLE() {
		// Les labels
		ccs.mapL(this, lcode, 0);
		ccs.mapL(this, llibe, 1);
		// Les Edits
		ccs.mapE(this, code, 0);
		ccs.mapE(this, libe, 1);
	}
	//A noter pas de panel à créer, le Template le déssine automatiquement en fonction de la Définition de structure
	//protected void initGuiLE(){}

	public void initFocus() {
		setDefFocus(code);
	}

	///////////////////////////////////////
	// Liaison saisie rapide Liste/Fiche //
	///////////////////////////////////////

	public void setEditableColumns(FicheIEditableColumns fe, ListeIEditableColumn fl) {
		libe.setEditableColumns(fe, fl); // Le libellé est éditable dans la liste
	}
	public void fireEditableColumnUpdate(String nameField, Object value) {
		libe.fireEditableColumnUpdate(nameField, value); // Le libellé est éditable dans la liste
	}

	////////////////////////
	// Contrôle de saisie //
	////////////////////////

	public void setBaseListener() {
		// La clé dindex
		ccs.addF2Listener(code, Ccs.NEWCODEF2);
		ccs.addF2Listener(code, Ccs.CONSULTF2);
		// La fiche
	}
	public void fireBaseListener(JComponent jc){
		// La clé dindex
		if (jc==code){
			if (sql.isModeMovable()){
				ccs.fireT(jc, Ccs.CONSULTF2);
			} 
			if (sql.isModeAppendUpdated()||sql.isModeAppend()){
				ccs.fireT(jc, Ccs.NEWCODEF2);
			}
		}
		// La fiche
	}
	protected void fireContextualRange(JComponent jc) {}
	protected void updateDependant(JComponent jc) {}
	protected void updateContextualRangeAndEnable(JComponent jc) {}
	public void setDependants() {}

	//////////////////////////
	// Adaptation dynamique //
	//////////////////////////

	public void loadEAdapteGuiLE() {}
}

Le module "Vue" qui agrège la fiche/la liste/le composant F2/l'édition

public class TableTestVUE extends AbstractVUE {
	private static final long serialVersionUID = 1L;
	public TableTestVUE(Sql sql, String t_seek, Vue vue) {
		super(sql, t_seek, vue);
	}
	public AbstractDbListe getDbListe() {
		AbstractDbListe ret=null;
		adapteJoin(sqlListe);
		ret=new ListeRecno(sqlListe); //Branchement de la liste standard en fonction le la Définition de la liste
		return ret;
	}
	public AbstractDbFiche getDbFiche(Vue vue) {
		AbstractDbFiche ret=null;
		sqlFiche.t_AccesMode=Sql.t_AccesModeRecno;
		adapteJoin(sqlFiche);
		ret=new TableTestSAISIE(sqlFiche); //Branchement de la saisie
		return ret;
	}
	public AbstractFieldsDef getFieldsDefEcran(Vue vue) {
		AbstractFieldsDef ret=null;
		ret=new TableTestFICHE(sqlFiche, vue); //Définition de la table
		return ret; 
	}
	public AbstractFieldsDef getFieldsDefListe(Vue vue) {
		AbstractFieldsDef ret=null;
		ret=new TableTestLISTE(sqlListe, vue); //Branchement de la liste
		return ret;
	}
	public AbstractFieldsDef getFieldsDefPrint(Vue vue) {
		AbstractFieldsDef ret=null;
		return ret;
	}
	public AbstractFieldsDef getFieldsDefRupture(Vue vue) {
		AbstractFieldsDef ret=null;
		return ret;
	}
	public void adapteJoin(Sql sql){
	}
}

Consulter la documentation générale, Section Template applicatif

Pour finir, brancher sa table ...