package networkinggui;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JCheckBox;
import java.awt.GridLayout;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import org.osgi.framework.BundleContext;
import com.buglabs.bug.networking.pub.INetworking;
public class DeviceActivator implements ItemListener {
private INetworking ks;
private BundleContext context;
private JCheckBox ethernetEnable;
private JCheckBox wifiEnable;
private JLabel ethernetLabel;
private JLabel wifiLabel;
public DeviceActivator(INetworking ks, BundleContext context) {
this.ks = ks;
this.context = context;
ethernetEnable = new JCheckBox();
ethernetEnable.addItemListener(this);
wifiEnable = new JCheckBox();
wifiEnable.addItemListener(this);
ethernetLabel = new JLabel("ethernet");
wifiLabel = new JLabel("wifi");
}
public JPanel getPanel() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2));
panel.add(ethernetLabel);
panel.add(ethernetEnable);
panel.add(wifiLabel);
panel.add(wifiEnable);
populateUI();
return panel;
}
public void itemStateChanged(ItemEvent e) {
if (e.getSource() == ethernetEnable) {
if (ks.getEthernetDevice().isEnabled() != ethernetEnable.isSelected()) {
Activator.logDebug(ethernetEnable.isSelected() ? "enabling" : "disabling" + " ethernet");
ks.getEthernetDevice().setEnabled(ethernetEnable.isSelected());
}
} else if (e.getSource() == wifiEnable) {
if (ks.getWifiDevice().isEnabled() != wifiEnable.isSelected()) {
ks.getWifiDevice().setEnabled(wifiEnable.isSelected());
}
}
}
private void populateUI() {
new Thread() {
public void run() {
final Boolean ethernetItemEnabled = ks.getEthernetDevice().isAvailable();
final Boolean ethernetChecked = ks.getEthernetDevice().isEnabled() && ks.getEthernetDevice().isAvailable();
final Boolean wifiItemEnabled = ks.getWifiDevice().isAvailable();
final Boolean wifiChecked = ks.getWifiDevice().isEnabled() && ks.getWifiDevice().isAvailable();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ethernetEnable.setEnabled(ethernetItemEnabled);
ethernetEnable.setSelected(ethernetChecked);
wifiEnable.setEnabled(wifiItemEnabled);
wifiEnable.setSelected(wifiChecked);
}
});
}
}.start();
}
}