// Fig. 18.04: PropertiesTest.java // Demonstrates class Properties of the java.util package. import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; import com.deitel.jhtp2.ch11.CloseWindowAndExit; public class PropertiesTest extends Frame implements ActionListener { private Properties table; private FileInputStream input; private FileOutputStream output; private TextField propName, propVal, result; private TextArea display; private Button put, clear, getProperty, save, load; public PropertiesTest() { super( "Properties Test" ); table = new Properties(); setLayout( new FlowLayout() ); add( new Label( "Property name (key)" ) ); propName = new TextField( 10 ); add( propName ); add( new Label( "Property value" ) ); propVal = new TextField( 10 ); add( propVal ); display = new TextArea( 4, 35 ); add( display ); put = new Button( "Put" ); put.addActionListener( this ); add( put ); clear = new Button( "Clear" ); clear.addActionListener( this ); add( clear ); getProperty = new Button( "Get property" ); getProperty.addActionListener( this ); add( getProperty ); save = new Button( "Save" ); save.addActionListener( this ); add( save ); load = new Button( "Load" ); load.addActionListener( this ); add( load ); result = new TextField( 35 ); result.setEditable( false ); add( result ); setSize( 275, 225 ); setVisible( true ); } public void actionPerformed( ActionEvent e ) { if ( e.getSource() == put ) { Object val = table.put( propName.getText(), propVal.getText() ); if ( val == null ) showStatus( "Put: " + propName.getText() + " " + propVal.getText() ); else showStatus( "Put: " + propName.getText() + " " + propVal.getText() + "; Replaced: " + val.toString() ); } else if ( e.getSource() == clear ) { table.clear(); showStatus( "Table in memory cleared" ); } else if ( e.getSource() == getProperty ) { Object val = table.getProperty( propName.getText() ); if ( val != null ) showStatus( "Get property: " + propName.getText() + " " + val.toString() ); else showStatus( "Get: " + propName.getText() + " not in table" ); } else if ( e.getSource() == save ) { try { output = new FileOutputStream( "props.dat" ); table.save( output, "Sample Properties" ); output.close(); } catch( IOException ex ) { showStatus( ex.toString() ); } } else if ( e.getSource() == load ) { try { input = new FileInputStream( "props.dat" ); table.load( input ); input.close(); } catch( IOException ex ) { showStatus( ex.toString() ); } } listProperties(); } public void listProperties() { StringBuffer buf = new StringBuffer(); String pName, pVal; Enumeration enum = table.propertyNames(); while( enum.hasMoreElements() ) { pName = enum.nextElement().toString(); pVal = table.getProperty( pName ); buf.append( pName ).append( '\t' ); buf.append( pVal ).append( '\n' ); } display.setText( buf.toString() ); } public void showStatus( String s ) { result.setText( s ); } public static void main( String args[] ) { PropertiesTest p = new PropertiesTest(); p.addWindowListener( new CloseWindowAndExit() ); } }