blob: 3980f3153e4e3bd8515f8992440b5984bdd4911b (
plain) (
tree)
|
|
package org.openslx.dozmod.gui.window;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.Satellite;
import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.SatelliteListWindowLayout;
/**
* Window for selecting an available satellite or setting custom ip.
*/
@SuppressWarnings("serial")
public class SatelliteListWindow extends SatelliteListWindowLayout implements UiFeedback {
private final static Logger LOGGER = Logger.getLogger(SatelliteListWindow.class);
private static Satellite satellite;
public interface UserAddedCallback {
public void userAdded(UserInfo user, SatelliteListWindow window);
}
/**
* Don't use this, use the static function open instead.
*/
public SatelliteListWindow(final Window modalParent, List<Satellite> satList) {
super(modalParent, satList);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// Check, whether we have any satellites
if (satList != null && !satList.isEmpty()){
satelliteButtons[0].setSelected(true);
customIpField.setEnabled(false);
} else {
radioCustomIp.setSelected(true);
}
// deactivate the custom field when selecting a satellite to make things clearer for user
for ( int i = 0; i < satCount; i++ ){
satelliteButtons[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
customIpField.setEnabled(false);
}
});
}
radioCustomIp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
customIpField.setEnabled(true);
}
});
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// satellite is selected
if(!radioCustomIp.isSelected()){
// check, which satellite is selected
for (JRadioButton button : satelliteButtons) {
if(button.isSelected()){
// return it.
satellite = radioToSat.get(button);
}
}
}
// custom button selected or something went wrong
if (satellite == null || radioCustomIp.isSelected()) {
satellite = new Satellite();
satellite.addressList = new ArrayList<String>();
satellite.addressList.add(customIpField.getText());
}
dispose();
}
});
getRootPane().setDefaultButton(exitButton);
Gui.centerShellOverShell(modalParent, this);
}
/**
* Open a new SatelliteListWindow
*
* @param modalParent
* @param satList The list of satellites to display.
* @return satellite with address to use.
*/
public static Satellite open(Window modalParent, List<Satellite> satList) {
SatelliteListWindow win = new SatelliteListWindow( modalParent, satList );
win.setVisible(true);
return satellite;
}
@Override
public boolean wantConfirmQuit() {
return false;
}
@Override
public void escapePressed() {
}
}
|