commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d...@apache.org
Subject cvs commit: jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos HomepageBuilder.java template2.jelly homepageBuilder.jelly template1.jelly
Date Thu, 16 Jan 2003 22:57:13 GMT
dion        2003/01/16 14:57:13

  Added:       jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos
                        HomepageBuilder.java template2.jelly
                        homepageBuilder.jelly template1.jelly
  Log:
  Moved from core, as it wasn't being used, and belonged here
  
  Revision  Changes    Path
  1.1                  jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java
  
  Index: HomepageBuilder.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java,v
1.1 2003/01/16 22:57:13 dion Exp $
   * $Revision: 1.1 $
   * $Date: 2003/01/16 22:57:13 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * $Id: HomepageBuilder.java,v 1.1 2003/01/16 22:57:13 dion Exp $
   */
  package org.apache.commons.jelly.demos;
  
  import java.awt.BorderLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.WindowAdapter;
  import java.awt.event.WindowEvent;
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.OutputStream;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.util.Enumeration;
  import java.util.Vector;
  
  import javax.swing.BorderFactory;
  import javax.swing.BoxLayout;
  import javax.swing.DefaultListModel;
  import javax.swing.JButton;
  import javax.swing.JComboBox;
  import javax.swing.JEditorPane;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JList;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;
  import javax.swing.JTextField;
  
  import org.apache.commons.jelly.JellyContext;
  import org.apache.commons.jelly.XMLOutput;
  
  /**
   * A sample Swing program that demonstrates the use of Jelly as a templating mechanism
   * 
   * @author Otto von Wachter
   */
  public class HomepageBuilder extends JPanel {
  
  	JTextField nameField;
  	JTextField urlField;
  	JTextField addField;
  	JTextField colorField;
  	JComboBox templateList;
  	JList interestList;
  	DefaultListModel listModel;
  	
  
      public HomepageBuilder() {
      	
      	System.out.println("Starting Homepage Builder");
      	
      	JPanel leftPanel = new JPanel();
      	leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
      	
      	leftPanel.add(new JLabel("Name:"));    	
      	
      	nameField= new JTextField("James Bond");    	
      	leftPanel.add(nameField);
      	
      	leftPanel.add(new JLabel("Favorite Color:"));    	    	
          
          colorField = new JTextField("#007007");
      	leftPanel.add(colorField);
          
      	leftPanel.add(new JLabel("Picture URL:"));    	    	
          
          urlField = new JTextField("http://www.ianfleming.org/007news/images3/c2002_pierce1.jpg");
      	leftPanel.add(urlField);
  
      	leftPanel.add(new JLabel("Choose template:"));    	    	
          
          templateList = new JComboBox(new String[] {"template1.jelly","template2.jelly"});
      	leftPanel.add(templateList);
      	
  //    	JPanel rightPanel = new JPanel();
  //    	rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
      	
      	leftPanel.add(new JLabel("Add a Hobby:"));
  		
  		addField = new JTextField();
  		leftPanel.add(addField);
  		
  		JButton addButton = new JButton("Add >>>");
  		addButton.addActionListener(new ActionListener() {
  			public void actionPerformed(ActionEvent e) {
                  listModel.addElement(addField.getText());
              }
  		});
  		leftPanel.add(addButton);
      	
      	listModel = new DefaultListModel();
      	listModel.addElement("Killing bad guys");
      	listModel.addElement("Wrecking cars");
      	listModel.addElement("Eating jelly");
      	interestList = new JList(listModel);
  		    	
  
  		JButton submit = new JButton("Build and preview your page!");
  		submit.addActionListener(new ActionListener() {
  			public void actionPerformed(ActionEvent e) {
                  buildPage(templateList.getSelectedItem().toString(),new JellyContext());
                  showPage();
              }
  		});
  
          // Layout the demo
          setLayout(new BorderLayout());
          add(submit, BorderLayout.SOUTH);
          add(leftPanel, BorderLayout.WEST);
          add(new JScrollPane(interestList), BorderLayout.EAST);
          setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
      }
      
      public void buildPage(String template, JellyContext ctx) {
      	
  //		try {
  //		
  //		Embedded embedded = new Embedded();
  //		embedded.setOutputStream(new FileOutputStream("out.html"));
  //		//embedded.setVariable("some-var","some-object");
  //		
  //		embedded.setScript("file:///anoncvs/jakarta-commons-sandbox/jelly/sample.jelly");
  //		//or one can do.
  //		//embedded.setScript(scriptAsInputStream);
  //		
  //		boolean bStatus=embedded.execute();
  //		if(!bStatus) //if error
  //		{
  //		System.out.println(embedded.getErrorMsg());
  //		}
  //
  //		} catch (Exception e) {
  //			e.printStackTrace();
  //		}
  			
  
      	try {
      		
      		OutputStream output = new FileOutputStream("demopage.html");
      						
              JellyContext context = new JellyContext();
              context.setVariable("name",nameField.getText());
              context.setVariable("background",colorField.getText());
              context.setVariable("url",urlField.getText());
              
              Vector v = new Vector();
              Enumeration enum= listModel.elements();
              while (enum.hasMoreElements()) {
              	v.add(enum.nextElement());
              }
              context.setVariable("hobbies", v);
      
      		XMLOutput xmlOutput = XMLOutput.createXMLOutput(output);
      		context.runScript( resolveURL("src/test/org/apache/commons/jelly/demos/"+template),
xmlOutput );
              xmlOutput.flush();
              System.out.println("Finished merging template");
              
      	} catch (Exception e) {
      		e.printStackTrace();
      	}
  	
      }
  
  	void showPage() {
  				
  		//open new window
          JFrame frame = new JFrame("Your Homepage");
  		
  		//add html pane
  		try {
  			
  		  URL url = resolveURL("demopage.html");
  		  JEditorPane htmlPane = new JEditorPane(url);
  		  htmlPane.setEditable(false);
  		  frame.setContentPane(new JScrollPane(htmlPane));
  		  
  		} catch(Exception ioe) {
  		  System.err.println("Error displaying page");
  		}
  		
          frame.pack();
  		frame.setSize(500,500);		
          frame.setVisible(true);
  		
  	} 
  	
  	 /***
        * @return the URL for the relative file name or absolute URL 
        */
      protected URL resolveURL(String name) throws MalformedURLException {
           File file = new File(name);
           if (file.exists()) {
               return file.toURL();
           }
           return new URL(name);
       }
  
  
      public static void main(String s[]) {
          JFrame frame = new JFrame("Homepage Builder");
  
          frame.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {System.exit(0);}
          });
   
          frame.setContentPane(new HomepageBuilder());
          frame.pack();
          frame.setVisible(true);
      }
  }
  
  
  
  1.1                  jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template2.jelly
  
  Index: template2.jelly
  ===================================================================
  <?xml version="1.0"?>
  <j:jelly trim="false" xmlns:j="jelly:core">
  
    <html>
    
    	<head>
  	<title>${name}'s Page</title>
  	</head>
  	
  	<body bgcolor="${background}" text="#FFFF00">
  	
  	<table>
  	<tr>
  	<td>
  	<img src="${url}"/>
  	</td>
  
  	<td>
  	<h1>Welcome to my Homepage!</h1>
  		
  	<p>
  	Hi, I'm ${name}.  These are my hobbies:
  	</p>
  		
  	<ol>
  	
  	<j:forEach items="${hobbies}" var="i">
  		<li>${i}</li>
  	</j:forEach>
  	
  	</ol>
  	</td>
  	</tr>
  	</table>
  	
  	</body>
  
    </html>
    
  </j:jelly>
  
  
  
  1.1                  jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly
  
  Index: homepageBuilder.jelly
  ===================================================================
  <?xml version="1.0"?>
  <!--
   ! FIXME: Need to move this to the swing taglib
  -->
  <j:jelly 
  	xmlns:j="jelly:core" 
  	xmlns="jelly:swing" >
  
  	<!-- create the generate page action -->
  
  	<action var="createPageAction" name="Build and preview your page!">
  		<j:set var="name" value="${nameField.text}"/>
  		<j:set var="background" value="${colorField.text}"/>
  		<j:set var="url" value="${pictureField.text}"/>
  		<j:set var="hobbies" value="${hobbyModel.toArray()}"/>
  		<j:set var="template" value="${templateField.getSelectedItem().toString()}"/>
  		
  		name = ${name}
  		background = ${background}
  		url = ${url}
  		hobbies = ${hobbies}
  		template = ${template}
  		
  		<j:file name="demopage.html" outputMode="html">
  			<j:include uri="${template}"/>
  		</j:file>
  
  		<frame var="showPageFrame" size="500,600" location="200,200" title="Your Homepage">
  			<scrollPane>
  				<editorPane page="${context.getResource('/demopage.html').toString()}" editable="false"/>
  			</scrollPane>
  		</frame>
  		${showPageFrame.show()}
  	</action>
  
  
  	<!-- create the Frame -->
  	
    <frame var="frame" title="Homepage Builder" location="100,100" size="800,400">
  		<panel>
  
  <!-- uncomment this when we've implemented emptyBorder
  	
  			<emptyBorder top="20" left="20" bottom="20" right="20" />			
  -->		
  			<borderLayout>				  	
  				<borderAlign align="west">
  			  	<vbox>
  			  		<label text="Name:"/>
  			  		<textField var="nameField" text="James Bond"/>
  			
  			  		<label text="Favourite Color:"/>
  			  		<textField var="colorField" text="#007007"/>
  			  		
  			  		<label text="Picture URL::"/>
  			  		<textField var="pictureField" text="http://www.ianfleming.org/007news/images3/c2002_pierce1.jpg"/>
  			  		
  			  		<label text="Choose template::"/>
  			  		<comboBox var="templateField"/>
  			  		${templateField.addItem('template1.jelly')}
  			  		${templateField.addItem('template2.jelly')}
  			  		
  			  		<label text="Add a Hobby:"/>
  			  		<textField var="hobbyField"/>
  			  		
  			  		<button>
  			  			<action name="Add >>>">
  			  				${hobbyModel.addElement(hobbyField.text)}
  							</action>
  			  		</button>
  			  	</vbox>
  				</borderAlign>
  				
  				<borderAlign align="east">  	
  			  	<scrollPane>
  			  		<j:useBean class="javax.swing.DefaultListModel" var="hobbyModel"/>
  						<list model="${hobbyModel}"/>
  						${hobbyModel.addElement('Killing bad guys')}
  						${hobbyModel.addElement('Wrecking cars')}
  						${hobbyModel.addElement('Eating jelly')}
  			  	</scrollPane>
  				</borderAlign>
  				
  				<borderAlign align="south">  	
  			  	<button action="${createPageAction}"/>
  				</borderAlign>
  			</borderLayout>
  		</panel>
  	</frame>
  
  	${frame.show()}
  
  </j:jelly>
  
  
  
  1.1                  jakarta-commons-sandbox/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template1.jelly
  
  Index: template1.jelly
  ===================================================================
  <?xml version="1.0"?>
  <j:jelly trim="false" xmlns:j="jelly:core">
  
    <html>
    
    	<head>
  	<title>${name}'s Page</title>
  	</head>
  	
  	<body bgcolor="${background}" text="#FFFFFF">
  
  	<h1>${name}'s Homepage</h1>
  	
  	<img src="${url}"/>
  	
  	<h2>My Hobbies</h2>
  	
  	<ul>
  	
  	<j:forEach items="${hobbies}" var="i">
  		<li>${i}</li>
  	</j:forEach>
  	
  	</ul>
  	
  	</body>
  
    </html>
    
  </j:jelly>
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message