A GUI Program that has some sample XForms and that allows you
to create new XForms.
Description: This program MenuForm.java can display any
XForm that contains textfields, comboboxes and submit buttons. It can
also create new XForms and display them.
MenuForm.java:
/* Author MADHURI POTU
This program can display any type of XForm and lets you create new
XForms*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.*;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import java.io.*;
import java.util.*;
import com.sun.xml.tree.*;
import com.sun.xml.parser.Resolver;
import com.sun.xml.tree.XmlDocument;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.*;
import org.xml.sax.*;
public class MenuForm extends JPanel implements ActionListener
{
XmlDocument doc1;
Element root;
int len;
JFrame frame2;
JPanel contentPane1;
JTextField text1;
JTextField text5;
String text;
int nofitems;
Element child2;
Element child4;
protected JButton b1, b2, b3, b4, submitbutton;
/* This is the method where all the buttons are created.
b1 to open form1, b2 to open form2, b3 to open form3 and
New Form to create a new form*/
public MenuForm()
{
b1 = new JButton("Form1");
b2 = new JButton("Form2");
b3 = new JButton("Form3");
b4 = new JButton("New Form");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
add(b1);
add(b2);
add(b3);
add(b4);
}
/* This is the method where all the actions are performed. The actions
Form1, Form2 and Form 3 open up existing XForms.
The action New Form lets you create new Form. The action Submit Form
lets you display the new form created. */
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("Form1"))
{
newform("entryform.xml");
}
if (e.getActionCommand().equals("Form2"))
{
newform("form2.xml");
}
if (e.getActionCommand().equals("Form3"))
{
newform("form3.xml");
}
if (e.getActionCommand().equals("New Form"))
{
frame2 = new JFrame("New Form");
frame2.setDefaultLookAndFeelDecorated(true);
frame2.setSize(350, 350);
contentPane1 = new JPanel();
contentPane1.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
contentPane1.setLayout(new FlowLayout());
frame2.setContentPane(contentPane1);
doc1 = new XmlDocument ();
root = (Element) doc1.createElement ("html");
root.setAttribute("xmlns:xform", "http://www.w3.org/2002/01/xforms");
doc1.appendChild(root);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
menu.setMnemonic(KeyEvent.VK_A);
menuBar.add(menu);
JMenuItem menuItem = new JMenuItem("New TextField",
KeyEvent.VK_T);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("New ComboBox",
KeyEvent.VK_T);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem.addActionListener(this);
menu.add(menuItem);
contentPane1.add(menuBar);
JButton submitbut = new JButton("Submit Form");
contentPane1.add(submitbut);
submitbut.addActionListener(this);
frame2.setVisible(true);
frame2.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
}
if(e.getActionCommand().equals("New TextField"))
{
JLabel label = new JLabel("Enter the name of the textfield: ");
text1 = new JTextField(10);
text1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
text = text1.getText();
Element child = (Element)doc1.createElement("xform:input");
root.appendChild(child);
child.setAttribute("value", text);
Text child1 = (Text)doc1.createTextNode(text);
child.appendChild(child1);
try{
doc1.write(System.out);
}catch (IOException io){}
}});
contentPane1.add(label);
contentPane1.add(text1);
frame2.show();
}
if(e.getActionCommand().equals("New ComboBox"))
{
JLabel label = new JLabel("Enter the name of the ComboBox: ");
contentPane1.add(label);
text1 = new JTextField(10);
contentPane1.add(text1);
text1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
text = text1.getText();
Text child1 = (Text)doc1.createTextNode(text);
Element child = (Element)doc1.createElement("xform:selectOne");
root.appendChild(child);
child.appendChild(child1);
child.setAttribute("value", text);
child2 = (Element) doc1.createElement("xform:choices");
child.appendChild(child2);
Text child5 = (Text)doc1.createTextNode("");
child2.appendChild(child5);
}});
JLabel label1 = new JLabel("Enter the number of items in the ComboBox: ");
contentPane1.add(label1);
text5 = new JTextField(10);
contentPane1.add(text5);
text5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
String text3 = text5.getText();
nofitems = Integer.parseInt(text3);
System.out.println("text is" + nofitems);
System.out.println("no is" + nofitems);
for(int i=0; i<nofitems; i++)
{
JLabel label2 = new JLabel("Enter the name of item" + i);
final JTextField textfield = new JTextField(10);
contentPane1.add(label2);
contentPane1.add(textfield);
frame2.show();
textfield.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
String text = textfield.getText();
child4 = (Element) doc1.createElement("xform:item");
child2.appendChild(child4);
child4.setAttribute("value", text);
Text child3 = (Text)doc1.createTextNode(text);
child4.appendChild(child3);
try{
doc1.write(System.out);
}catch (IOException io){}
}});
}
}});
frame2.show();
}
if((e.getActionCommand().equals("Submit Form")))
{
JLabel filenae = new JLabel("Enter the name of File:");
contentPane1.add(filenae);
final JTextField field = new JTextField(10);
contentPane1.add(field);
frame2.show();
field.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
String text1 = field.getText();
try
{
PrintWriter fileData = new PrintWriter(new FileWriter(text1));
doc1.write (fileData);
} catch (Throwable t) {}
newform(text1);
}});
}
}
/* This method lets you return the attribute value of the node */
private static String attrivalue (String name)
{
int start = name.indexOf("\"") + 1;
int end = name.lastIndexOf("\"");
String value= name.substring(start, end);
return value;
}
/* This method opens an existing XForm and displays the form */
private static void newform(String form)
{
JFrame frame1 = new JFrame("Forms");
frame1.setDefaultLookAndFeelDecorated(true);
frame1.setSize(350, 350);
JPanel contentPane = new JPanel();
contentPane.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
contentPane.setLayout(new GridLayout(0,2));
frame1.setContentPane(contentPane);
try {
InputSource input = Resolver.createInputSource (new File (form));
XmlDocument doc = XmlDocument.createXmlDocument (input, false);
doc.getDocumentElement ().normalize ();
java.io.StringWriter fileData = new java.io.StringWriter();
doc.write (fileData);
NodeList listOftextf = doc.getElementsByTagName("xform:input");
int totallist = listOftextf.getLength();
System.out.println("Total no of textfields : " + totallist);
NodeList listOfcheck = doc.getElementsByTagName("xform:selectOne");
int totallist1 = listOfcheck.getLength();
System.out.println("Total no of checkboxes : " + totallist1);
for(int i=0; i<totallist; i++)
{
String c = listOftextf.item(i).getAttributes().toString();
String name= attrivalue(c);
JLabel label = new JLabel(name);
JTextField element1 = new JTextField(10);
contentPane.add(label);
contentPane.add(element1);
}
for(int i=0; i<totallist1; i++)
{
Element node = (Element) listOfcheck.item(i).getChildNodes();
String c1 = node.getAttributes().toString();
String name1 = attrivalue(c1);
JLabel label1 = new JLabel(name1);
JComboBox cb = new JComboBox();
contentPane.add(label1);
contentPane.add(cb);
NodeList node2 = (NodeList)node.getElementsByTagName("xform:item");
int len = node2.getLength();
for(int j=0; j<len; j++)
{
Element node3 = (Element) node2.item(j).getChildNodes();
String c2 = node3.getAttributes().toString();
String name2 = attrivalue(c2);
cb.addItem(name2);
}
}
JButton submitbutton = new JButton("Submit");
contentPane.add(submitbutton);
} catch (SAXParseException err) {}catch (SAXException er) {} catch (Throwable t) {}
frame1.setVisible(true);
frame1.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
}
/* This is the main method*/
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FormsMenu");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MenuForm formsm = new MenuForm();
frame.getContentPane().add(new MenuForm(), null);
frame.setSize(450, 260);
frame.setVisible(true);
}
}
|