summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java
blob: 3980f3153e4e3bd8515f8992440b5984bdd4911b (plain) (tree)
1
2
3
4
5
6
7
8
9




                                      



                           
                                







                                                                      


                                                                    










                                                                                          


                                                                
                                                                                       
                                            
                                                                     
 
                                                        
                                                           
                                                              

                                                        


                                                        









                                                                                                         


                                                                       
                                                               





                                                                    











                                                                                           









                                                                                           







                                                            
                                                 















                                                                                          
 
 
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() {
	}


}