// Path: src/main/java/de/konnekting/suite/events/EventConsoleMessage.java
// public class EventConsoleMessage {
//     private final String message;
// 
//     public EventConsoleMessage(String message) {
//         this.message = message;
//     }
// 
//     public EventConsoleMessage(String message, Throwable ex) {
//         StringWriter sw = new StringWriter();
//         PrintWriter pw = new PrintWriter(sw);
//         ex.printStackTrace(pw);
//         this.message = message +"\n"+sw.toString();
//     }
// 
//     public String getMessage() {
//         return message;
//     }
//     
// }
// 
// Path: src/main/java/de/konnekting/suite/events/EventDeviceListRefresh.java
// public class EventDeviceListRefresh {
//     
// }
// 
// Path: src/main/java/de/konnekting/suite/utils/Utils.java
// public class Utils {
// 
//     public static double FACTOR = 0.95d;
// 
//     public static Color darker(Color c) {
//         c = new Color(Math.max((int) (c.getRed() / FACTOR), 0),
//                 Math.max((int) (c.getGreen() / FACTOR), 0),
//                 Math.max((int) (c.getBlue() / FACTOR), 0),
//                 c.getAlpha());
//         return c;
//     }
// 
//     public static Color brighter(Color c) {
//         c = new Color(Math.max((int) (c.getRed() * FACTOR), 0),
//                 Math.max((int) (c.getGreen() * FACTOR), 0),
//                 Math.max((int) (c.getBlue() * FACTOR), 0),
//                 c.getAlpha());
//         return c;
//     }
// 
//     public static String getArea(String addr) {
//         return addr.substring(0, addr.indexOf("."));
//     }
// 
//     public static String getLine(String addr) {
//         return addr.substring(nthIndexOf(addr, ".".charAt(0), 1) + 1, nthIndexOf(addr, ".".charAt(0), 2));
//     }
// 
//     public static String getMember(String addr) {
//         return addr.substring(nthIndexOf(addr, ".".charAt(0), 2) + 1);
//     }
// 
//     public static int nthIndexOf(String text, char needle, int n) {
//         for (int i = 0; i < text.length(); i++) {
//             if (text.charAt(i) == needle) {
//                 n--;
//                 if (n == 0) {
//                     return i;
//                 }
//             }
//         }
//         return -1;
//     }
// 
//     public static boolean isLinux() {
//         return System.getProperty("os.name").toUpperCase().contains("LINUX");
//     }
// 
//     public static NetworkInterface getNetworkinterfaceByName(String name) throws SocketException {
//         Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
//         while (networkInterfaces.hasMoreElements()) {
//             NetworkInterface ni = networkInterfaces.nextElement();
//             if (ni.getName().equals(name)) {
//                 return ni;
//             }
//         }
//         throw new SocketException("Interface with name '" + name + "' not found.");
//     }
//     
//     public static void removeDuplicates(List list) {
//         Set noDuplicates = new HashSet();
//         noDuplicates.addAll(list);
//         list.clear();
//         list.addAll(noDuplicates);
//     }
// 
// }


import de.konnekting.deviceconfig.DeviceConfigContainer;
import de.konnekting.deviceconfig.exception.InvalidAddressFormatException;
import de.konnekting.suite.events.EventConsoleMessage;
import de.konnekting.suite.events.EventDeviceListRefresh;
import de.konnekting.suite.utils.Utils;
import de.root1.rooteventbus.RootEventBus;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
        memberTextField.setRange(0, 255);
        memberTextField.setEmptyAllowed(true);
        
        areaTextField.setText("1");
        lineTextField.setText("1");
        memberTextField.setText("");
        
        
        areaTextField.addChangeListener(this);
        lineTextField.addChangeListener(this);
        memberTextField.addChangeListener(this);
        
        setEnabled(false);
        
    }
    
    public void setDevice(DeviceConfigContainer device) {
        if (device==null) {
            setEnabled(false);
            areaTextField.setText("1");
            lineTextField.setText("1");
            memberTextField.setText("");
            return;
        }
        setEnabled(true);
        this.device = device;
        String ia = device.getIndividualAddress();
        if (ia!=null) {
            areaTextField.setText(Utils.getArea(ia));
            lineTextField.setText(Utils.getLine(ia));
// Path: src/main/java/de/konnekting/suite/events/EventConsoleMessage.java
// public class EventConsoleMessage {
//     private final String message;
// 
//     public EventConsoleMessage(String message) {
//         this.message = message;
//     }
// 
//     public EventConsoleMessage(String message, Throwable ex) {
//         StringWriter sw = new StringWriter();
//         PrintWriter pw = new PrintWriter(sw);
//         ex.printStackTrace(pw);
//         this.message = message +"\n"+sw.toString();
//     }
// 
//     public String getMessage() {
//         return message;
//     }
//     
// }
// 
// Path: src/main/java/de/konnekting/suite/events/EventDeviceListRefresh.java
// public class EventDeviceListRefresh {
//     
// }
// 
// Path: src/main/java/de/konnekting/suite/utils/Utils.java
// public class Utils {
// 
//     public static double FACTOR = 0.95d;
// 
//     public static Color darker(Color c) {
//         c = new Color(Math.max((int) (c.getRed() / FACTOR), 0),
//                 Math.max((int) (c.getGreen() / FACTOR), 0),
//                 Math.max((int) (c.getBlue() / FACTOR), 0),
//                 c.getAlpha());
//         return c;
//     }
// 
//     public static Color brighter(Color c) {
//         c = new Color(Math.max((int) (c.getRed() * FACTOR), 0),
//                 Math.max((int) (c.getGreen() * FACTOR), 0),
//                 Math.max((int) (c.getBlue() * FACTOR), 0),
//                 c.getAlpha());
//         return c;
//     }
// 
//     public static String getArea(String addr) {
//         return addr.substring(0, addr.indexOf("."));
//     }
// 
//     public static String getLine(String addr) {
//         return addr.substring(nthIndexOf(addr, ".".charAt(0), 1) + 1, nthIndexOf(addr, ".".charAt(0), 2));
//     }
// 
//     public static String getMember(String addr) {
//         return addr.substring(nthIndexOf(addr, ".".charAt(0), 2) + 1);
//     }
// 
//     public static int nthIndexOf(String text, char needle, int n) {
//         for (int i = 0; i < text.length(); i++) {
//             if (text.charAt(i) == needle) {
//                 n--;
//                 if (n == 0) {
//                     return i;
//                 }
//             }
//         }
//         return -1;
//     }
// 
//     public static boolean isLinux() {
//         return System.getProperty("os.name").toUpperCase().contains("LINUX");
//     }
// 
//     public static NetworkInterface getNetworkinterfaceByName(String name) throws SocketException {
//         Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
//         while (networkInterfaces.hasMoreElements()) {
//             NetworkInterface ni = networkInterfaces.nextElement();
//             if (ni.getName().equals(name)) {
//                 return ni;
//             }
//         }
//         throw new SocketException("Interface with name '" + name + "' not found.");
//     }
//     
//     public static void removeDuplicates(List list) {
//         Set noDuplicates = new HashSet();
//         noDuplicates.addAll(list);
//         list.clear();
//         list.addAll(noDuplicates);
//     }
// 
// }


// Path: src/main/java/de/konnekting/suite/uicomponents/IndividualAddressInputPanel.java
import de.konnekting.deviceconfig.DeviceConfigContainer;
import de.konnekting.deviceconfig.exception.InvalidAddressFormatException;
import de.konnekting.suite.events.EventConsoleMessage;
import de.konnekting.suite.events.EventDeviceListRefresh;
import de.konnekting.suite.utils.Utils;
import de.root1.rooteventbus.RootEventBus;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

        memberTextField.setRange(0, 255);
        memberTextField.setEmptyAllowed(true);
        
        areaTextField.setText("1");
        lineTextField.setText("1");
        memberTextField.setText("");
        
        
        areaTextField.addChangeListener(this);
        lineTextField.addChangeListener(this);
        memberTextField.addChangeListener(this);
        
        setEnabled(false);
        
    }
    
    public void setDevice(DeviceConfigContainer device) {
        if (device==null) {
            setEnabled(false);
            areaTextField.setText("1");
            lineTextField.setText("1");
            memberTextField.setText("");
            return;
        }
        setEnabled(true);
        this.device = device;
        String ia = device.getIndividualAddress();
        if (ia!=null) {
            areaTextField.setText(Utils.getArea(ia));
            lineTextField.setText(Utils.getLine(ia));
            memberTextField.setText(Utils.getMember(ia));