1 2 Previous Next 20 Replies Latest reply on Oct 4, 2007 1:56 AM by dmitry.demyankov Go to original post
      • 15. Re: RichFaces in action
        tjakopec

         

        "dxxvi" wrote:


        First, thank you to your demo.

        Second, ... a bunch of questions :) But only 2 questions this time. Do you use any JSF component which is in RF 3.2 but not in RF 3.1? If yes, what is it?
        Do you use the file upload component from Seam? If yes, is it ajax-like (i.e. you can upload the file while doing something else on the screen)? Sorry for this kind of question, I don't have time to learn Seam (although that's what I want).


        I think calendar is RF 3.2 and not in 3.1. We use tomahawks file upload. No ajax functionality, but it satisfied our needs.

        • 16. Re: RichFaces in action
          tjakopec

           

          "amitev" wrote:
          Okay. What's the idea of conversationPropagation=begin.client (etc...)


          We work with pageflows and call "programs" from jsp page with s:link

          example
          <s:link view="#{item.entitet.link}" pageflow="#{item.entitet.pageflow}" propagation="begin" styleClass="posaoKatalog" value="#{item.entitet.naziv.naziv}" />
          


          off course pageflow name is store in database and access via bean...

          one simple pageflow (Criteria) look like this
          <pageflow-definition xmlns="http://jboss.com/products/seam/pageflow"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-1.2.xsd"
           name="kriterij">
          
           <start-page name="kriterij"
           view-id="/kadrovska/maticni/sifarnici/kriterij/PregledKriterij.jsp"
           timeout="3600000">
           <redirect />
           <description>
           #{messages['kadrovska.maticni.sifarnik.kriterij.pregled']}
           </description>
           <transition name="trazi" to="trazenjeDecision" />
           <transition name="pripremaNovi" to="pripremaNoviDecision" />
           <transition name="inConversationOk" to="promjena" />
           </start-page>
          
           <page name="novi"
           view-id="/kadrovska/maticni/sifarnici/kriterij/AkcijaKriterij.jsp">
           <redirect />
           <description>
           #{messages['kadrovska.maticni.sifarnik.kriterij.novi']}
           </description>
           <transition name="povratak" to="kriterij" />
           <transition name="dodajNovi" to="dodajNoviDecision" />
           </page>
          
          
           <page name="promjena"
           view-id="/kadrovska/maticni/sifarnici/kriterij/AkcijaKriterij.jsp">
           <redirect />
           <description>
           #{messages['kadrovska.maticni.sifarnik.kriterij.promjena']}
           </description>
           <transition name="povratak" to="kriterij" />
           <transition name="promjeni" to="promjeniDecision" />
           </page>
          
           <decision name="trazenjeDecision"
           expression="#{traziKriterij.trazi}">
           <transition name="OK" to="kriterij" />
           <transition name="NOT" to="kriterij" />
           </decision>
          
           <decision name="pripremaNoviDecision"
           expression="#{obradaKriterij.noviEntitet}">
           <transition name="OK" to="novi" />
           <transition name="NOT" to="kriterij" />
           </decision>
          
          
           <decision name="dodajNoviDecision"
           expression="#{obradaKriterij.spremi}">
           <transition name="OK" to="trazenjeDecision" />
           <transition name="NOT" to="novi" />
           </decision>
          
           <decision name="promjeniDecision"
           expression="#{obradaKriterij.spremi}">
           <transition name="OK" to="trazenjeDecision" />
           <transition name="NOT" to="promjena" />
           </decision>
          
          
          
          </pageflow-definition>
          
          


          • 17. Re: RichFaces in action
            tjakopec

             

            "dmitry.demyankov" wrote:


            Thanks, looking forward to see how image upload is implemented


            jsp page (in modal panel)
            <h:form id="formaPromjeniSliku" enctype="multipart/form-data">
             <t:panelGrid columns="2">
             <t:graphicImage url="#{osoba.slika}" border="0" />
             <t:commandButton id="uploadGumb"
             value="#{messages['maticni.operater.uploadSlike']}"
             action="#{upload.uploadOsoba(osoba)}" />
             </t:panelGrid>
             <t:inputFileUpload id="uploadSlike" storage="file" size="25"
             value="#{uploadBean.file}" />
            </h:form>
            


            upload bean code
            package orka.core.view.upload;
            
            import java.awt.Graphics2D;
            import java.awt.geom.AffineTransform;
            import java.awt.image.BufferedImage;
            import java.io.ByteArrayInputStream;
            import java.io.File;
            import java.io.IOException;
            
            import javax.ejb.Stateless;
            import javax.faces.context.FacesContext;
            import javax.imageio.ImageIO;
            import javax.interceptor.Interceptors;
            
            import org.apache.myfaces.custom.fileupload.UploadedFile;
            import org.jboss.seam.annotations.In;
            import org.jboss.seam.annotations.Name;
            import org.jboss.seam.ejb.SeamInterceptor;
            
            import orka.core.maticni.operater.Operater;
            import orka.kadrovska.maticni.osobe.Osoba;
            
            @Stateless
            @Name("upload")
            @Interceptors(SeamInterceptor.class)
            public class UploadAction implements Upload {
            
             @In
             private UploadBackingBean uploadBean;
            
             private byte okvir = 0;
            
             public String uploadOperater(Operater operater) {
             String putanjaFoldera = FacesContext.getCurrentInstance()
             .getExternalContext().getInitParameter("slike")
             + operater.getKorisnik().getNaziv()
             + "/entitet/maticni/operater/";
             File file = new File(putanjaFoldera);
             if (!file.exists()) {
             file.mkdirs();
             System.err.println("Kreirao direktorij(e): " + putanjaFoldera);
             }
             String putanjaSlika = operater.getId() + ".png";
             return upload(putanjaFoldera + putanjaSlika);
             }
            
             public String uploadOsoba(Osoba osoba) {
             String putanjaFoldera = FacesContext.getCurrentInstance()
             .getExternalContext().getInitParameter("slike")
             + osoba.getKorisnik().getNaziv()
             + "/entitet/kadrovska/maticni/osoba/";
             File file = new File(putanjaFoldera);
             if (!file.exists()) {
             file.mkdirs();
             System.err.println("Kreirao direktorij(e): " + putanjaFoldera);
             }
             String putanjaSlika = osoba.getId() + ".png";
             return upload(putanjaFoldera + putanjaSlika);
             }
            
             private String upload(String putanja) {
             UploadedFile file = uploadBean.getFile();
             try {
            
             // bez okvira
             if (okvir == 0) {
             System.err.println("bez okvira");
             BufferedImage bsrc = ImageIO.read(file.getInputStream());
            
             if (bsrc == null)
             return "NOT";
             BufferedImage bdest = new BufferedImage(109, 128,
             BufferedImage.TYPE_INT_ARGB);
            
             Graphics2D g = bdest.createGraphics();
             AffineTransform at = AffineTransform.getScaleInstance(
             (double) 109 / bsrc.getWidth(), (double) 128
             / bsrc.getHeight());
             g.drawRenderedImage(bsrc, at);
             ImageIO.write(bdest, "png", new File(putanja));
            
             }
             // klasicni ili orka okvir
             else {
             System.err.println("klasicni ili orka okvir");
             FacesContext fc = FacesContext.getCurrentInstance();
             ByteArrayInputStream b = (ByteArrayInputStream) fc
             .getExternalContext().getResourceAsStream(
             "/slike/ikone/okviri/okvir" + okvir + ".png");
            
             BufferedImage okvirbi = ImageIO.read(b);
             BufferedImage bsrc = ImageIO.read(file.getInputStream());
            
             if (bsrc == null)
             return "NOT";
             BufferedImage bdest = new BufferedImage(75, 95,
             BufferedImage.TYPE_INT_ARGB);
            
             Graphics2D g = bdest.createGraphics();
             AffineTransform at = AffineTransform.getScaleInstance(
             (double) 75 / bsrc.getWidth(), (double) 95
             / bsrc.getHeight());
             g.drawRenderedImage(bsrc, at);
             ImageIO.write(bdest, "png", new File(putanja));
            
             // /
            
             bsrc = ImageIO.read(new File(putanja));
             bdest = new BufferedImage(109, 128, BufferedImage.TYPE_INT_ARGB);
             g = bdest.createGraphics();
            
             g.drawImage(bsrc, 16, 19, null, null);
            
             g.drawImage(okvirbi, 0, 0, null, null);
            
             ImageIO.write(bdest, "png", new File(putanja));
             }
            
             return "OK";
             } catch (IOException e) {
             return "NOT";
             }
             }
            
             public byte getOkvir() {
             return okvir;
             }
            
             public void setOkvir(byte okvir) {
             this.okvir = okvir;
             }
            
             public void init() {
            
             }
            
            }
            


            we store image on disk because later we will go on database witch doesn't support blob

            • 18. Re: RichFaces in action
              dmitry.demyankov

              Thanks for the example :)

              • 19. Re: RichFaces in action
                tjakopec

                 

                "dmitry.demyankov" wrote:
                Thanks for the example :)


                Now that you see example in file upload, do you have better solution?

                • 20. Re: RichFaces in action
                  dmitry.demyankov

                  I didn't have time yet to test it in my application. I guess when I'll implement some other features I'll be working on user images. That's when I'll be needing file upload. So I'll just post my results here later :)

                  So far thanks again for your help!

                  1 2 Previous Next