summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java
blob: 8ab7882357e37a2b3d375e1c1209842cef6d3099 (plain) (tree)


















                                                                      


                                                                    










                                                                                          


                                                                


                                                                                       
 



                                                              
                                                                                      




                                                              



                                                                       
                                                               








                                                                            
                                                                                              





                                                                    
                                                                                                                





























                                                                                           
                                                 















                                                                                          
 
 
package org.openslx.dozmod.gui.window;

import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;

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);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

		if (satList != null && !satList.isEmpty()){
			satelliteTable.setData(satList, true);
			radioSatelliteTable.setSelected(true);
			customIpField.setEnabled(false);
			satelliteTable.setSelectedItem(satelliteTable.getModelRow(0));
		} else {
			radioSatelliteTable.setEnabled(false);
			radioCustomIp.setSelected(true);
		}

		radioCustomIp.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				satelliteTable.setEnabled(false);
				customIpField.setEnabled(true);
				satelliteTable.clearSelection();
			}
		});

		radioSatelliteTable.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				satelliteTable.setEnabled(true);
				customIpField.setEnabled(false);
				satelliteTable.setSelectedItem(satelliteTable.getModelRow(0));
			}
		});

		exitButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if(radioSatelliteTable.isSelected() && satelliteTable.getSelectedItem() != null)
					satellite = satelliteTable.getSelectedItem();
				else {
					satellite = new Satellite();
					satellite.addressList = new ArrayList<String>();
					satellite.addressList.add(customIpField.getText());
				}
				dispose();
			}
		});

		getRootPane().setDefaultButton(exitButton);

		satelliteTable.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if(satelliteTable.isEnabled()){
					if (e.getClickCount() == 2) {
						exitButton.doClick();
					}
				}
			}
		});
		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() {
	}


}