IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Création d'un custom menu


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut Création d'un custom menu
    Bonjour à tous,

    J'aimerais faire mon propre menu en me basant sur ce menu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
     
    <%@page import="org.dom4j.Document"%>
    <%@page import="org.dom4j.Element" %>
    <%@page import="org.apache.commons.lang.StringUtils"%>
    <%@page import="java.util.List"%>
    <jsp:useBean id="user" class="com.acticall.leclerc.bean.User" scope="session" />
    <% 
    if(user.getUser_name()==null){
      FacesContext fc = FacesContext.getCurrentInstance();
      Controleur bean = (Controleur) fc.getApplication().createValueBinding("#{controleur}").getValue(fc);
      user.setUser_name(bean.getUser().getUser_name());
      user=(User) UserDao.getInstance().getVerifUsers(user.getUser_name());
      session.setAttribute("user", user);
    }
     if (session.getAttribute("nav_idx") == null)  session.setAttribute("nav_idx", "1.x");
     Document dom = (Document) getServletContext().getAttribute("navigation");
     String[] idx = StringUtils.split((String) session.getAttribute("nav_idx"), ".");
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <%@page import="javax.faces.context.FacesContext"%>
    <%@page import="controleur.Controleur"%>
    <%@page import="com.acticall.leclerc.bean.User"%>
    <%@page import="com.acticall.leclerc.dao.UserDao"%>
    <html>
    <head> 
     <link href="<%=request.getContextPath() %>/static/css/base.css" type=text/css rel=stylesheet>
     <link href="<%=request.getContextPath() %>/nav/ressources/menu.css" type=text/css rel=stylesheet>
     <style type=text/css>
     #Level2Container {
    	background-color: #437FAD
    	/*old : #437FAD*/
     }
     td.tabOn {
    	background-color: #437FAD
     }
     td.tabOff A:hover {
    	background-color: #98BDDA
     }
     td.tabOn {
    	BORDER-bottom: #437FAD 1px solid
     }
     .spacer {
    	COLOR: white
     }
     </style>
    </head>
     
    <body>
    <div id="TabbedMenu">
     
    <table cellSpacing="0" cellpadding="0">
    <tbody>
    <tr>
     <td><img height="1" src="<%=request.getContextPath() %>/nav/ressources/trans.gif" width="245"></td>
     <td style="width: 100%"></td>
    </tr>
    <tr>
     <td style="padding-left: 15px;"><img src="<%=request.getContextPath() %>/static/img/client.gif"/></td>
     <td style="padding-right: 15px">
      <div style="padding-bottom:10px"><%= user.getUser_id() %> &nbsp; | &nbsp; <a href="<%=request.getContextPath()%>/index.jsp" class="blue">Se déconnecter</a></div>
      <div id="Level1Container">
       <table cellSpacing="0" cellpadding="0" width="100%">
       <tbody>
       <tr>
        <td><img height="30" src="<%=request.getContextPath() %>/nav/ressources/trans.gif" width=1></td>
        <td><div id="Level1Title" style="text-align:center;width:100%"><span>ELeclerc</span></div></td>
       </tr>
       <tr>
        <td style="padding-right: 10px; padding-left: 10px; padding-bottom: 0px; padding-top: 0px" colSpan=3>
          <table cellSpacing="0" cellpadding="0">
          <tbody>
          <tr>
          <% 
          List level1 = dom.selectNodes("//profil[@id="+user.getProfil_id()+"]/tab");  
          for (int i=0; i<level1.size(); i++) {
            Element tab = (Element) level1.get(i);
            out.println("<td class=\""+(tab.attributeValue("id").equals(idx[0])?"tabOn":"tabOff")+"\"><a href=\""+request.getContextPath()+"/nav/redirect.jsp?nav_idx="+tab.attributeValue("id")+".0\">"+tab.attributeValue("libelle")+"</a></i></td>");
          } 
          %>
          </tr>
          </tbody>
          </table>
        </td>
       </tr>
       </tbody>
       </table>
      </div>
     </td>
    </tr>
    <tr>
     <td colspan="2">
     <div id="Level2Container">
     <%
     List level2 = dom.selectNodes("//profil[@id="+user.getProfil_id()+"]/tab[@id="+idx[0]+"]/link");
     for (int i=0; i<level2.size(); i++) {
       Element section = (Element) level2.get(i);
       if (section.attributeValue("disabled") == null) 
      	 out.println("<a "+(section.attributeValue("id").equals(idx[1])?"class=\"SectionOn\"":"")+" href=\""+request.getContextPath()+"/nav/redirect.jsp?nav_idx="+idx[0]+"."+section.attributeValue("id")+"&nextp="+section.attributeValue("href")+"\">"+section.getText()+"</a></li>");
       else
        out.println("<span><font color=\"#dddddd\"><i>"+section.getText()+"</font></i></span>"); 
       if (i < level2.size()-1) 
         out.println("<span class=spacer>&nbsp; | &nbsp;</span>");
     }    
     %>
     </div>
     </td>
    </tr>
    </tbody>
    </table>
     
    </div>
    </body>
    </html>

    Vue que j'ai jamais fais de customisation,j'aimerais savoir par ou commencer.

    Voici ce que j'ai fait pour l'instant,je sais que c'est long,dsl

    MuPanelRenderer.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    package component;
     
    import java.io.IOException;
    import java.util.List;
     
    import org.apache.commons.lang.StringUtils;
    import org.dom4j.Document;
    import org.dom4j.Element;
     
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
     
    import com.ibm.ws.i18n.context.util.Dom;
    import com.sun.faces.renderkit.html_basic.GroupRenderer;
     
    public class MuPanelRenderer extends GroupRenderer {
     
    	public void encodebegin(FacesContext context, UIComponent component) throws IOException{
    		Document dom = (Document) getServletContext().getAttribute("navigation");
    		String []idx = StringUtils.split((String)session.getAttribute("nav_idx","."));
     
     
    		ResponseWriter writer = context.getResponseWriter();
    		String panel = getPanel(component);		
    	  writer.startElement("table", null);
    	  writer.writeAttribute("cellSpacing", "0", "table");
    	  writer.writeAttribute("cellpadding", "0", "table");
    	  writer.startElement("tr",null);
    	  writer.startElement("td", null);
    	  writer.startElement("img", null);
    	  writer.writeAttribute("src","../nav/ressources/trans.gif","img");
    	  writer.writeAttribute("width","245", "img");
    	  writer.endElement("img");
    	  writer.endElement("td");
    	  writer.startElement("td",null);
    	  writer.writeAttribute("style", "white:100%", "td");
    	  writer.endElement("td");
    	  writer.endElement("tr");
    	  writer.startElement("tr", null);
    	  writer.startElement("tr", null);
    	  writer.writeAttribute("style", "padding-left: 15px", "td");
    	  writer.startElement("img", null);
    	  writer.writeAttribute("src","/static/img/client.gif","img");
    	  writer.writeAttribute("width","245", "img");
    	  writer.endElement("img");
    	  writer.endElement("td");
    	  writer.startElement("td",null);
    	  writer.writeAttribute("style", "padding-right: 15px", "td");
    	  writer.startElement("div",null); 
    	  writer.writeAttribute("style","padding-bottom:10px",null);
    	  writer.writeText("1","div");
    	  writer.startElement("a",null);
    	  writer.writeAttribute("href","../index.jsp", "a");
    	  writer.writeText("Se deconnecter","a");
    	  writer.endElement("a");
    	  writer.endElement("div");
    	  writer.startElement("div",null);
    	  writer.writeAttribute("id", "Level1Container", "div");
    	  writer.startElement("table", null);
    	  writer.writeAttribute("cellSpacing", "0", "table");
    	  writer.writeAttribute("cellpadding", "0", "table");
    	  writer.startElement("tbody",null);
    	  writer.startElement("tr",null);
    	  writer.startElement("td", null);
    	  writer.startElement("img", null);
    	  writer.writeAttribute("src","../nav/ressources/trans.gif","img");
    	  writer.writeAttribute("height","30", "img");
    	  writer.endElement("img");
    	  writer.endElement("td");	  
    	  writer.startElement("td", null);
    	  writer.endElement("div");
    	  writer.startElement("div",null);
    	  writer.writeAttribute("id", "level1Title", "div");
    	  writer.startElement("span", null);
    	  writer.writeText("ELeclerc", "span");
    	  writer.endElement("span");
    	  writer.endElement("div");
    	  writer.endElement("td");
    	  writer.endElement("tr");
    	  writer.startElement("tr", null);
    	  writer.startElement("td", null);
    	  writer.startElement("table", null);
    	  writer.startElement("tbody",null);
    	  writer.startElement("tr", null);
    	  List level1 = dom.selectNodes("//profil[@id=1]");
    	  for(int i=0;i<level1.size();i++){
    	  	Element tab =(Element)level1.get(i);
    	  	writer.startElement("td",null);
    	  	writer.writeAttribute("class",(tab.attributeValue("id").equals(idx[0])?"tabOn":"tabOff"), "td");
    	  	writer.startElement("a",null);
    	  	writer.writeAttribute("href", "../nav/redirect.jsp?nav_idx="+tab.attributeValue("id")+".0"+tab.attributeValue("libelle"),"td");
    	  	writer.endElement("a");
    	  	writer.endElement("td");
    	  }
    	  writer.endElement("tr");
    	  writer.endElement("tbody");
    	  writer.endElement("table");
    	  writer.endElement("td");
    	  writer.endElement("tr");
    	  writer.endElement("tbody");
    	  writer.endElement("table");
    	  writer.endElement("div");  
    	  writer.endElement("td");
    	  writer.endElement("tr");
    	  writer.startElement("tr",null);
    	  writer.startElement("td",null);
    	  writer.writeAttribute("colspan","2","td");
    	  writer.startElement("div", null);
    	  writer.writeAttribute("id", "Level2Container", "div");
    	  List level2 = dom.selectNodes("//profil{@id=1]/tab[@idx[0]]/link");
    	  for(int i=0;i<level2.size();i++){
    	  	Element section = (Element) level2.get(i);
    	  	if(section.attributeValue("disabled")==null){
    	  		writer.startElement("a", null);
    	  		writer.writeAttribute("href", "../nav/redirect.jsp?nav_idx="+idx[0]+".", "a");	  		
    	  	  writer.endElement("a");
    	  	}
    	  	else{
    	  		writer.startElement("span", null);
    	  		writer.startElement("font", null);
    	  		writer.writeAttribute("color", "#dddddd", "font");
    	  		writer.endElement("font");
    	  		writer.endElement("span");
    	  		if(i<level2.size()-1){
    	  			writer.startElement("span", null);
    	  			writer.writeAttribute("class", "spacer", "span");
    	  			writer.startElement("$nbsp",null);
    	  			writer.endElement("$nbsp");
    	  			writer.startElement("$nbsp",null);
    	  			writer.endElement("$nbsp");
    	  			writer.endElement("span");	  			
    	  		}
    	  	}
    	  }
    	  writer.endElement("div");
    	  writer.endElement("td");
    	  writer.endElement("tr");  
    	  writer.endElement("tbody");
    	  writer.endElement("table");
    	  writer.endElement("div");  
    	}
     
     
    	public String getPanel(UIComponent component){
    		String type= (String) component.getAttributes().get("panel");
    		if((type !=null) && (type.equalsIgnoreCase("std") || type.equalsIgnoreCase("default"))){
    			return type.toLowerCase();
    		}
    		return null;
    	}
     
     
    }

    MyHmlPanel .java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    package component;
     
    import javax.faces.component.html.HtmlPanelGrid;
    import javax.faces.context.FacesContext;
    import javax.faces.el.ValueBinding;
     
    public class MyHmlPanel extends HtmlPanelGrid{
     
    	private String panel;
     
    	public String getPanel() {
    		if(panel!=null){
    			return panel;
    		}
    		ValueBinding vb =getValueBinding("panel");
    		if(vb != null){
    			return (String) vb.getValue(getFacesContext());
    		}
    		return null;
    	}
     
    	public void setPanel(String panel) {
    		this.panel = panel;
    	}
     
    	public void restoreState(FacesContext context, Object state){
    		Object values[] = (Object[]) (Object[]) state;
    		super.restoreState(context, values[0]);
    		panel = (String) values[1];		
    	}
     
    	public Object saveState(FacesContext context){
    		Object[] values = new Object[2];
    		values[0] = super.saveState(context);
    		values[1] = panel;
    		return (Object) values;
    	}
    }
    stephane.taglib.tld
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <facelet-tagliub>
        <namespace>../WEB-INF/stephane.taglib.tld</namespace>
        <tag>
            <tag-name>panel</tag-name>
            <component>
               <component-type>my.component.panel</component-type>
               <render-type>my.renderkit.panel</render-type>
            </component>
        </tag>
    </facelet-tagliub>
    faces-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <faces-config>	 
     
    	  <component>
    	   <component-type>panel</component-type>
    	   <component-class>component.MyHtmlPanel</component-class>	
    	  </component>
    	  <render-kit>
    	    <render-kit-id>HTML_BASIC</render-kit-id> 
    	    <renderer>
    	      <component-family>javax.faces.Command</component-family>
    	      <renderer-type>my.renderkit.panel</renderer-type>
    	      <renderer-class>component.MuPanelRenderer</renderer-class>
    	    </renderer>
    	  </render-kit>
    </facers-config.xml>


    Page jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%@taglib uri="../WEB-INF/stephane.taglib.tld" prefix="panel"%>
    <panel trouve rien
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Ta demande est vague...
    On ne sait pas ce que tu souhaites changer dans ce menu. Difficile de t'aider du coup !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    j'ai un menu à la base en jsp que j'ai envi de mettre en jsf.

    Ainsi de faire par exemple

    <panel:...>


    Ainsi de créer directement le menu

    Si t'as deja créer un menu en jsf sous forme d'onglet,passe moi ton code,ca pourais toujours m'aider

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    tu vois ce que j'aimerais faire maintenant?

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Moi je te conseille de créer 2 types de composants :
    1. Le menuItem. Il s'agit d'une option dans ton menu.
    2. Le menu lui même, ne contenant que des éléments de type menuItem.

    Après, je pense qu'il n'y a rien de méchant.
    Tu te charges de créer le renderer du menuItem qui transforme ton composant dans le HTML adéquat, utilisant les bonnes classes CSS.
    Ensuite, tu te charges du renderer du composant menu, qui va créer le HTML "entourant" l'ensemble des menuItems.

    Est-ce déjà une bonne piste à suivre pour te lancer dans l'aventure ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    euh ouias mais bon,j'ai jamais fais de menuitem,ca va etre dur de se lancer,vais essayer

    Je ne vois pas de menuitem dans http://java.sun.com/jsf/html

Discussions similaires

  1. Création d'un custom control
    Par bla69136 dans le forum MFC
    Réponses: 5
    Dernier message: 07/03/2008, 15h30
  2. Création dynamique de VB.Menu
    Par ppphil dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2007, 11h04
  3. Réponses: 1
    Dernier message: 12/11/2006, 01h01
  4. [JSF] Création de validateurs custom
    Par mymyma dans le forum JSF
    Réponses: 3
    Dernier message: 28/06/2006, 15h32
  5. [MFC] Création d'un 'custom control'
    Par r0d dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2006, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo