From 84e961643160bb4ed13a20c95fc773621ca95ed0 Mon Sep 17 00:00:00 2001 From: "DESKTOP-9AKG4SL\\ecomeau" Date: Wed, 29 Jul 2026 11:51:00 -0700 Subject: [PATCH] Add configurable channel clone dialog Signed-off-by: DESKTOP-9AKG4SL\ecomeau --- .../connect/client/ui/ChannelCloneDialog.java | 286 ++++++++++++++++++ .../mirth/connect/client/ui/ChannelPanel.java | 147 +++++++-- .../mirth/connect/client/ui/ChannelSetup.java | 8 +- .../com/mirth/connect/client/ui/Frame.java | 6 +- 4 files changed, 423 insertions(+), 24 deletions(-) create mode 100644 client/src/main/java/com/mirth/connect/client/ui/ChannelCloneDialog.java diff --git a/client/src/main/java/com/mirth/connect/client/ui/ChannelCloneDialog.java b/client/src/main/java/com/mirth/connect/client/ui/ChannelCloneDialog.java new file mode 100644 index 0000000000..1a1bdbcecb --- /dev/null +++ b/client/src/main/java/com/mirth/connect/client/ui/ChannelCloneDialog.java @@ -0,0 +1,286 @@ +/* + * Copyright (c) Mirth Corporation. All rights reserved. + * + * The software in this package is published under the terms of the MPL license. + */ + +package com.mirth.connect.client.ui; + +import java.awt.Dimension; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; + +import com.mirth.connect.model.Channel; +import com.mirth.connect.model.ChannelDependency; +import com.mirth.connect.model.ChannelGroup; +import com.mirth.connect.model.ChannelTag; + +import net.miginfocom.swing.MigLayout; +import org.apache.commons.lang3.StringUtils; + +/** Dialog for selecting which channel associations should be copied during a clone. */ +public class ChannelCloneDialog extends MirthDialog { + + public interface ChannelNameValidator { + boolean isValid(String name); + } + + public static class Option { + private final String id; + private final String name; + + public Option(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + @Override + public String toString() { + return name == null ? id : name; + } + } + + private final List