package com.dasatti.uhtml; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.text.*; import javax.swing.text.rtf.*; import javax.swing.text.html.*; import javax.swing.event.*; import java.util.*; public class ListBoxDialog extends JDialog { JTextField tfListName,tfFieldName,tfFieldValue; JButton btnInsert,btnAdd,btnDelete; JList lstFieldNames,lstFieldValues; String lboxHTML=""; Boolean success=false; ArrayList fieldNames; ArrayList fieldValues; public ListBoxDialog(JFrame parent) { super(parent,"Insert List",true); //super(); fieldNames=new ArrayList(); fieldValues=new ArrayList(); JPanel pnlParent=new JPanel(); pnlParent.setLayout(null); JLabel lblListName=new JLabel("List Name:"); tfListName=new JTextField(20); btnInsert=new JButton("Insert"); btnInsert.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String s=generateHTML(); dispose(); } } ); JPanel pnlLName=new JPanel(); //pnlLName.setLayout(null); add(lblListName); lblListName.setBounds(20,20,100,25); add(tfListName); tfListName.setBounds(100,20,170,25); add(btnInsert); btnInsert.setBounds(280,20,100,25); //pnlParent.add(pnlLName); JLabel lblFieldName=new JLabel("Field Name:"); JLabel lblFieldValue=new JLabel("Field Value:"); tfFieldName=new JTextField(); tfFieldValue=new JTextField(); btnAdd=new JButton("Add"); btnAdd.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { addItem(tfFieldName.getText().toString(),tfFieldValue.getText().toString()); tfFieldName.setText(""); tfFieldValue.setText(""); tfFieldName.grabFocus(); } } ); btnDelete=new JButton("delete"); btnDelete.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { deleteItem(tfFieldName.getText().toString(),tfFieldValue.getText().toString()); tfFieldName.setText(""); tfFieldValue.setText(""); tfFieldName.grabFocus(); } } ); lstFieldNames=new JList(fieldNames.toArray()); lstFieldNames.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if(!lstFieldNames.isSelectionEmpty()) { int index=lstFieldNames.getSelectedIndex(); lstFieldValues.setSelectedIndex(index); tfFieldName.setText(lstFieldNames.getSelectedValue().toString()); tfFieldValue.setText(lstFieldValues.getSelectedValue().toString()); } } } ); lstFieldValues=new JList(fieldValues.toArray()); lstFieldValues.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if(!lstFieldValues.isSelectionEmpty()) { int index=lstFieldValues.getSelectedIndex(); lstFieldNames.setSelectedIndex(index); tfFieldName.setText(lstFieldNames.getSelectedValue().toString()); tfFieldValue.setText(lstFieldValues.getSelectedValue().toString()); } } } ); lstFieldNames.setVisibleRowCount(4); lstFieldValues.setVisibleRowCount(4); JPanel pnlFields=new JPanel(); pnlFields.setLayout(new GridLayout(2,1)); JPanel pnlAddFields=new JPanel(new GridLayout(3,2)); JPanel pnlPreviewFields=new JPanel(new GridLayout(1,2)); pnlAddFields.add(lblFieldName); pnlAddFields.add(lblFieldValue); pnlAddFields.add(tfFieldName); pnlAddFields.add(tfFieldValue); pnlAddFields.add(btnAdd); pnlAddFields.add(btnDelete); pnlPreviewFields.add(new JScrollPane(lstFieldNames)); pnlPreviewFields.add(new JScrollPane(lstFieldValues)); pnlFields.add(pnlAddFields); pnlFields.add(pnlPreviewFields); pnlFields.setBorder(new TitledBorder(new EtchedBorder(), "Fields")); pnlFields.setBounds(20,60,370,175); pnlParent.add(pnlFields); add(pnlParent); pack(); setBounds(400,200,415,300); setResizable(false); //setVisible(true); } public void addItem(String _name, String _value) { if(_name.length()>0) { if(_value.length()<=0) { _value=" "; } fieldNames.add(_name); fieldValues.add(_value); lstFieldNames.setListData(fieldNames.toArray()); lstFieldValues.setListData(fieldValues.toArray()); } } public void deleteItem(String _name, String _value) { fieldNames.remove(_name); fieldValues.remove(_value); lstFieldNames.setListData(fieldNames.toArray()); lstFieldValues.setListData(fieldValues.toArray()); } public void updateFields(String _name, String _value) { tfFieldName.setText(_name); tfFieldValue.setText(_value); } public String generateHTML() { String _lboxHTML="<SELECT"; if(tfListName.getText().length()>0) _lboxHTML+=" Name=\""+tfListName.getText().toString()+"\""; _lboxHTML+=">"; Object arrFieldNames[]=fieldNames.toArray(); Object arrFieldValues[]=fieldValues.toArray(); for(int i=0;i<fieldNames.size();i++) { _lboxHTML+="<OPTION VALUE=\""+((String)arrFieldValues[i]).toString()+"\">"+((String)arrFieldNames[i]).toString()+"</OPTION>"; } if(fieldNames.size()<=0) _lboxHTML+="<OPTION></OPTION>"; _lboxHTML+="</SELECT>"; lboxHTML=_lboxHTML; success=true; return _lboxHTML.toString(); } public Boolean succeeded() { return success; } public String getHTML() { return lboxHTML; } ///* public static void main(String a[]) { ListBoxDialog app=new ListBoxDialog(null); app.show(); if(app.succeeded()) { System.out.println(app.getHTML()); //System.out.println(app.getHTML()); //app.dispose(); } } //*/ }