All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.geronimo.samples.daytrader.client.TradeClientGUI Maven / Gradle / Ivy

The newest version!
/**
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.apache.geronimo.samples.daytrader.client;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.apache.geronimo.samples.daytrader.client.table.*;

public class TradeClientGUI extends JFrame implements ActionListener, WindowListener {
	private JMenuItem resetItem;
	private JMenuItem exitItem;
	private JMenuItem propItem;
	private TradeClient client;
	private JTextField statusMsg;
	private JLabel webLabel, ejbLabel;
	private TradeClientGUIProperties props;

	private static final String TRADELOGO_FILENAME = "/images/dayTraderLogo.gif";
	private static final String WEBSPHERELOGO_FILENAME = "/images/copyRight.gif";

	public TradeClientGUI(TradeClient client) {
		this.client = client;
		
		JTabbedPane overallPanel = new JTabbedPane();

		// Panel 1 - Streaming quotes
		JPanel streamerPanel = new JPanel();
		streamerPanel.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
		JPanel topBarPanel = new JPanel();
		topBarPanel.setLayout(new BoxLayout(topBarPanel, BoxLayout.X_AXIS));
		JPanel topImagePanel = new JPanel();
		topImagePanel.setLayout(new BorderLayout());

		statusMsg = new JTextField("");

		SortableTable auditTable = new SortableTable(client.getAuditStats());
		auditTable.setDefaultRenderer(ChangeModel.class, new ChangeRenderer());
		auditTable.setDefaultRenderer(AuditModel.class, new AuditRenderer());
		auditTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

		JScrollPane scrollpane1 = new JScrollPane(auditTable);

		ImageIcon iconTrade = new ImageIcon(this.getClass().getResource(TRADELOGO_FILENAME));
//		ImageIcon iconWS = new ImageIcon(this.getClass().getResource(WEBSPHERELOGO_FILENAME));

		topImagePanel.add(new JLabel(iconTrade), BorderLayout.WEST);
//		topImagePanel.add(new JLabel(iconWS), BorderLayout.EAST);

		streamerPanel.setLayout(new BorderLayout());
		streamerPanel.add(topImagePanel, BorderLayout.NORTH);
		streamerPanel.add(scrollpane1, BorderLayout.CENTER);
		streamerPanel.add(statusMsg, BorderLayout.SOUTH);
        
		// Overall Frame
		setTitle("Trade Client Application");
		addWindowListener(this);

		JMenuBar jmb = new JMenuBar();
		JMenu file = new JMenu ("File");
		exitItem = new JMenuItem("Exit");
		resetItem = new JMenuItem("Reset");
		propItem = new JMenuItem("Properties");
    file.add(exitItem);
		file.add(resetItem);
		file.add(propItem);
    exitItem.addActionListener(this);
		resetItem.addActionListener(this);
    propItem.addActionListener(this);
		jmb.add(file);
		setJMenuBar(jmb);

		overallPanel.addTab("Streamer", streamerPanel);
		getContentPane().add(overallPanel, java.awt.BorderLayout.CENTER);
		setSize(800, 600);

		props = new TradeClientGUIProperties(client, this);
		props.pack();

		setVisible(true);
	}

	public void updateStatusMessage(String message) {
		statusMsg.setText(message);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == resetItem) {
			try {
				client.reset();
			}
			catch (Exception ex)	{
				System.err.println("Caught an unexpected exception!");
				ex.printStackTrace();
			}
		}
		if (e.getSource() == propItem) {
			props.setVisible(true);
		}
		if (e.getSource() == exitItem) {
			client.closeClient();
		}
	}

	public void windowClosing(WindowEvent e) {
		client.closeClient();
	}

	public void windowOpened(WindowEvent e) {}
	public void windowClosed(WindowEvent e) {}
	public void windowIconified(WindowEvent e) {}
	public void windowDeiconified(WindowEvent e) {}
	public void windowActivated(WindowEvent e) {}
	public void windowDeactivated(WindowEvent e) {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy