private void signalEditorAddSignal() {
        if(se_signal.getSelectionIndex() == -1) return;
        if(signals == null) signals = new SignalBundle();
        Contact contact = new Contact(se_signal.getText());
        Signal signal = new Signal();
        String text = se_time.getText().replaceAll("[^0-9]+", " ").trim();
        if(text.length() < 1) return;
        String[] time = text.split(" ");
        text = se_state.getText().replaceAll("[^0-9]+", " ").trim();
        if(text.length() < 1) return;
        String[] state = text.split(" ");
        for(int n = 0; n < Math.min(time.length, state.length); n++) {
            long ntime = time[n].length() > 0 ? Long.parseLong(time[n]) : -1;
            int nstate = state[n].length() > 0 ? Integer.parseInt(state[n]) : -1;
            signal.getSignalSet().put(ntime, nstate);
        }
        signals.getSignals().put(contact, signal);
        
        signalEditorSelectionChanged();
        signalEditorSignalsChanged();
    }