blob: d843b75b08ef4e0c2f6ac7a4742b060a92d67402 [file] [log] [blame]
/*
* 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.vysper.demo.pubsub.client;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListModel;
public class PubsubOpenButtonListener implements ActionListener {
private PubsubClientModel parent;
public PubsubOpenButtonListener(PubsubClientModel parent) {
this.parent = parent;
}
public void actionPerformed(ActionEvent e) {
String nodeID = parent.getSelectedNode();
if (nodeID != null) {
createAndShowGUI(nodeID);
}
}
private void createAndShowGUI(String nodeID) {
ListModel lm = parent.getListModel(nodeID);
JFrame frame = new JFrame("Events from " + nodeID);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JList eventList = new JList(lm);
JScrollPane scrollPane = new JScrollPane(eventList);
frame.add(panel);
panel.add(scrollPane, BorderLayout.NORTH);
JTextField messageTxt = createOwnerControls(nodeID, panel);
frame.pack();
frame.setVisible(true);
setFocus(messageTxt);
}
private void setFocus(JTextField messageTxt) {
if (messageTxt != null) {
messageTxt.requestFocusInWindow();
}
}
private JTextField createOwnerControls(String nodeID, JPanel panel) {
boolean owner = parent.isOwner(nodeID);
JTextField messageTxt = null;
if (owner) {
messageTxt = new JTextField(20);
JButton publish = new JButton("Publish");
publish.setActionCommand("publish");
publish.addActionListener(new PubsubPublishButtonListener(nodeID, messageTxt, parent));
JPanel buttons = new JPanel();
buttons.add(messageTxt);
buttons.add(publish);
panel.add(buttons, BorderLayout.SOUTH);
}
return messageTxt;
}
}