From 804b3d85abc77cad1f1e4f183254ec8361209d2b Mon Sep 17 00:00:00 2001 From: ptma Date: Thu, 16 Jan 2025 22:51:53 +0800 Subject: [PATCH 1/7] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E6=A0=91=EF=BC=8C=E6=8F=90=E5=8D=87=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/component/TopicSegment.java | 518 ------------ .../ui/component/tree/SegmentTreeNode.java | 185 +++++ .../ui/component/tree/TopicTree.java | 258 ++++++ .../component/tree/TopicTreeCellRenderer.java | 82 ++ .../ui/component/tree/TopicTreeUI.java | 55 ++ .../ui/form/panel/MqttInstanceTabPanel.java | 11 +- .../ui/form/panel/TopicTreePanel.java | 186 ----- .../com/mqttinsight/ui/frame/MainFrame.java | 2 + src/main/java/com/mqttinsight/util/Utils.java | 10 + .../com/mqttinsight/Lang_en.properties | 740 +++++++++--------- .../com/mqttinsight/Lang_zh_CN.properties | 740 +++++++++--------- 11 files changed, 1342 insertions(+), 1445 deletions(-) delete mode 100644 src/main/java/com/mqttinsight/ui/component/TopicSegment.java create mode 100644 src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java create mode 100644 src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java create mode 100644 src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java create mode 100644 src/main/java/com/mqttinsight/ui/component/tree/TopicTreeUI.java delete mode 100644 src/main/java/com/mqttinsight/ui/form/panel/TopicTreePanel.java diff --git a/src/main/java/com/mqttinsight/ui/component/TopicSegment.java b/src/main/java/com/mqttinsight/ui/component/TopicSegment.java deleted file mode 100644 index ad4fdc3..0000000 --- a/src/main/java/com/mqttinsight/ui/component/TopicSegment.java +++ /dev/null @@ -1,518 +0,0 @@ -package com.mqttinsight.ui.component; - -import com.formdev.flatlaf.extras.FlatSVGIcon; -import com.mqttinsight.ui.form.panel.MqttInstance; -import com.mqttinsight.ui.form.panel.TopicTreePanel; -import com.mqttinsight.util.Icons; -import com.mqttinsight.util.LangUtil; -import lombok.Getter; -import net.miginfocom.swing.MigLayout; -import org.jdesktop.swingx.JXLabel; -import org.jdesktop.swingx.VerticalLayout; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.util.List; -import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - -/** - * @author ptma - */ -public class TopicSegment extends JPanel { - - private static final Color HOVER_BG_COLOR = UIManager.getColor("Button.default.hoverBackground"); - private static final Color NORMAL_BG_COLOR = UIManager.getColor("Tree.background"); - private static final Color SELECTED_BG_COLOR = UIManager.getColor("Table.selectionInactiveBackground"); - - private static final Color TEXT_VISIBLE_COLOR = UIManager.getColor("Label.foreground"); - private static final Color TEXT_INVISIBLE_COLOR = UIManager.getColor("Label.disabledForeground"); - private static final Icon ICON_COLLAPSED = UIManager.getIcon("Tree.collapsedIcon"); - private static final Icon ICON_EXPANDED = UIManager.getIcon("Tree.expandedIcon"); - private static final Icon ICON_EMPTY = new FlatSVGIcon("svg/icons/dot.svg", ICON_EXPANDED.getIconWidth(), ICON_EXPANDED.getIconHeight()); - - private final MqttInstance mqttInstance; - private final TopicTreePanel topicTreePanel; - private final JComponent parent; - - private final SegmentNodePanel nodePanel; - private final JPanel childrenPanel; - - @Getter - private final String name; - @Getter - private final String fullTopic; - @Getter - private boolean expanded; - @Getter - private boolean segmentVisible = true; - - private boolean selected = false; - private int level; - - private final AtomicInteger messageCount = new AtomicInteger(0); - - public TopicSegment(MqttInstance mqttInstance, TopicTreePanel topicTreePanel, JComponent parent, String name, int level, boolean expanded) { - super(); - setOpaque(false); - setLayout(new VerticalLayout(0)); - - this.mqttInstance = mqttInstance; - this.topicTreePanel = topicTreePanel; - this.parent = parent; - this.name = name; - this.expanded = expanded; - this.level = level; - this.fullTopic = (parent instanceof TopicSegment parentSegment) ? - ( - // Root segment, topic start with / - parentSegment.getName().equals("/") ? - parentSegment.getFullTopic() + name - : - parentSegment.getFullTopic() + "/" + name - ) - : - name; - - nodePanel = new SegmentNodePanel(this); - add(nodePanel); - - childrenPanel = new JPanel(); - childrenPanel.setLayout(new VerticalLayout(0)); - childrenPanel.setOpaque(false); - childrenPanel.setBorder(new EmptyBorder(0, 0, 0, 0)); - if (!expanded) { - childrenPanel.setPreferredSize(new Dimension(0, 0)); - } - add(childrenPanel); - - if (parent instanceof TopicSegment parentSegment) { - if (!parentSegment.isSegmentVisible()) { - toggleSegmentVisible(false, false, false); - } - } - } - - public Set getInvisibleTopics() { - if (!isSegmentCompositeVisible()) { - return new HashSet<>(Collections.singletonList(getFullTopic())); - } else { - return getChildren().stream() - .map(TopicSegment::getInvisibleTopics) - .reduce((setA, setB) -> { - setA.addAll(setB); - return setA; - }) - .orElseGet(HashSet::new); - } - } - - public int getChildrenCount() { - return childrenPanel.getComponentCount(); - } - - public List getChildren() { - return Arrays.stream(childrenPanel.getComponents()) - .map(c -> (TopicSegment) c) - .collect(Collectors.toCollection(CopyOnWriteArrayList::new)); - } - - public Optional getChild(String segment) { - return Arrays.stream(childrenPanel.getComponents()).map(c -> (TopicSegment) c) - .filter(c -> c.getName().equals(segment)) - .findFirst(); - } - - public void removeSelf() { - if (parent instanceof TopicSegment parentSegment) { - parentSegment.removeChildSegment(this); - } else if (parent instanceof TopicTreePanel topicTree) { - topicTree.removeRootSegment(this); - } - } - - private void removeChildSegment(TopicSegment child) { - childrenPanel.remove(child); - updateNode(true); - if (isExpanded()) { - updateSize(); - } - if (getTopicCount() == 0) { - removeSelf(); - } - } - - public void incrementMessages() { - messageCount.incrementAndGet(); - updateNode(false); - } - - public void incrementMessages(List topicSegments) { - if (topicSegments.isEmpty()) { - return; - } - String segment = topicSegments.get(0); - - AtomicBoolean childAppended = new AtomicBoolean(false); - TopicSegment child = getChild(segment).orElseGet(() -> { - TopicSegment newChild = new TopicSegment(mqttInstance, topicTreePanel, this, segment, level + 1, false); - addChildSegment(newChild); - updateSegmentCompositeVisibleStatus(true, false); - childAppended.set(true); - return newChild; - }); - if (topicSegments.size() > 1) { - child.incrementMessages(topicSegments.subList(1, topicSegments.size())); - } else { - child.incrementMessages(); - } - if (childAppended.get() && isExpanded()) { - updateSize(); - } - if (childAppended.get() && !isSegmentVisible()) { - topicTreePanel.notifyTopicSegmentsVisibleChange(); - } - } - - private void addChildSegment(TopicSegment segment) { - List segments = getChildren(); - for (int i = 0; i < segments.size(); i++) { - TopicSegment existingSegment = segments.get(i); - if (segment.getName().compareTo(existingSegment.getName()) <= 0) { - childrenPanel.add(segment, i); - return; - } - } - childrenPanel.add(segment); - } - - public void decrementMessages(String topic) { - if (fullTopic.equals(topic)) { - if (messageCount.get() > 0) { - messageCount.decrementAndGet(); - } - if (getTopicCount() == 0) { - removeSelf(); - } else { - updateNode(false); - } - } else if (topic.startsWith(fullTopic)) { - getChildren().forEach(segment -> segment.decrementMessages(topic)); - } - } - - public void toggleExpanded() { - this.expanded = !this.expanded; - updateNode(false); - updateSize(); - } - - public void setSelected(boolean selected) { - this.selected = selected; - nodePanel.selected(selected); - if (selected) { - topicTreePanel.changeSelectedSegment(this); - } - } - - public int getSelfMessageCount() { - return messageCount.get(); - } - - public int getTotalMessageCount() { - return getSelfMessageCount() + getChildren().stream().map(TopicSegment::getTotalMessageCount) - .reduce(0, Integer::sum); - } - - public int getTopicCount() { - int count = 0; - if (getSelfMessageCount() > 0) { - count++; - } - count += getChildren().stream() - .map(TopicSegment::getTopicCount) - .reduce(0, Integer::sum); - return count; - } - - public Dimension getComponentSize() { - int width = nodePanel.getPreferredSize().width; - int height = nodePanel.getPreferredSize().height; - if (this.expanded) { - resizeChildrenPanel(); - height += childrenPanel.getPreferredSize().height; - } - return new Dimension(width, height); - } - - public int calcSegmentScrollHeight(List topicSegments) { - int height = 0; - for (TopicSegment segment : getChildren()) { - if (segment.getName().equals(topicSegments.get(0))) { - height += segment.nodePanel.getHeight(); - if (topicSegments.size() > 1) { - if (!segment.isExpanded()) { - segment.toggleExpanded(); - } - height += segment.calcSegmentScrollHeight(topicSegments.subList(1, topicSegments.size())); - } else { - segment.setSelected(true); - } - return height; - } else { - height += segment.getHeight(); - } - } - return height; - } - - private void resizeChildrenPanel() { - int width = nodePanel.getPreferredSize().width; - int height = 0; - if (this.expanded) { - for (TopicSegment child : getChildren()) { - Dimension itemSize = child.getComponentSize(); - height += itemSize.height; - } - } - childrenPanel.setPreferredSize(new Dimension(width, height)); - childrenPanel.revalidate(); - //childrenPanel.repaint(); - } - - /** - * During the clearing process, the number of messages in this segment will be updated synchronously. - * When the number is 0, this segment will be removed - *

- * {@link com.mqttinsight.ui.form.panel.MessageViewPanel#doClearMessages(String)} (String)} - */ - public void removeSegmentMessages() { - SwingUtilities.invokeLater(() -> { - mqttInstance.applyEvent(l -> l.clearMessages(getFullTopic())); - }); - } - - public boolean isSegmentCompositeVisible() { - return segmentVisible || getChildren().stream().anyMatch(TopicSegment::isSegmentCompositeVisible); - } - - public void updateSegmentCompositeVisibleStatus(boolean updateParent, boolean notify) { - nodePanel.changeSegmentVisibleStatus(isSegmentCompositeVisible()); - if (updateParent && parent instanceof TopicSegment parentSegment) { - parentSegment.updateSegmentCompositeVisibleStatus(true, notify); - } - if (notify && parent instanceof TopicTreePanel topicTree) { - topicTree.notifyTopicSegmentsVisibleChange(); - } - } - - /** - * @param segmentVisible Whether the segment is visible - * @param effectOnChildren Does visibility change need to affect its children - */ - public void toggleSegmentVisible(boolean segmentVisible, boolean effectOnChildren, boolean updateParentCompositeVisibleStatus) { - if (effectOnChildren) { - getChildren().forEach(child -> child.toggleSegmentVisible(segmentVisible, true, false)); - } - - this.segmentVisible = segmentVisible; - nodePanel.changeSegmentVisibleStatus(this.segmentVisible); - - if (updateParentCompositeVisibleStatus) { - updateSegmentCompositeVisibleStatus(true, true); - } - } - - public void updateNode(boolean repaint) { - nodePanel.setIcon(getChildrenCount() > 0 ? (this.expanded ? ICON_EXPANDED : ICON_COLLAPSED) : ICON_EMPTY); - - String topicsDescription, messagesDescription; - int topicsCount = getTopicCount(); - if (topicsCount > 1) { - topicsDescription = LangUtil.getString("SegmentTopicsDescription"); - } else { - topicsDescription = LangUtil.getString("SegmentTopicDescription"); - } - int messagesCount = getTotalMessageCount(); - if (messagesCount > 1) { - messagesDescription = LangUtil.getString("SegmentMessagesDescription"); - } else { - messagesDescription = LangUtil.getString("SegmentMessageDescription"); - } - String descriptionTemplate = String.format("(%s, %s)", topicsDescription, messagesDescription); - nodePanel.description(String.format(descriptionTemplate, topicsCount, messagesCount)); - this.revalidate(); - if (repaint) { - this.repaint(); - } - - if (parent instanceof TopicSegment) { - ((TopicSegment) parent).updateNode(repaint); - } - } - - public void updateSize() { - this.setPreferredSize(getComponentSize()); - this.revalidate(); - //this.repaint(); - if (parent instanceof TopicSegment) { - ((TopicSegment) parent).updateSize(); - } - } - - public static class SegmentNodePanel extends JPanel implements MouseListener { - - private final TopicSegment segment; - private final JXLabel iconLabel; - private final JXLabel nameLabel; - private final JXLabel descriptionLabel; - private final JToolBar toolBar; - private final JButton visibleButton; - private final JButton clearButton; - - private boolean segmentVisible = true; - - public SegmentNodePanel(TopicSegment segment) { - super(); - this.segment = segment; - setLayout(new MigLayout( - String.format("insets 0 %d 0 0", segment.level * 10 + 5), - "[]5[]5[grow]5[]", - "[]" - )); - setBackground(UIManager.getColor("Tree.background")); - iconLabel = new JXLabel(ICON_COLLAPSED); - iconLabel.setOpaque(false); - add(iconLabel, "cell 0 0,hmin 26px"); - nameLabel = new JXLabel(segment.getName()); - nameLabel.setOpaque(false); - nameLabel.putClientProperty("FlatLaf.styleClass", "h4"); - nameLabel.setToolTipText(segment.getFullTopic()); - add(nameLabel, "cell 1 0"); - descriptionLabel = new JXLabel(); - descriptionLabel.setOpaque(false); - descriptionLabel.setForeground(TEXT_INVISIBLE_COLOR); - add(descriptionLabel, "cell 2 0,wmin 10px,growx"); - - toolBar = new JToolBar(); - toolBar.setFloatable(false); - toolBar.setOpaque(false); - toolBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - toolBar.setVisible(false); - - clearButton = new JButton(Icons.CLEAR); - clearButton.setToolTipText(LangUtil.getString("ClearMessages")); - clearButton.addActionListener((e) -> segment.removeSegmentMessages()); - toolBar.add(clearButton); - - visibleButton = new JButton(Icons.EYE); - visibleButton.setToolTipText(LangUtil.getString("ShowOrHideMessages")); - visibleButton.addActionListener((e) -> segment.toggleSegmentVisible(!segmentVisible, true, true)); - toolBar.add(visibleButton); - - add(toolBar, "cell 3 0, hidemode 2"); - - addMouseListener(this); - initActions(); - } - - public void initActions() { - iconLabel.addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - segment.toggleExpanded(); - } - - @Override - public void mouseEntered(MouseEvent e) { - SegmentNodePanel.this.mouseEntered(e); - } - - @Override - public void mouseExited(MouseEvent e) { - SegmentNodePanel.this.mouseExited(e); - } - }); - clearButton.addMouseListener(this); - visibleButton.addMouseListener(this); - nameLabel.addMouseListener(this); - descriptionLabel.addMouseListener(this); - } - - public void setIcon(Icon icon) { - iconLabel.setIcon(icon); - } - - public void description(String description) { - descriptionLabel.setText(description); - } - - public void changeSegmentVisibleStatus(boolean segmentVisible) { - if (this.segmentVisible == segmentVisible) { - return; - } - this.segmentVisible = segmentVisible; - visibleButton.setIcon(segmentVisible ? Icons.EYE : Icons.EYE_CLOSE); - nameLabel.setForeground(segmentVisible ? TEXT_VISIBLE_COLOR : TEXT_INVISIBLE_COLOR); - } - - @Override - public void mouseClicked(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { - SwingUtilities.invokeLater(segment::toggleExpanded); - } - } - - @Override - public void mousePressed(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1) { - SwingUtilities.invokeLater(() -> { - segment.setSelected(true); - }); - } - } - - @Override - public void mouseReleased(MouseEvent e) { - - } - - @Override - public void mouseEntered(MouseEvent e) { - SwingUtilities.invokeLater(() -> { - if (!segment.selected) { - this.setBackground(HOVER_BG_COLOR); - } - toolBar.setVisible(true); - }); - } - - @Override - public void mouseExited(MouseEvent e) { - SwingUtilities.invokeLater(() -> { - if (!segment.selected) { - this.setBackground(NORMAL_BG_COLOR); - } - toolBar.setVisible(false); - }); - } - - public void selected(boolean selected) { - if (selected) { - this.setBackground(SELECTED_BG_COLOR); - } else { - this.setBackground(NORMAL_BG_COLOR); - } - this.revalidate(); - //this.repaint(); - } - } - -} diff --git a/src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java b/src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java new file mode 100644 index 0000000..410ddc3 --- /dev/null +++ b/src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java @@ -0,0 +1,185 @@ +package com.mqttinsight.ui.component.tree; + +import lombok.Getter; + +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +public class SegmentTreeNode extends DefaultMutableTreeNode { + + private final TopicTree tree; + private final SegmentTreeNode parent; + @Getter + private final String name; + @Getter + private final String fullTopic; + + @Getter + private boolean segmentVisible = true; + + private final AtomicInteger messageCount = new AtomicInteger(0); + + public SegmentTreeNode(TopicTree tree, SegmentTreeNode parent, String name) { + this.tree = tree; + this.parent = parent; + this.name = name; + if (this.parent != null && !this.parent.getName().equals("#")) { + this.fullTopic = this.parent.getName().equals("/") ? + this.parent.getFullTopic() + name + : + this.parent.getFullTopic() + "/" + name; + } else { + this.fullTopic = name; + } + if (this.parent != null && !this.parent.isSegmentVisible()) { + this.segmentVisible = false; + } + } + + public Set getInvisibleTopics() { + if (!isSegmentCompositeVisible()) { + return new HashSet<>(Collections.singletonList(getFullTopic())); + } else { + return getChildren().stream() + .map(SegmentTreeNode::getInvisibleTopics) + .reduce((setA, setB) -> { + setA.addAll(setB); + return setA; + }) + .orElseGet(HashSet::new); + } + } + + public void toggleSegmentVisible(boolean segmentVisible, boolean effectOnChildren, boolean updateParentCompositeVisibleStatus) { + if (effectOnChildren) { + getChildren().forEach(child -> child.toggleSegmentVisible(segmentVisible, true, false)); + } + + this.segmentVisible = segmentVisible; + tree.getTreeModel().nodeChanged(this); + + if (updateParentCompositeVisibleStatus) { + updateSegmentCompositeVisibleStatus(true, true); + } + } + + public boolean isSegmentCompositeVisible() { + return segmentVisible || getChildren().stream().anyMatch(SegmentTreeNode::isSegmentCompositeVisible); + } + + public void updateSegmentCompositeVisibleStatus(boolean updateParent, boolean notify) { + if (updateParent && parent != null) { + parent.updateSegmentCompositeVisibleStatus(true, notify); + } + if (notify && parent == null) { + tree.notifyTopicSegmentsVisibleChange(); + } + } + + public void incrementMessages() { + messageCount.incrementAndGet(); + tree.getTreeModel().nodeChanged(this); + } + + public void incrementMessages(List topicSegments) { + if (topicSegments.isEmpty()) { + return; + } + String segment = topicSegments.get(0); + + AtomicBoolean childAppended = new AtomicBoolean(false); + SegmentTreeNode child = getChild(segment).orElseGet(() -> { + SegmentTreeNode newChild = new SegmentTreeNode(tree, this, segment); + childAppended.set(true); + tree.getTreeModel().insertNodeInto(newChild, this, this.getChildCount()); + return newChild; + }); + if (topicSegments.size() > 1) { + child.incrementMessages(topicSegments.subList(1, topicSegments.size())); + } else { + child.incrementMessages(); + } + if (childAppended.get() && !isSegmentVisible()) { + tree.notifyTopicSegmentsVisibleChange(); + } + } + + public void decrementMessages(String topic) { + if (fullTopic.equals(topic)) { + if (messageCount.get() > 0) { + messageCount.decrementAndGet(); + tree.getTreeModel().nodeChanged(this); + } + if (getTopicCount() == 0) { + removeSelf(); + } + } else if (topic.startsWith(fullTopic)) { + getChildren().forEach(segment -> segment.decrementMessages(topic)); + } + } + + public void removeSegmentMessages() { + tree.removeSegmentMessages(this); + } + + public void removeSelf() { + if (parent != null) { + parent.removeChild(this); + tree.getTreeModel().nodeChanged(parent); + } + } + + public void removeChild(SegmentTreeNode child) { + tree.getTreeModel().removeNodeFromParent(child); + if (getTopicCount() == 0) { + removeSelf(); + } + } + + public int getSelfMessageCount() { + return messageCount.get(); + } + + public int getTotalMessageCount() { + return getSelfMessageCount() + getChildren().stream().map(SegmentTreeNode::getTotalMessageCount) + .reduce(0, Integer::sum); + } + + public int getTopicCount() { + int count = 0; + if (getSelfMessageCount() > 0) { + count++; + } + count += getChildren().stream() + .map(SegmentTreeNode::getTopicCount) + .reduce(0, Integer::sum); + return count; + } + + public Optional getChild(String segment) { + return getChildren().stream() + .filter(c -> c.getName().equals(segment)) + .findFirst(); + } + + public List getChildren() { + if (children == null) { + return List.of(); + } else { + return children.stream() + .map(c -> (SegmentTreeNode) c) + .toList(); + } + } + + @Override + public boolean isLeaf() { + return children == null || children.isEmpty(); + } + + public String toString() { + return name; + } +} diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java new file mode 100644 index 0000000..27ef4c0 --- /dev/null +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java @@ -0,0 +1,258 @@ +package com.mqttinsight.ui.component.tree; + +import cn.hutool.core.util.StrUtil; +import com.formdev.flatlaf.extras.components.FlatPopupMenu; +import com.mqttinsight.mqtt.MqttMessage; +import com.mqttinsight.ui.event.InstanceEventAdapter; +import com.mqttinsight.ui.form.panel.MqttInstance; +import com.mqttinsight.util.Icons; +import com.mqttinsight.util.LangUtil; +import com.mqttinsight.util.Utils; +import org.jdesktop.swingx.JXTree; + +import javax.swing.*; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.DefaultTreeSelectionModel; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.*; +import java.util.function.BiConsumer; + +public class TopicTree extends JXTree { + + private final MqttInstance mqttInstance; + private final SegmentTreeNode rootNode; + private final DefaultTreeModel treeModel; + private FlatPopupMenu popupMenu; + private JMenuItem menuClearMessages; + private JMenuItem menuHideMessages; + private JMenuItem menuHideOtherMessages; + + public TopicTree(MqttInstance mqttInstance) { + super(); + this.mqttInstance = mqttInstance; + TreeSelectionModel selectionModel = new DefaultTreeSelectionModel(); + selectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + this.setSelectionModel(selectionModel); + treeModel = new DefaultTreeModel(null, false); + rootNode = new SegmentTreeNode(this, null, "#"); + treeModel.setRoot(rootNode); + this.setModel(treeModel); + this.setRootVisible(false); + this.setShowsRootHandles(true); + this.setUI(new TopicTreeUI()); + + this.setOpenIcon(null); + this.setClosedIcon(null); + this.setLeafIcon(TopicTreeCellRenderer.ICON_LEAF); + this.setExpandedIcon(TopicTreeCellRenderer.ICON_EXPANDED); + this.setCollapsedIcon(TopicTreeCellRenderer.ICON_COLLAPSED); + + TopicTreeCellRenderer renderer = new TopicTreeCellRenderer(); + this.setCellRenderer(renderer); + + popupMenu = new FlatPopupMenu(); + menuHideMessages = Utils.UI.createCheckBoxMenuItem(LangUtil.getString("HideRelatedMessages"), (e) -> toggleSegmentVisible()); + popupMenu.add(menuHideMessages); + menuHideOtherMessages = Utils.UI.createMenuItem(LangUtil.getString("HideAllOtherMessages"), (e) -> toggleOtherSegmentVisible()); + popupMenu.add(menuHideOtherMessages); + popupMenu.addSeparator(); + menuClearMessages = Utils.UI.createMenuItem(LangUtil.getString("ClearMessages"), (e) -> removeSegmentMessages()); + menuClearMessages.setIcon(Icons.CLEAR); + popupMenu.add(menuClearMessages); + + initEventListeners(); + ToolTipManager.sharedInstance().registerComponent(this); + } + + private void initEventListeners() { + mqttInstance.addEventListener(new InstanceEventAdapter() { + @Override + public void onMessage(MqttMessage message, MqttMessage parent) { + SwingUtilities.invokeLater(() -> { + updateSegments(message.getTopic()); + }); + } + + @Override + public void onMessageRemoved(MqttMessage message) { + SwingUtilities.invokeLater(() -> { + removeTopicSegments(message.getTopic()); + }); + } + + @Override + public void requestFocusPreview() { + SwingUtilities.invokeLater(() -> { + mqttInstance.getMessageTable().getSelectedMessage() + .ifPresent(message -> { + locateSegments(message.getTopic()); + }); + }); + } + }); + + this.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (SwingUtilities.isRightMouseButton(e)) { + final int rowIndex = TopicTree.this.getClosestRowForLocation(e.getX(), e.getY()); + if (rowIndex < 0) { + return; + } + TreePath clickedPath = TopicTree.this.getPathForRow(rowIndex); + if (clickedPath == null) { + return; + } + Rectangle bounds = TopicTree.this.getPathBounds(clickedPath); + if (bounds == null || e.getY() > (bounds.y + bounds.height)) { + return; + } + + TopicTree.this.setSelectionRow(rowIndex); + SegmentTreeNode node = (SegmentTreeNode) clickedPath.getLastPathComponent(); + menuHideMessages.setSelected(!node.isSegmentCompositeVisible()); + popupMenu.show(e.getComponent(), e.getX(), e.getY()); + } + } + }); + } + + public DefaultTreeModel getTreeModel() { + return treeModel; + } + + @Override + public String getToolTipText(MouseEvent e) { + TreePath treePath = getPathForLocation(e.getX(), e.getY()); + if (treePath != null) { + if (treePath.getLastPathComponent() instanceof SegmentTreeNode) { + SegmentTreeNode node = (SegmentTreeNode) treePath.getLastPathComponent(); + return node.getFullTopic(); + } + } + return null; + } + + private void removeSegmentMessages() { + TreePath selectedPath = getSelectionPath(); + if (selectedPath != null) { + final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + if (selectNode != null) { + removeSegmentMessages(selectNode); + } + } + } + + private void toggleSegmentVisible() { + TreePath selectedPath = getSelectionPath(); + if (selectedPath != null) { + final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + if (selectNode != null) { + boolean segmentVisible = !selectNode.isSegmentVisible(); + selectNode.toggleSegmentVisible(segmentVisible, true, true); + } + } + } + + private void toggleOtherSegmentVisible() { + rootNode.getChildren().forEach(node -> { + node.toggleSegmentVisible(false, true, false); + }); + TreePath selectedPath = getSelectionPath(); + if (selectedPath != null) { + final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + if (selectNode != null) { + selectNode.toggleSegmentVisible(true, true, true); + } + } + } + + public void removeSegmentMessages(SegmentTreeNode node) { + SwingUtilities.invokeLater(() -> { + mqttInstance.applyEvent(l -> l.clearMessages(node.getFullTopic())); + }); + } + + public void notifyTopicSegmentsVisibleChange() { + Set invisibleTopics = getRootSegments().stream() + .map(SegmentTreeNode::getInvisibleTopics) + .reduce((setA, setB) -> { + setA.addAll(setB); + return setA; + }) + .orElseGet(HashSet::new); + mqttInstance.applyEvent(l -> l.applyFilterTopics(invisibleTopics)); + } + + private void extractSegmentAndHandle(String topic, BiConsumer handler) { + String segment, remainTopic; + if (topic.startsWith("/")) { + segment = "/"; + remainTopic = topic.substring(1); + } else { + int slashIndex = topic.indexOf('/'); + if (slashIndex > 0) { + segment = topic.substring(0, slashIndex); + remainTopic = topic.substring(slashIndex + 1); + } else { + segment = topic; + remainTopic = null; + } + } + + if (handler != null) { + handler.accept(segment, remainTopic); + } + } + + public List getRootSegments() { + return Collections.list(rootNode.children()) + .stream() + .map(item -> (SegmentTreeNode) item) + .toList(); + } + + private void updateSegments(String topic) { + extractSegmentAndHandle(topic, (segment, remainTopic) -> { + SegmentTreeNode rootSegment = Collections.list(rootNode.children()).stream() + .map(item -> (SegmentTreeNode) item) + .filter(item -> item.getName().equals(segment)) + .findFirst() + .orElse(null); + + + if (rootSegment == null) { + rootSegment = new SegmentTreeNode(this, rootNode, segment); + treeModel.insertNodeInto(rootSegment, rootNode, rootNode.getChildCount()); + } + if (remainTopic != null) { + rootSegment.incrementMessages(StrUtil.split(remainTopic, '/')); + } else { + rootSegment.incrementMessages(); + } + }); + } + + private void removeTopicSegments(String topic) { + extractSegmentAndHandle(topic, (segment, remainTopic) -> { + Optional rootSegment = getRootSegments().stream() + .filter(item -> item.getName().equals(segment)) + .findFirst(); + rootSegment.ifPresent((topicSegment) -> { + topicSegment.decrementMessages(topic); + }); + }); + } + + private void locateSegments(String topic) { + extractSegmentAndHandle(topic, (segment, remainTopic) -> { + + }); + } + +} diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java new file mode 100644 index 0000000..44826a2 --- /dev/null +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java @@ -0,0 +1,82 @@ +package com.mqttinsight.ui.component.tree; + +import com.formdev.flatlaf.extras.FlatSVGIcon; +import com.mqttinsight.util.LangUtil; +import net.miginfocom.swing.MigLayout; +import org.jdesktop.swingx.JXLabel; + +import javax.swing.*; +import javax.swing.tree.DefaultTreeCellRenderer; +import java.awt.*; + +public class TopicTreeCellRenderer extends DefaultTreeCellRenderer { + + public static final Color TEXT_VISIBLE_COLOR = UIManager.getColor("Label.foreground"); + public static final Color TEXT_INVISIBLE_COLOR = UIManager.getColor("Label.disabledForeground"); + public static final Icon ICON_COLLAPSED = UIManager.getIcon("Tree.collapsedIcon"); + public static final Icon ICON_EXPANDED = UIManager.getIcon("Tree.expandedIcon"); + public static final Icon ICON_LEAF = new FlatSVGIcon("svg/icons/dot.svg", ICON_EXPANDED.getIconWidth(), ICON_EXPANDED.getIconHeight()); + + private final JPanel nodePanel; + + private final JXLabel nameLabel; + private final JXLabel descriptionLabel; + + public TopicTreeCellRenderer() { + super(); + nodePanel = new JPanel(); + nodePanel.setLayout(new MigLayout( + "insets 4 4 4 4", + "[]5[grow]", + "[]" + )); + nodePanel.setOpaque(false); + + nameLabel = new JXLabel(""); + nameLabel.setOpaque(false); + nameLabel.putClientProperty("FlatLaf.styleClass", "h4"); + nameLabel.setToolTipText(""); + nodePanel.add(nameLabel, "cell 0 0"); + + descriptionLabel = new JXLabel(); + descriptionLabel.setOpaque(false); + descriptionLabel.setForeground(TEXT_INVISIBLE_COLOR); + nodePanel.add(descriptionLabel, "cell 1 0,wmin 10px,growx"); + } + + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { + if (value instanceof SegmentTreeNode node) { + nameLabel.setText(node.getName()); + Color fg; + if (node.isSegmentVisible()) { + if (selected && hasFocus) { + fg = getTextSelectionColor(); + + } else { + fg = getTextNonSelectionColor(); + } + } else { + fg = TEXT_INVISIBLE_COLOR; + } + nameLabel.setForeground(fg); + String topicsDescription, messagesDescription; + int topicsCount = node.getTopicCount(); + if (topicsCount > 1) { + topicsDescription = LangUtil.getString("SegmentTopicsDescription"); + } else { + topicsDescription = LangUtil.getString("SegmentTopicDescription"); + } + int messagesCount = node.getTotalMessageCount(); + if (messagesCount > 1) { + messagesDescription = LangUtil.getString("SegmentMessagesDescription"); + } else { + messagesDescription = LangUtil.getString("SegmentMessageDescription"); + } + String descriptionTemplate = String.format("(%s, %s)", topicsDescription, messagesDescription); + descriptionLabel.setText(String.format(descriptionTemplate, topicsCount, messagesCount)); + } + return nodePanel; + } + +} diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeUI.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeUI.java new file mode 100644 index 0000000..a66a772 --- /dev/null +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeUI.java @@ -0,0 +1,55 @@ +package com.mqttinsight.ui.component.tree; + +import com.formdev.flatlaf.ui.FlatTreeUI; + +import javax.swing.*; +import javax.swing.tree.TreePath; +import java.awt.*; + +public class TopicTreeUI extends FlatTreeUI { + + @Override + protected boolean shouldPaintExpandControl(TreePath path, int row, + boolean isExpanded, + boolean hasBeenExpanded, + boolean isLeaf) { + return true; + } + + @Override + protected void paintExpandControl(Graphics g, + Rectangle clipBounds, Insets insets, + Rectangle bounds, TreePath path, + int row, boolean isExpanded, + boolean hasBeenExpanded, + boolean isLeaf) { + Object value = path.getLastPathComponent(); + + // Draw icons if not a leaf and either hasn't been loaded, + // or the model child count is > 0. + int middleXOfKnob; + if (tree.getComponentOrientation().isLeftToRight()) { + middleXOfKnob = bounds.x - getRightChildIndent() + 1; + } else { + middleXOfKnob = bounds.x + bounds.width + getRightChildIndent() - 1; + } + int middleYOfKnob = bounds.y + (bounds.height / 2); + + if (isLeaf) { + Icon leafIcon = TopicTreeCellRenderer.ICON_LEAF; + if (leafIcon != null) + drawCentered(tree, g, leafIcon, middleXOfKnob, + middleYOfKnob); + } else if (isExpanded) { + Icon expandedIcon = getExpandedIcon(); + if (expandedIcon != null) + drawCentered(tree, g, expandedIcon, middleXOfKnob, + middleYOfKnob); + } else { + Icon collapsedIcon = getCollapsedIcon(); + if (collapsedIcon != null) + drawCentered(tree, g, collapsedIcon, middleXOfKnob, + middleYOfKnob); + } + } +} diff --git a/src/main/java/com/mqttinsight/ui/form/panel/MqttInstanceTabPanel.java b/src/main/java/com/mqttinsight/ui/form/panel/MqttInstanceTabPanel.java index 8abac20..d20e2db 100644 --- a/src/main/java/com/mqttinsight/ui/form/panel/MqttInstanceTabPanel.java +++ b/src/main/java/com/mqttinsight/ui/form/panel/MqttInstanceTabPanel.java @@ -11,6 +11,7 @@ import com.mqttinsight.ui.chart.series.SeriesProperties; import com.mqttinsight.ui.component.*; import com.mqttinsight.ui.component.model.MessageViewMode; +import com.mqttinsight.ui.component.tree.TopicTree; import com.mqttinsight.ui.event.InstanceEventAdapter; import com.mqttinsight.ui.event.InstanceEventListener; import com.mqttinsight.ui.form.MainWindowForm; @@ -76,7 +77,8 @@ public abstract class MqttInstanceTabPanel extends JPanel implements MqttInstanc protected MessagePreviewPanel messagePreviewPanel; protected SubscriptionListPanel subscriptionListPanel; - protected TopicTreePanel topicTreePanel; + protected TopicTree topicTree; + private JScrollPane topicTreeScrollPanel; private final List eventListeners; @@ -114,10 +116,13 @@ private void initComponents() { { // left subscriptionListPanel = new SubscriptionListPanel(this); - topicTreePanel = new TopicTreePanel(this); + topicTree = new TopicTree(this); + topicTreeScrollPanel = new JScrollPane(topicTree); + Border scrollPanelBorder = new SingleLineBorder(UIManager.getColor("Component.borderColor"), true, true, true, true); + topicTreeScrollPanel.setBorder(scrollPanelBorder); leftSplitPanel.setLeftComponent(subscriptionListPanel); - leftSplitPanel.setRightComponent(topicTreePanel); + leftSplitPanel.setRightComponent(topicTreeScrollPanel); Integer divider = Configuration.instance().getInt(ConfKeys.SUBSCRIPTION_VERTICAL_DIVIDER, 430); leftSplitPanel.setDividerLocation(divider); diff --git a/src/main/java/com/mqttinsight/ui/form/panel/TopicTreePanel.java b/src/main/java/com/mqttinsight/ui/form/panel/TopicTreePanel.java deleted file mode 100644 index bc7d8de..0000000 --- a/src/main/java/com/mqttinsight/ui/form/panel/TopicTreePanel.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.mqttinsight.ui.form.panel; - -import cn.hutool.core.util.StrUtil; -import com.mqttinsight.mqtt.MqttMessage; -import com.mqttinsight.ui.component.TopicSegment; -import com.mqttinsight.ui.event.InstanceEventAdapter; -import org.jdesktop.swingx.VerticalLayout; - -import javax.swing.*; -import java.awt.*; -import java.util.List; -import java.util.*; -import java.util.function.BiConsumer; - -/** - * @author ptma - */ -public class TopicTreePanel extends JScrollPane { - - private final MqttInstance mqttInstance; - - private final JPanel segmentsContainer; - - private TopicSegment selectedSegment; - - public TopicTreePanel(final MqttInstance mqttInstance) { - super(); - this.mqttInstance = mqttInstance; - getVerticalScrollBar().setUnitIncrement(30); - segmentsContainer = new JPanel(); - segmentsContainer.setLayout(new VerticalLayout(0)); - segmentsContainer.setBackground(UIManager.getColor("Table.background")); - setViewportView(segmentsContainer); - - initEventListeners(); - - } - - private void initEventListeners() { - mqttInstance.addEventListener(new InstanceEventAdapter() { - @Override - public void onMessage(MqttMessage message, MqttMessage parent) { - SwingUtilities.invokeLater(() -> { - updateSegments(message.getTopic()); - }); - } - - @Override - public void onMessageRemoved(MqttMessage message) { - SwingUtilities.invokeLater(() -> { - removeTopicSegments(message.getTopic()); - }); - } - - @Override - public void requestFocusPreview() { - SwingUtilities.invokeLater(() -> { - mqttInstance.getMessageTable().getSelectedMessage() - .ifPresent(message -> { - locateSegments(message.getTopic()); - }); - }); - } - }); - } - - public void changeSelectedSegment(TopicSegment segment) { - if (selectedSegment != null && selectedSegment != segment) { - selectedSegment.setSelected(false); - } - selectedSegment = segment; - } - - public void notifyTopicSegmentsVisibleChange() { - Set invisibleTopics = getRootSegments().stream() - .map(TopicSegment::getInvisibleTopics) - .reduce((setA, setB) -> { - setA.addAll(setB); - return setA; - }) - .orElseGet(HashSet::new); - mqttInstance.applyEvent(l -> l.applyFilterTopics(invisibleTopics)); - } - - private void extractSegmentAndHandle(String topic, BiConsumer handler) { - String segment, remainTopic; - if (topic.startsWith("/")) { - segment = "/"; - remainTopic = topic.substring(1); - } else { - int slashIndex = topic.indexOf('/'); - if (slashIndex > 0) { - segment = topic.substring(0, slashIndex); - remainTopic = topic.substring(slashIndex + 1); - } else { - segment = topic; - remainTopic = null; - } - } - - if (handler != null) { - handler.accept(segment, remainTopic); - } - } - - private void updateSegments(String topic) { - extractSegmentAndHandle(topic, (segment, remainTopic) -> { - TopicSegment rootSegment = getRootSegments().stream() - .filter(item -> item.getName().equals(segment)) - .findFirst() - .orElse(null); - if (rootSegment == null) { - rootSegment = new TopicSegment(mqttInstance, this, this, segment, 0, true); - addRootSegment(rootSegment); - } - if (remainTopic != null) { - rootSegment.incrementMessages(StrUtil.split(remainTopic, '/')); - } else { - rootSegment.incrementMessages(); - } - }); - - } - - private void removeTopicSegments(String topic) { - extractSegmentAndHandle(topic, (segment, remainTopic) -> { - Optional rootSegment = getRootSegments().stream() - .filter(item -> item.getName().equals(segment)) - .findFirst(); - rootSegment.ifPresent((topicSegment) -> { - topicSegment.decrementMessages(topic); - }); - }); - } - - /** - * When double clicking a message in the message table, locate the topic segment node - * - * @param topic segment - */ - private void locateSegments(String topic) { - extractSegmentAndHandle(topic, (segment, remainTopic) -> { - int height = 0; - for (TopicSegment rootSegment : getRootSegments()) { - if (rootSegment.getName().equals(segment)) { - if (!rootSegment.isExpanded()) { - rootSegment.toggleExpanded(); - } - height += rootSegment.calcSegmentScrollHeight(StrUtil.split(remainTopic, '/')); - getViewport().setViewPosition(new Point(0, height)); - //updateUI(); - break; - } else { - height += rootSegment.getComponentSize().height; - } - } - }); - - } - - public List getRootSegments() { - return Arrays.stream(segmentsContainer.getComponents()) - .map(c -> (TopicSegment) c) - .toList(); - } - - private void addRootSegment(TopicSegment segment) { - List segments = getRootSegments(); - for (int i = 0; i < segments.size(); i++) { - TopicSegment existingSegment = segments.get(i); - if (segment.getName().compareTo(existingSegment.getName()) <= 0) { - segmentsContainer.add(segment, i); - return; - } - } - segmentsContainer.add(segment); - segmentsContainer.revalidate(); - //segmentsContainer.repaint(); - } - - public void removeRootSegment(TopicSegment segment) { - segmentsContainer.remove(segment); - segmentsContainer.revalidate(); - segmentsContainer.repaint(); - } -} diff --git a/src/main/java/com/mqttinsight/ui/frame/MainFrame.java b/src/main/java/com/mqttinsight/ui/frame/MainFrame.java index b2d1623..d7286e4 100644 --- a/src/main/java/com/mqttinsight/ui/frame/MainFrame.java +++ b/src/main/java/com/mqttinsight/ui/frame/MainFrame.java @@ -79,6 +79,8 @@ private void initGlobalComponentStyles() { UIManager.put("TextComponent.arc", 5); UIManager.put("SplitPaneDivider.style", "grip"); UIManager.put("SplitPane.centerOneTouchButtons", true); + UIManager.put("Tree.leftChildIndent", 4); + UIManager.put("Tree.rightChildIndent", 8); UIManager.put("PasswordField.showRevealButton", true); diff --git a/src/main/java/com/mqttinsight/util/Utils.java b/src/main/java/com/mqttinsight/util/Utils.java index 0d48929..9df1d63 100644 --- a/src/main/java/com/mqttinsight/util/Utils.java +++ b/src/main/java/com/mqttinsight/util/Utils.java @@ -278,6 +278,16 @@ public static JMenuItem createMenuItem(String menuText, ActionListener action) { return menuItem; } + public static JMenuItem createCheckBoxMenuItem(String menuText, ActionListener action) { + JMenuItem menuItem = new JCheckBoxMenuItem(); + Utils.UI.buttonText(menuItem, menuText); + + if (action != null) { + menuItem.addActionListener(action); + } + return menuItem; + } + public static JMenuItem createMenuItem(String menuText, Action action) { JMenuItem menuItem = new NormalMenuItem(); if (action != null) { diff --git a/src/main/resources/com/mqttinsight/Lang_en.properties b/src/main/resources/com/mqttinsight/Lang_en.properties index 4b0bfe5..0545c33 100644 --- a/src/main/resources/com/mqttinsight/Lang_en.properties +++ b/src/main/resources/com/mqttinsight/Lang_en.properties @@ -1,371 +1,373 @@ -&File = &File -&ConnectionManager = &Connection Management -Co&decs = Co&decs -&Options = &Options -E&xit = E&xit -&View = &View -Show&Log = Show &Log -&Help = &Help -&About = &About ... -About = About -AboutOpenSource = The MqttInsight uses some fine open source projects: -Log = Log -Options = Options -UserInterface = User Interface -Language = Language -Theme = Theme -MessageEditor = Message Editor -Font = Font -FontSize = Font Size -MessageView = Message View -DefaultView = Default View -TableView = Table View -DialogueView = Dialogue View -MaxMessageRows = Max Message Rows -MaxMessageRowsTip = Set the maximum number of lines for message display in the "Dialogue View" to avoid affecting the display when the Dialogue bubble is too large. \nIf set to 0, there will be no restriction. -TimeFormat = Time Format -InputDialogTitle = Input -InputDialogEmptyInfo = The input content cannot be empty. -Cut = Cut -Copy = Copy -Paste = Paste -SelectAll = Select All -&Ok = &Ok -&Close = &Close -Close = Close -&Cancel = &Cancel -&Detail = &Detail -Question = Question -&New = &New -&Remove = &Remove -Re&load = Re&load -OpenConnection = Open Connection -Connect = Connect -Disconnect = Disconnect -Connecting = Connecting ... -Connected = Connected -Disconnecting = Disconnecting ... -Disconnected = Disconnected -Failed = Connect Failed -MqttReasonCode_-1 = Unknown error -MqttReasonCode_1 = Invalid protocol version -MqttReasonCode_2 = Invalid clientId -MqttReasonCode_3 = Broker unavailable -MqttReasonCode_4 = Bad username or password -MqttReasonCode_5 = Not authorized to connect -MqttReasonCode_6 = Unexpected error -MqttReasonCode_119 = Invalid URI Provided that could not be used to create a NetworkModule: {0} -MqttReasonCode_32000 = Timed out waiting for a response from the server -MqttReasonCode_32001 = Internal error, caused by no new message IDs being available -MqttReasonCode_32002 = Timed out while waiting to write messages to the server -MqttReasonCode_32100 = Client is connected -MqttReasonCode_32101 = Client is disconnected -MqttReasonCode_32102 = Client is currently disconnecting -MqttReasonCode_32103 = Unable to connect to server -MqttReasonCode_32104 = Client is not connected -MqttReasonCode_32105 = The specified SocketFactory type does not match the broker URI -MqttReasonCode_32106 = SSL configuration error -MqttReasonCode_32107 = Disconnecting is not allowed from a callback method -MqttReasonCode_32108 = Unrecognized packet -MqttReasonCode_32109 = Connection lost -MqttReasonCode_32110 = Connect already in progress -MqttReasonCode_32111 = Client is closed -MqttReasonCode_32200 = Persistence already in use -MqttReasonCode_32201 = Token already in use -MqttReasonCode_32202 = Too many publishes in progress -MqttReasonCode_50000 = Invalid Identifier in the IV fields. -MqttReasonCode_50001 = Invalid Return code. -MqttReasonCode_50002 = Packet was somehow malformed and did not comply to the MQTTv5 specification. -MqttReasonCode_50003 = The CONNECT packet did not contain the correct protocol name or version. -MqttReasonCode_50004 = The Server sent a publish message with an invalid topic alias. -MqttReasonCode_50005 = The client attempted to decode a property that had already been decoded, and can only be included once. -MqttReasonCode_51001 = Incoming packet too large. -MqttReasonCode_51002 = Outgoing packet too large. -MqttReasonCode_16 = No matching subscribers. -MqttReasonCode_17 = No subscription existed. -MqttReasonCode_24 = Continue authentication. -MqttReasonCode_25 = Re-authenticate. -MqttReasonCode_128 = Unspecified error. -MqttReasonCode_129 = Malformed packet. -MqttReasonCode_130 = Protocol error. -MqttReasonCode_131 = Implementation specific error. -MqttReasonCode_132 = Unsupported protocol version. -MqttReasonCode_133 = Client identifier not valid. -MqttReasonCode_134 = Bad UserName or Password. -MqttReasonCode_135 = Not authorized. -MqttReasonCode_136 = Server unavailable. -MqttReasonCode_137 = Server busy. -MqttReasonCode_138 = Banned. -MqttReasonCode_139 = Server shutting down. -MqttReasonCode_140 = Bad authentication method. -MqttReasonCode_141 = Keep Alive timeout. -MqttReasonCode_142 = Session taken over. -MqttReasonCode_143 = Topic Filter invalid. -MqttReasonCode_144 = Topic Name invalid. -MqttReasonCode_145 = Packet identifier in use. -MqttReasonCode_146 = Packet identifier not found. -MqttReasonCode_147 = Receive Maximum exceeded. -MqttReasonCode_148 = Topic Alias invalid. -MqttReasonCode_149 = Packet too large. -MqttReasonCode_150 = Message rate too high. -MqttReasonCode_151 = Quota exceeded. -MqttReasonCode_152 = Administrative action. -MqttReasonCode_153 = Payload format invalid. -MqttReasonCode_154 = Retain not supported. -MqttReasonCode_155 = QoS not supported -MqttReasonCode_156 = Use another server. -MqttReasonCode_157 = Server moved. -MqttReasonCode_158 = Shared Subscriptions not supported. -MqttReasonCode_159 = Connection rate exceeded. -MqttReasonCode_160 = Maximum connect time. -MqttReasonCode_161 = Subscription Identifiers not supported. -MqttReasonCode_162 = Wildcard Subscriptions no supported. -NewSubscription = New Subscription -NoSubscriptions = No favorite subscriptions -SubscribeAll = Subscribe All -RemoveFavoriteSubscription = Do you want to remove the favorite subscription "%s"? -MessageIndicator = Message(%d / %d) -SearchHistory = Search History -Empty = -MatchCase = Match Case -WholeWords = Whole Words -RegularExpression = Regular Expression -PreviousOccurrence = Previous Occurrence -NextOccurrence = Next Occurrence -ScrollToEnd = Scroll To End -ClearAll = Clear All -FilterSearchResults = Filter Search Results -GoFirst = Go First -GoPrevious = Go Previous -GoNext = Go Next -GoLast = Go Last -Autoscroll = Autoscroll -More = More... -Script = Script -LoadScript = Load Script ... -JavaScriptFileFilter = JavaScript Files(*.js) -ClearAllMessages = Clear All Messages -ClearVisibleMessages = Clear Visible Messages -ExportAllMessages = Export All Messages ... -PayloadFormat = Message Format -PayloadFormatTip = When "Default" is selected, the default message format set in the connection will be used as the subscription message format.\nAnd the message format can be changed again in the pop-up menu of the subscription item. -Topic = Topic -Payload = Payload -QoS = QoS -Retained = Retained -ReceivedTime = Received Time -Time = Time -Pretty = Pretty -SyntaxHighlighting = Syntax Highlighting -SyntaxHighlightingTips = Enabling syntax highlighting will incur additional performance consumption. It is recommended to disable syntax highlighting when there are a large number of messages and complex content to improve preview performance. -JsonFileFilter = JSON File (*.json) -CsvFileFilter = CSV File (*.csv) -TextFileFilter = Text File (*.txt) -AllFileFilter = All File (*.*) -FileExists = The file "%s" already exists, do you want to overwrite it! -Favorite = Favorite -ShowOrHideMessages = Show/Hide Messages -Unsubscribe = Unsubscribe -Resubscribe = Resubscribe -ClearMessages = Clear Messages -ExportMessages = Export Messages ... -TopicSubscribed = The topic has already been subscribed and cannot be subscribed again. -Color = Color -MoreColor = More Color ... -ChooseColor = Choose Color -Preview = Preview -MessagePreview = Message Preview -PreviewSeparateWindow = Preview in a Separate Window -Publish = Publish -PublishMessage = Publish Message -PublishTips = The message content can use placeholders, which will be replaced with corresponding random values when actually sent:\n${timestamp}: The current system timestamp value in milliseconds;\n${uuid}: a random UUID;\n${int(min,max)}: A random integer value;\n${float(min,max)}: A random float value;\n${string(length)}: A random string of specified length. -Copy&Topic = Copy &Topic -Copy&Payload = Copy Payload -SegmentTopicDescription = %d topic -SegmentTopicsDescription = %d topics -SegmentMessageDescription = %d message -SegmentMessagesDescription = %d messages +&File=&File +&ConnectionManager=&Connection Management +Co&decs=Co&decs +&Options=&Options +E&xit=E&xit +&View=&View +Show&Log=Show &Log +&Help=&Help +&About=&About ... +About=About +AboutOpenSource=The MqttInsight uses some fine open source projects: +Log=Log +Options=Options +UserInterface=User Interface +Language=Language +Theme=Theme +MessageEditor=Message Editor +Font=Font +FontSize=Font Size +MessageView=Message View +DefaultView=Default View +TableView=Table View +DialogueView=Dialogue View +MaxMessageRows=Max Message Rows +MaxMessageRowsTip=Set the maximum number of lines for message display in the "Dialogue View" to avoid affecting the display when the Dialogue bubble is too large. \nIf set to 0, there will be no restriction. +TimeFormat=Time Format +InputDialogTitle=Input +InputDialogEmptyInfo=The input content cannot be empty. +Cut=Cut +Copy=Copy +Paste=Paste +SelectAll=Select All +&Ok=&Ok +&Close=&Close +Close=Close +&Cancel=&Cancel +&Detail=&Detail +Question=Question +&New=&New +&Remove=&Remove +Re&load=Re&load +OpenConnection=Open Connection +Connect=Connect +Disconnect=Disconnect +Connecting=Connecting ... +Connected=Connected +Disconnecting=Disconnecting ... +Disconnected=Disconnected +Failed=Connect Failed +MqttReasonCode_-1=Unknown error +MqttReasonCode_1=Invalid protocol version +MqttReasonCode_2=Invalid clientId +MqttReasonCode_3=Broker unavailable +MqttReasonCode_4=Bad username or password +MqttReasonCode_5=Not authorized to connect +MqttReasonCode_6=Unexpected error +MqttReasonCode_119=Invalid URI Provided that could not be used to create a NetworkModule: {0} +MqttReasonCode_32000=Timed out waiting for a response from the server +MqttReasonCode_32001=Internal error, caused by no new message IDs being available +MqttReasonCode_32002=Timed out while waiting to write messages to the server +MqttReasonCode_32100=Client is connected +MqttReasonCode_32101=Client is disconnected +MqttReasonCode_32102=Client is currently disconnecting +MqttReasonCode_32103=Unable to connect to server +MqttReasonCode_32104=Client is not connected +MqttReasonCode_32105=The specified SocketFactory type does not match the broker URI +MqttReasonCode_32106=SSL configuration error +MqttReasonCode_32107=Disconnecting is not allowed from a callback method +MqttReasonCode_32108=Unrecognized packet +MqttReasonCode_32109=Connection lost +MqttReasonCode_32110=Connect already in progress +MqttReasonCode_32111=Client is closed +MqttReasonCode_32200=Persistence already in use +MqttReasonCode_32201=Token already in use +MqttReasonCode_32202=Too many publishes in progress +MqttReasonCode_50000=Invalid Identifier in the IV fields. +MqttReasonCode_50001=Invalid Return code. +MqttReasonCode_50002=Packet was somehow malformed and did not comply to the MQTTv5 specification. +MqttReasonCode_50003=The CONNECT packet did not contain the correct protocol name or version. +MqttReasonCode_50004=The Server sent a publish message with an invalid topic alias. +MqttReasonCode_50005=The client attempted to decode a property that had already been decoded, and can only be included once. +MqttReasonCode_51001=Incoming packet too large. +MqttReasonCode_51002=Outgoing packet too large. +MqttReasonCode_16=No matching subscribers. +MqttReasonCode_17=No subscription existed. +MqttReasonCode_24=Continue authentication. +MqttReasonCode_25=Re-authenticate. +MqttReasonCode_128=Unspecified error. +MqttReasonCode_129=Malformed packet. +MqttReasonCode_130=Protocol error. +MqttReasonCode_131=Implementation specific error. +MqttReasonCode_132=Unsupported protocol version. +MqttReasonCode_133=Client identifier not valid. +MqttReasonCode_134=Bad UserName or Password. +MqttReasonCode_135=Not authorized. +MqttReasonCode_136=Server unavailable. +MqttReasonCode_137=Server busy. +MqttReasonCode_138=Banned. +MqttReasonCode_139=Server shutting down. +MqttReasonCode_140=Bad authentication method. +MqttReasonCode_141=Keep Alive timeout. +MqttReasonCode_142=Session taken over. +MqttReasonCode_143=Topic Filter invalid. +MqttReasonCode_144=Topic Name invalid. +MqttReasonCode_145=Packet identifier in use. +MqttReasonCode_146=Packet identifier not found. +MqttReasonCode_147=Receive Maximum exceeded. +MqttReasonCode_148=Topic Alias invalid. +MqttReasonCode_149=Packet too large. +MqttReasonCode_150=Message rate too high. +MqttReasonCode_151=Quota exceeded. +MqttReasonCode_152=Administrative action. +MqttReasonCode_153=Payload format invalid. +MqttReasonCode_154=Retain not supported. +MqttReasonCode_155=QoS not supported +MqttReasonCode_156=Use another server. +MqttReasonCode_157=Server moved. +MqttReasonCode_158=Shared Subscriptions not supported. +MqttReasonCode_159=Connection rate exceeded. +MqttReasonCode_160=Maximum connect time. +MqttReasonCode_161=Subscription Identifiers not supported. +MqttReasonCode_162=Wildcard Subscriptions no supported. +NewSubscription=New Subscription +NoSubscriptions=No favorite subscriptions +SubscribeAll=Subscribe All +RemoveFavoriteSubscription=Do you want to remove the favorite subscription "%s"? +MessageIndicator=Message(%d / %d) +SearchHistory=Search History +Empty= +MatchCase=Match Case +WholeWords=Whole Words +RegularExpression=Regular Expression +PreviousOccurrence=Previous Occurrence +NextOccurrence=Next Occurrence +ScrollToEnd=Scroll To End +ClearAll=Clear All +FilterSearchResults=Filter Search Results +GoFirst=Go First +GoPrevious=Go Previous +GoNext=Go Next +GoLast=Go Last +Autoscroll=Autoscroll +More=More... +Script=Script +LoadScript=Load Script ... +JavaScriptFileFilter=JavaScript Files(*.js) +ClearAllMessages=Clear All Messages +ClearVisibleMessages=Clear Visible Messages +ExportAllMessages=Export All Messages ... +PayloadFormat=Message Format +PayloadFormatTip=When "Default" is selected, the default message format set in the connection will be used as the subscription message format.\nAnd the message format can be changed again in the pop-up menu of the subscription item. +Topic=Topic +Payload=Payload +QoS=QoS +Retained=Retained +ReceivedTime=Received Time +Time=Time +Pretty=Pretty +SyntaxHighlighting=Syntax Highlighting +SyntaxHighlightingTips=Enabling syntax highlighting will incur additional performance consumption. It is recommended to disable syntax highlighting when there are a large number of messages and complex content to improve preview performance. +JsonFileFilter=JSON File (*.json) +CsvFileFilter=CSV File (*.csv) +TextFileFilter=Text File (*.txt) +AllFileFilter=All File (*.*) +FileExists=The file "%s" already exists, do you want to overwrite it! +Favorite=Favorite +ShowOrHideMessages=Show/Hide Messages +HideRelatedMessages=Hide Related Messages +HideAllOtherMessages=Hide All Other Messages +Unsubscribe=Unsubscribe +Resubscribe=Resubscribe +ClearMessages=Clear Messages +ExportMessages=Export Messages ... +TopicSubscribed=The topic has already been subscribed and cannot be subscribed again. +Color=Color +MoreColor=More Color ... +ChooseColor=Choose Color +Preview=Preview +MessagePreview=Message Preview +PreviewSeparateWindow=Preview in a Separate Window +Publish=Publish +PublishMessage=Publish Message +PublishTips=The message content can use placeholders, which will be replaced with corresponding random values when actually sent:\n${timestamp}: The current system timestamp value in milliseconds;\n${uuid}: a random UUID;\n${int(min,max)}: A random integer value;\n${float(min,max)}: A random float value;\n${string(length)}: A random string of specified length. +Copy&Topic=Copy &Topic +Copy&Payload=Copy Payload +SegmentTopicDescription=%d topic +SegmentTopicsDescription=%d topics +SegmentMessageDescription=%d message +SegmentMessagesDescription=%d messages # ConnectionManagerForm -ConnectionManagement = Connection Management -&OpenConnection = &Open Connection -New&Group = New &Group -New&RootGroup = New &Root Group -New&Connection = New &Connection -Du&plicate = Du&plicate -&Edit = &Edit -Edit = Edit -&Delete = &Delete -Delete = Delete -NewGroup = New Group -EditGroup = Edit Group -GroupName = Group Name -EnterGroupName = Please enter a group name -NewConnection = New Connection -EditConnection = Edit Connection -ConnectionDeleteConfirm = Do you want to delete connection "%s"? +ConnectionManagement=Connection Management +&OpenConnection=&Open Connection +New&Group=New &Group +New&RootGroup=New &Root Group +New&Connection=New &Connection +Du&plicate=Du&plicate +&Edit=&Edit +Edit=Edit +&Delete=&Delete +Delete=Delete +NewGroup=New Group +EditGroup=Edit Group +GroupName=Group Name +EnterGroupName=Please enter a group name +NewConnection=New Connection +EditConnection=Edit Connection +ConnectionDeleteConfirm=Do you want to delete connection "%s"? # ConnectionEditorForm -TestConnection = Test Connection -General = General -MQTT5Options = MQTT5 Options -TLS/SSL = TLS/SSL -LastWill = Last Will -Other = Other -Generate = Generate -Name = Name -Transport = Transport -Version = Version -Server = Server -Port = Port -ClientId = ClientId -CleanSession = Clean Session -CleanSessionToolTip = Sets whether the client and server should remember state across restarts and reconnects.\nIf set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained:\nMessage delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted.\nThe server will treat a subscription as durable.\nIf set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means\nMessage delivery to the specified QOS cannot be maintained if the client, server or connection are restarted\nThe server will treat a subscription as non-durable. -AutoReconnect = Auto Reconnect -ConnectionTimeout = Connection Timeout -ConnectionTimeoutToolTip = Sets the connection timeout value. \nThis value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. \nThe default timeout is 30 seconds. \nA value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. -KeepAliveInterval = Keep Alive Interval -KeepAliveIntervalToolTip = Sets the "keep alive" interval. \nThis value, measured in seconds, defines the maximum time interval between messages sent or received. \nIt enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. \nThe client will ensure that at least one message travels across the network within each keep alive period. \nIn the absence of a data-related message during the time period, the client sends a very small "ping" message, which the server will acknowledge. \nA value of 0 disables keepalive processing in the client. -ReconnectInterval = Reconnect Interval -ReconnectIntervalToolTip = Set the maximum time to wait between reconnects.\nThis value, measured in seconds. -EnableLastWill = Enable Last Will Message -RandomClientId = Random ClientId -Username = Username -Password = Password -CleanStart = Clean Start -CleanStartToolTip = Sets whether the client and server should remember state across restarts and reconnects. -RequestResponseInfo = Request Response Info -RequestResponseInfoToolTip = Sets the Request Response Info Flag.\nIf set to "null", then it will default to false.\nIf set to false, the server will not return any response information in the "CONNACK".\nIf set to true, the server MAY return response information in the "CONNACK". -RequestProblemInfo = Request Problem Info -RequestProblemInfoToolTip = Sets the Request Problem Info flag.\nIf set to "null", then it will default to true.\nIf set to false, the server MAY return a Reason String or User Properties\non a "CONNACK" or "DISCONNECT", but must not send a Reason String or User\nProperties on any packet other than "PUBLISH", "CONNACK" or "DISCONNECT".\nIf set to true, the server MAY return a Reason String or User Properties\non any packet where it is allowed. -SessionExpiryInterval = Session Expiry Interval -SessionExpiryIntervalToolTip = Sets the Session Expiry Interval.\nThis value, measured in seconds, defines the maximum time that the broker will maintain the session for once the client disconnects.\nClients should only connect with a long Session Expiry interval if they intend to connect to the server at some later point in time. -ReceiveMaximum = Receive Maximum -ReceiveMaximumToolTip = Sets the Receive Maximum.This value represents the limit of QoS 1 and QoS 2 publications that the client is willing to process concurrently. \nThere is no mechanism to limit the number of QoS 0 publications that the Server might try to send.\nThe range of values is 1-65535, leave blank to indicate maximum value. -MaximumPacketSize = Maximum Packet Size -MaximumPacketSizeToolTip = Sets the Maximum Packet Size. \nThis value represents the Maximum Packet Size the client is willing to accept.\nThe range of values is 1-2684354656, leave blank without restrictions. -TopicAliasMaximum = Topic Alias Maximum -TopicAliasMaximumToolTip = Sets the Topic Alias Maximum. \nThis value if present represents the highest value that the Client will accept as a Topic Alias sent by the Server.\nIf set to blank, then it will default to to 0.\nIf set to 0, the Client will not accept any Topic Aliases. \nThe Maximum value for this property is 65535. -UserProperties = User Properties -RemoveProperty = Remove Property -AddProperty = Add Property -NewProperty = New Property -NewValue = New value -Property = Property -Value = Value -EnableSSL = Enable TLS/SSL -SslProtocol = Protocol -SslMode = TLS/SSL Mode -SslModeBasic = Certificates & keys provided externally -SslModeServerOnly = CA certificate -SslModeServerKeystore = CA trust store -SslModeServerAndClient = CA certificate & client certificate/key -SslModeServerAndClientKeystore = CA trust store & client key store -SslModeProperties = TLS/SSL properties -SslPropertyNotValid = "%s" is not a valid SSL property key. -ChooseFile = Choose File -CaAndKeysFileFilter = Certificates And Keys Files(*.jks,*.jceks,*.p12,*.pfx,*.bks,*.pem,*.key) -CaCertificateFile = CA certificate file -CaKeystoreFile = CA Keystore File -ClientCertificateFile = Client certificate file -ClientKeyPassword = Client Key Password -ClientKeystoreFile = Client Keystore File -ClientKeystorePassword = Client Keystore Password -ClientKeyFile = Client key file -CaKeystorePassword = CA Keystore Password -PemKey = PEM Key -MaxMessagesStored = Max Messages Stored -DefaultPayloadFormat = Default Message Format -ClearUnsubMessage = Clear messages when closing subscription -FieldRequiredValidation = "%s" is required. -FieldRangeValidation = The range of "%s" is %d - %d -FieldMaxLengthValidation = The length of "%s" cannot exceed %d characters. -InputNotValid = The string "%s" is not a valid %s. -TestConnectionFailed = Test connection failed!\n\nCode: %d\nMessage: %s -TestConnectionSuccessful = Test connection Successful! -TestConnectionError = Test connection failed because of an error occurred:\n%s -Error = Error -Confirm = Confirm -Information = Information -Warning = Warning -ConnectionExists = Connection has been opened. -OpenConnectionError = An error occurred while opening the connection. -InvalidTopicOfMultiSymbol = Invalid format of topic, the multi symbol (#) has to be the last one after a separator. -InvalidSubtopic = Bad format of topic, invalid subtopic name: "%s". -ScriptLoaded = Successfully loaded script: %s -ScriptRemoved = Successfully removed script: %s -ScriptError = An error occurred while executing the script "%s" -ChooseScriptOperation = Please select what action you want to take on the script?\n If you want to cancel the execution of the script, click the "Remove" button.\n If the content of the script has changed, click "Reload" to load the new script content. -ScriptReloadConfirm = Do you want to reload the script "%s"? -Chart = Chart -MessageCountStatisticsChart = Message Count Statistics Chart ... -MessageCountStatisticsChartTitle = Message Count Statistics Chart [%s] -MessageLoadStatisticsChart = Message Load Statistics Chart ... -MessageLoadStatisticsChartTitle = Message Load Statistics Chart [%s] -MessageContentStatisticsChart = Message Content Statistics Chart ... -MessageContentStatisticsChartTitle = Message Content Statistics Chart [%s] -AddSeries = Add Series -RemoveSeries = Remove Series -ResetChart = Reset Chart -Pause = Pause -Resume = Resume -SaveCollectionToFavorites = Save the collection of the current chart series to favorites -EnterCollectionName = Enter the collection name for the series -OverwriteCollection = Do you want to overwrite the existing series collection "%s"? -PieChart = Pie Chart -BarChart = Bar Chart -SaveAs = Save As ... -Print = Print ... -ExportAs = Export As ... -ResetZoom = Reset Zoom -RemoveFavoriteCollection = Do you want to remove the series collection of series "%s"? -SeriesEditor = Series Editor -DynamicSeries = Dynamic Series -SeriesName = Series Name -Dynamic = Dynamic -Match = Match -MatchMode = Match Mode -MatchExpression = Match Expression -MatchExpressionTip = When the "Dynamic Series" checkbox is selected and the "Match Mode" is "Regular Expression", be sure to use grouping constructs delineate the subexpressions of a regular expression and capture the substrings of the input string. \nBy default, the substring that matches the first subexpression will be extracted. \nIf grouping constructs is not used, the complete matching string will be extracted.\n\nFor example: \\$SYS/broker/connection/(.+)/state\nwill match the topic \\$SYS/broker/connection/ACBD/state\n and extract substring ACBD -Wildcards = Wildcards -JsonPath = JsonPath -Equals = Equals -NotEquals = Not equals -Contains = Contains -NotContains = Not contains -StatisticalMethod = Statistical Method -MessageCount = Message Count -AverageMessageSize = AverageMessageSize -SumOfMessageSize = Sum of Message Size -MaximumMessageSize = Maximum Message Size -MinimumMessageSize = Minimum Message Size -MessageSize = Message Size -MessageSizeAxis = Message Size (bytes) -StatisticalWindow = Statistical Window -ExtractingMode = Extracting Mode -PayloadContent = Payload Content -ExtractingExpression = Extracting Expression -ExtractingExpressionTip = When the "Extracting Mode" is a "Regular Expression", be sure to use grouping constructs delineate the subexpressions of a regular expression and capture the substrings of the input string.\nBy default, the substring that matches the first subexpression will be extracted. \nIf grouping constructs is not used, the complete matching string will be extracted.\n\nNote: The extracted content must be numeric, non numeric content will be ignored. -RefreshFrequency = Refresh Frequency -XAxisDataQuantity = X-axis Data Quantity Limit -Unlimited = Unlimited -Seconds = Second(s) -Minutes = Minute(s) -Hours = Hours -DataPoints = Data Point(s) -CloseTabConfirm = There are chart windows related to the current tab that have not been closed yet. Closing the tab will also close these chart windows. Are you sure you want to close them? -Codecs = Codesc -NewCodec = New Codec -EditCodec = Edit Codec -Type = Type -SchemaFile = Schema File -MessageMapping = Message Mapping -MessageMappingToolTip = Providing a message mapping table can help MqttInsight more accurately identify and decode messages. \nOtherwise, MqttInsight can only attempt based on the pattern file, and the decoding results may not be entirely accurate. -AddMapping = Add Mapping -RemoveMapping = Remove Mapping -IncompleteMessageMapping = The row %d row in the message mapping table is not fully filled in. -MappingFieldTopic = Topic (wildcard supported) -ProtobufMessageName = Protobuf Message Name -KryoRecordClass = Kryo Record Class -AvroNamespace = Avro Namespace -AvroName = Avro Name -NoCodec = Selected codec not found: %s -CodecExists = The codec "%s" already exists. Please use a different name or remove it first. +TestConnection=Test Connection +General=General +MQTT5Options=MQTT5 Options +TLS/SSL=TLS/SSL +LastWill=Last Will +Other=Other +Generate=Generate +Name=Name +Transport=Transport +Version=Version +Server=Server +Port=Port +ClientId=ClientId +CleanSession=Clean Session +CleanSessionToolTip=Sets whether the client and server should remember state across restarts and reconnects.\nIf set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained:\nMessage delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted.\nThe server will treat a subscription as durable.\nIf set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means\nMessage delivery to the specified QOS cannot be maintained if the client, server or connection are restarted\nThe server will treat a subscription as non-durable. +AutoReconnect=Auto Reconnect +ConnectionTimeout=Connection Timeout +ConnectionTimeoutToolTip=Sets the connection timeout value. \nThis value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. \nThe default timeout is 30 seconds. \nA value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. +KeepAliveInterval=Keep Alive Interval +KeepAliveIntervalToolTip=Sets the "keep alive" interval. \nThis value, measured in seconds, defines the maximum time interval between messages sent or received. \nIt enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. \nThe client will ensure that at least one message travels across the network within each keep alive period. \nIn the absence of a data-related message during the time period, the client sends a very small "ping" message, which the server will acknowledge. \nA value of 0 disables keepalive processing in the client. +ReconnectInterval=Reconnect Interval +ReconnectIntervalToolTip=Set the maximum time to wait between reconnects.\nThis value, measured in seconds. +EnableLastWill=Enable Last Will Message +RandomClientId=Random ClientId +Username=Username +Password=Password +CleanStart=Clean Start +CleanStartToolTip=Sets whether the client and server should remember state across restarts and reconnects. +RequestResponseInfo=Request Response Info +RequestResponseInfoToolTip=Sets the Request Response Info Flag.\nIf set to "null", then it will default to false.\nIf set to false, the server will not return any response information in the "CONNACK".\nIf set to true, the server MAY return response information in the "CONNACK". +RequestProblemInfo=Request Problem Info +RequestProblemInfoToolTip=Sets the Request Problem Info flag.\nIf set to "null", then it will default to true.\nIf set to false, the server MAY return a Reason String or User Properties\non a "CONNACK" or "DISCONNECT", but must not send a Reason String or User\nProperties on any packet other than "PUBLISH", "CONNACK" or "DISCONNECT".\nIf set to true, the server MAY return a Reason String or User Properties\non any packet where it is allowed. +SessionExpiryInterval=Session Expiry Interval +SessionExpiryIntervalToolTip=Sets the Session Expiry Interval.\nThis value, measured in seconds, defines the maximum time that the broker will maintain the session for once the client disconnects.\nClients should only connect with a long Session Expiry interval if they intend to connect to the server at some later point in time. +ReceiveMaximum=Receive Maximum +ReceiveMaximumToolTip=Sets the Receive Maximum.This value represents the limit of QoS 1 and QoS 2 publications that the client is willing to process concurrently. \nThere is no mechanism to limit the number of QoS 0 publications that the Server might try to send.\nThe range of values is 1-65535, leave blank to indicate maximum value. +MaximumPacketSize=Maximum Packet Size +MaximumPacketSizeToolTip=Sets the Maximum Packet Size. \nThis value represents the Maximum Packet Size the client is willing to accept.\nThe range of values is 1-2684354656, leave blank without restrictions. +TopicAliasMaximum=Topic Alias Maximum +TopicAliasMaximumToolTip=Sets the Topic Alias Maximum. \nThis value if present represents the highest value that the Client will accept as a Topic Alias sent by the Server.\nIf set to blank, then it will default to to 0.\nIf set to 0, the Client will not accept any Topic Aliases. \nThe Maximum value for this property is 65535. +UserProperties=User Properties +RemoveProperty=Remove Property +AddProperty=Add Property +NewProperty=New Property +NewValue=New value +Property=Property +Value=Value +EnableSSL=Enable TLS/SSL +SslProtocol=Protocol +SslMode=TLS/SSL Mode +SslModeBasic=Certificates & keys provided externally +SslModeServerOnly=CA certificate +SslModeServerKeystore=CA trust store +SslModeServerAndClient=CA certificate & client certificate/key +SslModeServerAndClientKeystore=CA trust store & client key store +SslModeProperties=TLS/SSL properties +SslPropertyNotValid="%s" is not a valid SSL property key. +ChooseFile=Choose File +CaAndKeysFileFilter=Certificates And Keys Files(*.jks,*.jceks,*.p12,*.pfx,*.bks,*.pem,*.key) +CaCertificateFile=CA certificate file +CaKeystoreFile=CA Keystore File +ClientCertificateFile=Client certificate file +ClientKeyPassword=Client Key Password +ClientKeystoreFile=Client Keystore File +ClientKeystorePassword=Client Keystore Password +ClientKeyFile=Client key file +CaKeystorePassword=CA Keystore Password +PemKey=PEM Key +MaxMessagesStored=Max Messages Stored +DefaultPayloadFormat=Default Message Format +ClearUnsubMessage=Clear messages when closing subscription +FieldRequiredValidation="%s" is required. +FieldRangeValidation=The range of "%s" is %d - %d +FieldMaxLengthValidation=The length of "%s" cannot exceed %d characters. +InputNotValid=The string "%s" is not a valid %s. +TestConnectionFailed=Test connection failed!\n\nCode: %d\nMessage: %s +TestConnectionSuccessful=Test connection Successful! +TestConnectionError=Test connection failed because of an error occurred:\n%s +Error=Error +Confirm=Confirm +Information=Information +Warning=Warning +ConnectionExists=Connection has been opened. +OpenConnectionError=An error occurred while opening the connection. +InvalidTopicOfMultiSymbol=Invalid format of topic, the multi symbol (#) has to be the last one after a separator. +InvalidSubtopic=Bad format of topic, invalid subtopic name: "%s". +ScriptLoaded=Successfully loaded script: %s +ScriptRemoved=Successfully removed script: %s +ScriptError=An error occurred while executing the script "%s" +ChooseScriptOperation=Please select what action you want to take on the script?\n If you want to cancel the execution of the script, click the "Remove" button.\n If the content of the script has changed, click "Reload" to load the new script content. +ScriptReloadConfirm=Do you want to reload the script "%s"? +Chart=Chart +MessageCountStatisticsChart=Message Count Statistics Chart ... +MessageCountStatisticsChartTitle=Message Count Statistics Chart [%s] +MessageLoadStatisticsChart=Message Load Statistics Chart ... +MessageLoadStatisticsChartTitle=Message Load Statistics Chart [%s] +MessageContentStatisticsChart=Message Content Statistics Chart ... +MessageContentStatisticsChartTitle=Message Content Statistics Chart [%s] +AddSeries=Add Series +RemoveSeries=Remove Series +ResetChart=Reset Chart +Pause=Pause +Resume=Resume +SaveCollectionToFavorites=Save the collection of the current chart series to favorites +EnterCollectionName=Enter the collection name for the series +OverwriteCollection=Do you want to overwrite the existing series collection "%s"? +PieChart=Pie Chart +BarChart=Bar Chart +SaveAs=Save As ... +Print=Print ... +ExportAs=Export As ... +ResetZoom=Reset Zoom +RemoveFavoriteCollection=Do you want to remove the series collection of series "%s"? +SeriesEditor=Series Editor +DynamicSeries=Dynamic Series +SeriesName=Series Name +Dynamic=Dynamic +Match=Match +MatchMode=Match Mode +MatchExpression=Match Expression +MatchExpressionTip=When the "Dynamic Series" checkbox is selected and the "Match Mode" is "Regular Expression", be sure to use grouping constructs delineate the subexpressions of a regular expression and capture the substrings of the input string. \nBy default, the substring that matches the first subexpression will be extracted. \nIf grouping constructs is not used, the complete matching string will be extracted.\n\nFor example: \\$SYS/broker/connection/(.+)/state\nwill match the topic \\$SYS/broker/connection/ACBD/state\n and extract substring ACBD +Wildcards=Wildcards +JsonPath=JsonPath +Equals=Equals +NotEquals=Not equals +Contains=Contains +NotContains=Not contains +StatisticalMethod=Statistical Method +MessageCount=Message Count +AverageMessageSize=AverageMessageSize +SumOfMessageSize=Sum of Message Size +MaximumMessageSize=Maximum Message Size +MinimumMessageSize=Minimum Message Size +MessageSize=Message Size +MessageSizeAxis=Message Size (bytes) +StatisticalWindow=Statistical Window +ExtractingMode=Extracting Mode +PayloadContent=Payload Content +ExtractingExpression=Extracting Expression +ExtractingExpressionTip=When the "Extracting Mode" is a "Regular Expression", be sure to use grouping constructs delineate the subexpressions of a regular expression and capture the substrings of the input string.\nBy default, the substring that matches the first subexpression will be extracted. \nIf grouping constructs is not used, the complete matching string will be extracted.\n\nNote: The extracted content must be numeric, non numeric content will be ignored. +RefreshFrequency=Refresh Frequency +XAxisDataQuantity=X-axis Data Quantity Limit +Unlimited=Unlimited +Seconds=Second(s) +Minutes=Minute(s) +Hours=Hours +DataPoints=Data Point(s) +CloseTabConfirm=There are chart windows related to the current tab that have not been closed yet. Closing the tab will also close these chart windows. Are you sure you want to close them? +Codecs=Codesc +NewCodec=New Codec +EditCodec=Edit Codec +Type=Type +SchemaFile=Schema File +MessageMapping=Message Mapping +MessageMappingToolTip=Providing a message mapping table can help MqttInsight more accurately identify and decode messages. \nOtherwise, MqttInsight can only attempt based on the pattern file, and the decoding results may not be entirely accurate. +AddMapping=Add Mapping +RemoveMapping=Remove Mapping +IncompleteMessageMapping=The row %d row in the message mapping table is not fully filled in. +MappingFieldTopic=Topic (wildcard supported) +ProtobufMessageName=Protobuf Message Name +KryoRecordClass=Kryo Record Class +AvroNamespace=Avro Namespace +AvroName=Avro Name +NoCodec=Selected codec not found: %s +CodecExists=The codec "%s" already exists. Please use a different name or remove it first. diff --git a/src/main/resources/com/mqttinsight/Lang_zh_CN.properties b/src/main/resources/com/mqttinsight/Lang_zh_CN.properties index fb9d101..c07fb5e 100644 --- a/src/main/resources/com/mqttinsight/Lang_zh_CN.properties +++ b/src/main/resources/com/mqttinsight/Lang_zh_CN.properties @@ -1,371 +1,373 @@ -&File = \u6587\u4EF6(&F) -&ConnectionManager = \u8FDE\u63A5\u7BA1\u7406(&C) -Co&decs = \u7F16\u89E3\u7801\u8BBE\u7F6E(&D) -&Options = \u9009\u9879(&O) -E&xit = \u9000\u51FA(&X) -&View = \u67E5\u770B(&V) -Show&Log = \u663E\u793A\u65E5\u5FD7(&L) -&Help = \u5E2E\u52A9(&H) -&About = \u5173\u4E8E ... -About = \u5173\u4E8E -AboutOpenSource = MqttInsight \u4F7F\u7528\u4E86\u4E00\u4E9B\u4F18\u79C0\u7684\u5F00\u6E90\u9879\u76EE: -Log = \u65E5\u5FD7 -Options = \u9009\u9879 -UserInterface = \u7528\u6237\u754C\u9762 -Language = \u8BED\u8A00 -Theme = \u4E3B\u9898 -MessageEditor = \u6D88\u606F\u7F16\u8F91\u5668 -Font = \u5B57\u4F53 -FontSize = \u5B57\u4F53\u5927\u5C0F -MessageView = \u6D88\u606F\u89C6\u56FE -DefaultView = \u9ED8\u8BA4\u89C6\u56FE -TableView = \u8868\u683C\u89C6\u56FE -DialogueView = \u5BF9\u8BDD\u89C6\u56FE -MaxMessageRows = \u6D88\u606F\u6700\u5927\u884C\u6570 -MaxMessageRowsTip = \u5728"\u5BF9\u8BDD\u89C6\u56FE"\u4E2D\u6D88\u606F\u663E\u793A\u7684\u6700\u5927\u884C\u6570, \u8BBE\u7F6E\u6700\u5927\u884C\u6570\u4EE5\u514D\u4F1A\u8BDD\u6C14\u6CE1\u8FC7\u5927\u65F6\u5F71\u54CD\u663E\u793A\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5219\u4E0D\u4F5C\u9650\u5236\u3002 -TimeFormat = \u65F6\u95F4\u683C\u5F0F -InputDialogTitle = \u8F93\u5165 -InputDialogEmptyInfo = \u8F93\u5165\u5185\u5BB9\u4E0D\u80FD\u4E3A\u7A7A\u3002 -Cut = \u526A\u5207 -Copy = \u590D\u5236 -Paste = \u7C98\u8D34 -SelectAll = \u5168\u9009 -&Ok = \u786E\u5B9A(&O) -&Close = \u5173\u95ED(&C) -Close = \u5173\u95ED -&Cancel = \u53D6\u6D88(&C) -&Detail = \u8BE6\u60C5(&D) -Question = \u8BE2\u95EE -&New = \u65B0\u5EFA(&N) -&Remove = \u79FB\u9664(&R) -Re&load = \u91CD\u884C\u8F7D\u5165(&L) -OpenConnection = \u6253\u5F00\u8FDE\u63A5 -Connect = \u8FDE\u63A5 -Disconnect = \u65AD\u5F00 -Connecting = \u6B63\u5728\u8FDE\u63A5 ... -Connected = \u5DF2\u8FDE\u63A5 -Disconnecting = \u65AD\u5F00\u8FDE\u63A5 ... -Disconnected = \u5DF2\u65AD\u5F00 -Failed = \u8FDE\u63A5\u5931\u8D25 -MqttReasonCode_-1 = \u672A\u77E5\u9519\u8BEF -MqttReasonCode_1 = \u65E0\u6548\u534F\u8BAE\u7248\u672C -MqttReasonCode_2 = \u65E0\u6548\u5BA2\u6237\u673A\u6807\u8BC6 -MqttReasonCode_3 = \u4EE3\u7406\u7A0B\u5E8F\u4E0D\u53EF\u7528 -MqttReasonCode_4 = \u9519\u8BEF\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801 -MqttReasonCode_5 = \u65E0\u6743\u8FDE\u63A5 -MqttReasonCode_6 = \u610F\u5916\u9519\u8BEF -MqttReasonCode_119 = \u65E0\u6548\u7684 URI -MqttReasonCode_32000 = \u7B49\u5F85\u6765\u81EA\u670D\u52A1\u5668\u7684\u54CD\u5E94\u65F6\u8D85\u65F6 -MqttReasonCode_32001 = \u5185\u90E8\u9519\u8BEF\uFF0C\u6CA1\u6709\u53EF\u7528\u7684\u65B0\u6D88\u606F ID -MqttReasonCode_32002 = \u5411\u670D\u52A1\u5668\u5199\u5165\u6D88\u606F\u8D85\u65F6 -MqttReasonCode_32100 = \u5DF2\u8FDE\u63A5\u5BA2\u6237\u673A -MqttReasonCode_32101 = \u5DF2\u65AD\u5F00\u5BA2\u6237\u673A\u8FDE\u63A5 -MqttReasonCode_32102 = \u5BA2\u6237\u673A\u6B63\u5728\u65AD\u5F00\u8FDE\u63A5 -MqttReasonCode_32103 = \u65E0\u6CD5\u8FDE\u63A5\u81F3\u670D\u52A1\u5668 -MqttReasonCode_32104 = \u5BA2\u6237\u673A\u672A\u8FDE\u63A5 -MqttReasonCode_32105 = \u6307\u5B9A\u7684 SocketFactory \u7C7B\u578B\u4E0E\u4EE3\u7406\u7A0B\u5E8F URI \u4E0D\u5339\u914D -MqttReasonCode_32106 = SSL \u914D\u7F6E\u9519\u8BEF -MqttReasonCode_32107 = \u4E0D\u5141\u8BB8\u901A\u8FC7\u56DE\u8C03\u65B9\u6CD5\u65AD\u5F00\u8FDE\u63A5 -MqttReasonCode_32108 = \u4E0D\u53EF\u8BC6\u522B\u7684\u5305 -MqttReasonCode_32109 = \u4E0E\u670D\u52A1\u5668\u7684\u8FDE\u63A5\u4E22\u5931 -MqttReasonCode_32110 = \u5DF2\u5728\u8FDB\u884C\u8FDE\u63A5 -MqttReasonCode_32111 = \u5BA2\u6237\u673A\u5DF2\u5173\u95ED -MqttReasonCode_32200 = \u6301\u4E45\u6027\u5DF2\u5728\u4F7F\u7528\u4E2D -MqttReasonCode_32201 = \u4EE4\u724C\u5DF2\u5728\u4F7F\u7528\u4E2D -MqttReasonCode_32202 = \u6B63\u5728\u8FDB\u884C\u8FC7\u591A\u7684\u53D1\u5E03 -MqttReasonCode_50000 = \u65E0\u6548\u7684 IV \u5B57\u6BB5\u6807\u8BC6\u7B26 -MqttReasonCode_50001 = \u65E0\u6548\u7684\u8FD4\u56DE\u7801 -MqttReasonCode_50002 = \u6570\u636E\u5305\u7684\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u4E0D\u7B26\u5408MQTTv5\u89C4\u8303 -MqttReasonCode_50003 = CONNECT \u6570\u636E\u5305\u4E0D\u542B\u6B63\u786E\u7684\u534F\u8BAE\u540D\u79F0\u6216\u7248\u672C. -MqttReasonCode_50004 = \u670D\u52A1\u5668\u53D1\u9001\u4E86\u4E3B\u9898\u522B\u540D\u65E0\u6548\u7684\u53D1\u5E03\u6D88\u606F. -MqttReasonCode_50005 = \u5BA2\u6237\u7AEF\u5C1D\u8BD5\u89E3\u7801\u5DF2\u89E3\u7801\u7684\u5C5E\u6027\uFF0C\u8BE5\u5C5E\u6027\u53EA\u80FD\u5305\u542B\u4E00\u6B21. -MqttReasonCode_51001 = \u4F20\u5165\u6570\u636E\u5305\u592A\u5927. -MqttReasonCode_51002 = \u4F20\u51FA\u6570\u636E\u5305\u592A\u5927. -MqttReasonCode_16 = \u6CA1\u6709\u5339\u914D\u7684\u8BA2\u9605\u8005. -MqttReasonCode_17 = \u4E0D\u5B58\u5728\u7684\u8BA2\u9605. -MqttReasonCode_24 = \u7EE7\u7EED\u8EAB\u4EFD\u9A8C\u8BC1. -MqttReasonCode_25 = \u91CD\u65B0\u8EAB\u4EFD\u9A8C\u8BC1. -MqttReasonCode_128 = \u672A\u6307\u5B9A\u7684\u9519\u8BEF. -MqttReasonCode_129 = \u9519\u8BEF\u7684\u6570\u636E\u5305. -MqttReasonCode_130 = \u534F\u8BAE\u9519\u8BEF. -MqttReasonCode_131 = \u5B9E\u73B0\u7279\u5B9A\u9519\u8BEF. -MqttReasonCode_132 = \u4E0D\u652F\u6301\u7684\u534F\u8BAE\u7248\u672C. -MqttReasonCode_133 = \u5BA2\u6237\u7AEF\u6807\u8BC6\u65E0\u6548. -MqttReasonCode_134 = \u9519\u8BEF\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801. -MqttReasonCode_135 = \u65E0\u6743\u8FDE\u63A5. -MqttReasonCode_136 = \u670D\u52A1\u5668\u4E0D\u53EF\u7528. -MqttReasonCode_137 = \u670D\u52A1\u5668\u5FD9. -MqttReasonCode_138 = \u5DF2\u7981\u6B62. -MqttReasonCode_139 = \u670D\u52A1\u5668\u5DF2\u5173\u95ED. -MqttReasonCode_140 = \u9519\u8BEF\u7684\u8BA4\u8BC1\u65B9\u6CD5. -MqttReasonCode_141 = \u4FDD\u6301\u6D3B\u52A8\u8D85\u65F6. -MqttReasonCode_142 = \u4F1A\u8BDD\u5DF2\u63A5\u7BA1. -MqttReasonCode_143 = \u65E0\u6548\u7684\u4E3B\u9898\u8FC7\u6EE4\u5668. -MqttReasonCode_144 = \u65E0\u6548\u7684\u4E3B\u9898\u540D. -MqttReasonCode_145 = \u6570\u636E\u5305\u6807\u8BC6\u7B26\u6B63\u88AB\u4F7F\u7528. -MqttReasonCode_146 = \u627E\u4E0D\u5230\u6570\u636E\u5305\u6807\u8BC6\u7B26. -MqttReasonCode_147 = \u8D85\u8FC7\u63A5\u6536\u6700\u5927\u503C. -MqttReasonCode_148 = \u4E3B\u9898\u522B\u540D\u65E0\u6548. -MqttReasonCode_149 = \u6570\u636E\u5305\u592A\u5927. -MqttReasonCode_150 = \u6D88\u606F\u901F\u7387\u8FC7\u9AD8. -MqttReasonCode_151 = \u8D85\u51FA\u914D\u989D. -MqttReasonCode_152 = \u7BA1\u7406\u5458\u884C\u4E3A. -MqttReasonCode_153 = \u8F7D\u8377\u683C\u5F0F\u65E0\u6548. -MqttReasonCode_154 = \u4E0D\u652F\u6301\u4FDD\u7559. -MqttReasonCode_155 = \u4E0D\u652F\u6301QoS -MqttReasonCode_156 = \u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5668. -MqttReasonCode_157 = \u670D\u52A1\u5DF2\u8FC1\u79FB. -MqttReasonCode_158 = \u4E0D\u652F\u6301\u5171\u4EAB\u8BA2\u9605. -MqttReasonCode_159 = \u8D85\u8FC7\u8FDE\u63A5\u901F\u7387. -MqttReasonCode_160 = \u6700\u957F\u8FDE\u63A5\u65F6\u95F4. -MqttReasonCode_161 = \u4E0D\u652F\u6301\u8BA2\u9605\u6807\u8BC6\u7B26. -MqttReasonCode_162 = \u4E0D\u652F\u6301\u7684\u901A\u914D\u7B26\u8BA2\u9605. -NewSubscription = \u6DFB\u52A0\u8BA2\u9605 -NoSubscriptions = \u6CA1\u6709\u5DF2\u6536\u85CF\u7684\u8BA2\u9605 -SubscribeAll = \u8BA2\u9605\u6240\u6709 -RemoveFavoriteSubscription = \u4F60\u60F3\u8981\u79FB\u9664\u6536\u85CF\u7684\u8BA2\u9605 "%s" \u5417? -MessageIndicator = \u6D88\u606F\u6570(%d / %d) -SearchHistory = \u641C\u7D22\u5386\u53F2 -Empty = <\u7A7A> -MatchCase = \u533A\u5206\u5927\u5C0F\u5199 -WholeWords = \u5339\u914D\u5355\u8BCD -RegularExpression = \u6B63\u5219\u8868\u8FBE\u5F0F -PreviousOccurrence = \u4E0A\u4E00\u5904 -NextOccurrence = \u4E0B\u4E00\u5904 -ScrollToEnd = \u81EA\u52A8\u6EDA\u5230\u6700\u540E -ClearAll = \u5168\u90E8\u6E05\u9664 -FilterSearchResults = \u8FC7\u6EE4\u641C\u7D22\u7ED3\u679C -GoFirst = \u8F6C\u5230\u7B2C\u4E00\u6761\u6D88\u606F -GoPrevious = \u8F6C\u5230\u4E0A\u4E00\u6761\u6D88\u606F -GoNext = \u8F6C\u5230\u4E0B\u4E00\u6761\u6D88\u606F -GoLast = \u8F6C\u5230\u6700\u540E\u4E00\u6761\u6D88\u606F -Autoscroll = \u81EA\u52A8\u6EDA\u52A8 -More = \u66F4\u591A... -Script = \u811A\u672C -LoadScript = \u52A0\u8F7D\u811A\u672C ... -JavaScriptFileFilter = JavaScript \u811A\u672C\u6587\u4EF6 (*.js) -ClearAllMessages = \u6E05\u9664\u5168\u90E8\u6D88\u606F -ClearVisibleMessages = \u6E05\u9664\u53EF\u89C1\u7684\u6D88\u606F -ExportAllMessages = \u5BFC\u51FA\u5168\u90E8\u6D88\u606F ... -PayloadFormat = \u6D88\u606F\u683C\u5F0F -PayloadFormatTip = \u6D88\u606F\u683C\u5F0F\u9009\u62E9 "Default" \u65F6\uFF0C\u5C06\u91C7\u7528\u8FDE\u63A5\u4E2D\u8BBE\u7F6E\u7684\u9ED8\u8BA4\u6D88\u606F\u683C\u5F0F\u4F5C\u4E3A\u8BA2\u9605\u7684\u6D88\u606F\u683C\u5F0F\u3002\n\u5E76\u53EF\u5728\u8BA2\u9605\u9879\u7684\u5F39\u51FA\u83DC\u5355\u4E2D\u518D\u6B21\u66F4\u6539\u6D88\u606F\u683C\u5F0F\u3002 -Topic = \u4E3B\u9898 -Payload = \u6D88\u606F -QoS = QoS -Retained = \u4FDD\u7559 -ReceivedTime = \u63A5\u6536\u65F6\u95F4 -Time = \u65F6\u95F4 -Pretty = \u683C\u5F0F\u5316 -SyntaxHighlighting = \u8BED\u6CD5\u9AD8\u4EAE -SyntaxHighlightingTips = \u5F00\u542F\u8BED\u6CD5\u9AD8\u4EAE\u4F1A\u4EA7\u751F\u989D\u5916\u7684\u6027\u80FD\u6D88\u8017\uFF0C\u5EFA\u8BAE\u5728\u6D88\u606F\u91CF\u591A\u4E14\u5185\u5BB9\u590D\u6742\u65F6\u5173\u95ED\u8BED\u6CD5\u9AD8\u4EAE\u4EE5\u63D0\u5347\u9884\u89C8\u6027\u80FD\u3002 -JsonFileFilter = JSON \u6587\u4EF6 (*.json) -CsvFileFilter = CSV \u6587\u4EF6 (*.csv) -TextFileFilter = \u6587\u672C\u6587\u4EF6 (*.txt) -AllFileFilter = \u5168\u90E8\u6587\u4EF6 (*.*) -FileExists = \u6587\u4EF6 "%s" \u5DF2\u7ECF\u5B58\u5728, \u662F\u5426\u8986\u76D6! -Favorite = \u6536\u85CF -ShowOrHideMessages = \u663E\u793A/\u9690\u85CF\u6D88\u606F -Unsubscribe = \u53D6\u6D88\u8BA2\u9605 -Resubscribe = \u91CD\u65B0\u8BA2\u9605 -ClearMessages = \u6E05\u9664\u6D88\u606F -ExportMessages = \u5BFC\u51FA\u6D88\u606F ... -TopicSubscribed = \u4E3B\u9898\u5DF2\u8BA2\u9605, \u4E0D\u53EF\u91CD\u590D\u8BA2\u9605\u3002 -Color = \u989C\u8272 -MoreColor = \u66F4\u591A\u989C\u8272 ... -ChooseColor = \u9009\u62E9\u989C\u8272 -Preview = \u9884\u89C8 -MessagePreview = \u6D88\u606F\u9884\u89C8 -PreviewSeparateWindow = \u5728\u72EC\u7ACB\u7A97\u53E3\u9884\u89C8 -Publish = \u53D1\u5E03 -PublishMessage = \u53D1\u5E03\u6D88\u606F -PublishTips = \u6D88\u606F\u5185\u5BB9\u53EF\u4EE5\u4F7F\u7528\u5360\u4F4D\u7B26, \u5B9E\u9645\u53D1\u9001\u65F6\u5C06\u88AB\u66FF\u6362\u4E3A\u76F8\u5E94\u7684\u968F\u673A\u503C\uFF1A\n${timestamp} : \u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4\u6233\u6BEB\u79D2\u503C\uFF1B\n${uuid} : \u968F\u673A UUID\uFF1B\n${int(min,max)} : \u968F\u673A\u6574\u6570\u503C\uFF1B\n${float(min,max)} : \u968F\u673A\u6D6E\u70B9\u503C\uFF1B\n${string(length)} : \u968F\u673A\u6307\u5B9A\u957F\u5EA6\u7684\u5B57\u7B26\u4E32\u3002 -Copy&Topic = \u590D\u5236\u4E3B\u9898(&T) -Copy&Payload = \u590D\u5236\u6D88\u606F -SegmentTopicDescription = %d \u4E2A\u4E3B\u9898 -SegmentTopicsDescription = %d \u4E2A\u4E3B\u9898 -SegmentMessageDescription = %d \u6761\u6D88\u606F -SegmentMessagesDescription = %d \u6761\u6D88\u606F +&File=\u6587\u4EF6(&F) +&ConnectionManager=\u8FDE\u63A5\u7BA1\u7406(&C) +Co&decs=\u7F16\u89E3\u7801\u8BBE\u7F6E(&D) +&Options=\u9009\u9879(&O) +E&xit=\u9000\u51FA(&X) +&View=\u67E5\u770B(&V) +Show&Log=\u663E\u793A\u65E5\u5FD7(&L) +&Help=\u5E2E\u52A9(&H) +&About=\u5173\u4E8E ... +About=\u5173\u4E8E +AboutOpenSource=MqttInsight \u4F7F\u7528\u4E86\u4E00\u4E9B\u4F18\u79C0\u7684\u5F00\u6E90\u9879\u76EE: +Log=\u65E5\u5FD7 +Options=\u9009\u9879 +UserInterface=\u7528\u6237\u754C\u9762 +Language=\u8BED\u8A00 +Theme=\u4E3B\u9898 +MessageEditor=\u6D88\u606F\u7F16\u8F91\u5668 +Font=\u5B57\u4F53 +FontSize=\u5B57\u4F53\u5927\u5C0F +MessageView=\u6D88\u606F\u89C6\u56FE +DefaultView=\u9ED8\u8BA4\u89C6\u56FE +TableView=\u8868\u683C\u89C6\u56FE +DialogueView=\u5BF9\u8BDD\u89C6\u56FE +MaxMessageRows=\u6D88\u606F\u6700\u5927\u884C\u6570 +MaxMessageRowsTip=\u5728"\u5BF9\u8BDD\u89C6\u56FE"\u4E2D\u6D88\u606F\u663E\u793A\u7684\u6700\u5927\u884C\u6570, \u8BBE\u7F6E\u6700\u5927\u884C\u6570\u4EE5\u514D\u4F1A\u8BDD\u6C14\u6CE1\u8FC7\u5927\u65F6\u5F71\u54CD\u663E\u793A\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5219\u4E0D\u4F5C\u9650\u5236\u3002 +TimeFormat=\u65F6\u95F4\u683C\u5F0F +InputDialogTitle=\u8F93\u5165 +InputDialogEmptyInfo=\u8F93\u5165\u5185\u5BB9\u4E0D\u80FD\u4E3A\u7A7A\u3002 +Cut=\u526A\u5207 +Copy=\u590D\u5236 +Paste=\u7C98\u8D34 +SelectAll=\u5168\u9009 +&Ok=\u786E\u5B9A(&O) +&Close=\u5173\u95ED(&C) +Close=\u5173\u95ED +&Cancel=\u53D6\u6D88(&C) +&Detail=\u8BE6\u60C5(&D) +Question=\u8BE2\u95EE +&New=\u65B0\u5EFA(&N) +&Remove=\u79FB\u9664(&R) +Re&load=\u91CD\u884C\u8F7D\u5165(&L) +OpenConnection=\u6253\u5F00\u8FDE\u63A5 +Connect=\u8FDE\u63A5 +Disconnect=\u65AD\u5F00 +Connecting=\u6B63\u5728\u8FDE\u63A5 ... +Connected=\u5DF2\u8FDE\u63A5 +Disconnecting=\u65AD\u5F00\u8FDE\u63A5 ... +Disconnected=\u5DF2\u65AD\u5F00 +Failed=\u8FDE\u63A5\u5931\u8D25 +MqttReasonCode_-1=\u672A\u77E5\u9519\u8BEF +MqttReasonCode_1=\u65E0\u6548\u534F\u8BAE\u7248\u672C +MqttReasonCode_2=\u65E0\u6548\u5BA2\u6237\u673A\u6807\u8BC6 +MqttReasonCode_3=\u4EE3\u7406\u7A0B\u5E8F\u4E0D\u53EF\u7528 +MqttReasonCode_4=\u9519\u8BEF\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801 +MqttReasonCode_5=\u65E0\u6743\u8FDE\u63A5 +MqttReasonCode_6=\u610F\u5916\u9519\u8BEF +MqttReasonCode_119=\u65E0\u6548\u7684 URI +MqttReasonCode_32000=\u7B49\u5F85\u6765\u81EA\u670D\u52A1\u5668\u7684\u54CD\u5E94\u65F6\u8D85\u65F6 +MqttReasonCode_32001=\u5185\u90E8\u9519\u8BEF\uFF0C\u6CA1\u6709\u53EF\u7528\u7684\u65B0\u6D88\u606F ID +MqttReasonCode_32002=\u5411\u670D\u52A1\u5668\u5199\u5165\u6D88\u606F\u8D85\u65F6 +MqttReasonCode_32100=\u5DF2\u8FDE\u63A5\u5BA2\u6237\u673A +MqttReasonCode_32101=\u5DF2\u65AD\u5F00\u5BA2\u6237\u673A\u8FDE\u63A5 +MqttReasonCode_32102=\u5BA2\u6237\u673A\u6B63\u5728\u65AD\u5F00\u8FDE\u63A5 +MqttReasonCode_32103=\u65E0\u6CD5\u8FDE\u63A5\u81F3\u670D\u52A1\u5668 +MqttReasonCode_32104=\u5BA2\u6237\u673A\u672A\u8FDE\u63A5 +MqttReasonCode_32105=\u6307\u5B9A\u7684 SocketFactory \u7C7B\u578B\u4E0E\u4EE3\u7406\u7A0B\u5E8F URI \u4E0D\u5339\u914D +MqttReasonCode_32106=SSL \u914D\u7F6E\u9519\u8BEF +MqttReasonCode_32107=\u4E0D\u5141\u8BB8\u901A\u8FC7\u56DE\u8C03\u65B9\u6CD5\u65AD\u5F00\u8FDE\u63A5 +MqttReasonCode_32108=\u4E0D\u53EF\u8BC6\u522B\u7684\u5305 +MqttReasonCode_32109=\u4E0E\u670D\u52A1\u5668\u7684\u8FDE\u63A5\u4E22\u5931 +MqttReasonCode_32110=\u5DF2\u5728\u8FDB\u884C\u8FDE\u63A5 +MqttReasonCode_32111=\u5BA2\u6237\u673A\u5DF2\u5173\u95ED +MqttReasonCode_32200=\u6301\u4E45\u6027\u5DF2\u5728\u4F7F\u7528\u4E2D +MqttReasonCode_32201=\u4EE4\u724C\u5DF2\u5728\u4F7F\u7528\u4E2D +MqttReasonCode_32202=\u6B63\u5728\u8FDB\u884C\u8FC7\u591A\u7684\u53D1\u5E03 +MqttReasonCode_50000=\u65E0\u6548\u7684 IV \u5B57\u6BB5\u6807\u8BC6\u7B26 +MqttReasonCode_50001=\u65E0\u6548\u7684\u8FD4\u56DE\u7801 +MqttReasonCode_50002=\u6570\u636E\u5305\u7684\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u4E0D\u7B26\u5408MQTTv5\u89C4\u8303 +MqttReasonCode_50003=CONNECT \u6570\u636E\u5305\u4E0D\u542B\u6B63\u786E\u7684\u534F\u8BAE\u540D\u79F0\u6216\u7248\u672C. +MqttReasonCode_50004=\u670D\u52A1\u5668\u53D1\u9001\u4E86\u4E3B\u9898\u522B\u540D\u65E0\u6548\u7684\u53D1\u5E03\u6D88\u606F. +MqttReasonCode_50005=\u5BA2\u6237\u7AEF\u5C1D\u8BD5\u89E3\u7801\u5DF2\u89E3\u7801\u7684\u5C5E\u6027\uFF0C\u8BE5\u5C5E\u6027\u53EA\u80FD\u5305\u542B\u4E00\u6B21. +MqttReasonCode_51001=\u4F20\u5165\u6570\u636E\u5305\u592A\u5927. +MqttReasonCode_51002=\u4F20\u51FA\u6570\u636E\u5305\u592A\u5927. +MqttReasonCode_16=\u6CA1\u6709\u5339\u914D\u7684\u8BA2\u9605\u8005. +MqttReasonCode_17=\u4E0D\u5B58\u5728\u7684\u8BA2\u9605. +MqttReasonCode_24=\u7EE7\u7EED\u8EAB\u4EFD\u9A8C\u8BC1. +MqttReasonCode_25=\u91CD\u65B0\u8EAB\u4EFD\u9A8C\u8BC1. +MqttReasonCode_128=\u672A\u6307\u5B9A\u7684\u9519\u8BEF. +MqttReasonCode_129=\u9519\u8BEF\u7684\u6570\u636E\u5305. +MqttReasonCode_130=\u534F\u8BAE\u9519\u8BEF. +MqttReasonCode_131=\u5B9E\u73B0\u7279\u5B9A\u9519\u8BEF. +MqttReasonCode_132=\u4E0D\u652F\u6301\u7684\u534F\u8BAE\u7248\u672C. +MqttReasonCode_133=\u5BA2\u6237\u7AEF\u6807\u8BC6\u65E0\u6548. +MqttReasonCode_134=\u9519\u8BEF\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801. +MqttReasonCode_135=\u65E0\u6743\u8FDE\u63A5. +MqttReasonCode_136=\u670D\u52A1\u5668\u4E0D\u53EF\u7528. +MqttReasonCode_137=\u670D\u52A1\u5668\u5FD9. +MqttReasonCode_138=\u5DF2\u7981\u6B62. +MqttReasonCode_139=\u670D\u52A1\u5668\u5DF2\u5173\u95ED. +MqttReasonCode_140=\u9519\u8BEF\u7684\u8BA4\u8BC1\u65B9\u6CD5. +MqttReasonCode_141=\u4FDD\u6301\u6D3B\u52A8\u8D85\u65F6. +MqttReasonCode_142=\u4F1A\u8BDD\u5DF2\u63A5\u7BA1. +MqttReasonCode_143=\u65E0\u6548\u7684\u4E3B\u9898\u8FC7\u6EE4\u5668. +MqttReasonCode_144=\u65E0\u6548\u7684\u4E3B\u9898\u540D. +MqttReasonCode_145=\u6570\u636E\u5305\u6807\u8BC6\u7B26\u6B63\u88AB\u4F7F\u7528. +MqttReasonCode_146=\u627E\u4E0D\u5230\u6570\u636E\u5305\u6807\u8BC6\u7B26. +MqttReasonCode_147=\u8D85\u8FC7\u63A5\u6536\u6700\u5927\u503C. +MqttReasonCode_148=\u4E3B\u9898\u522B\u540D\u65E0\u6548. +MqttReasonCode_149=\u6570\u636E\u5305\u592A\u5927. +MqttReasonCode_150=\u6D88\u606F\u901F\u7387\u8FC7\u9AD8. +MqttReasonCode_151=\u8D85\u51FA\u914D\u989D. +MqttReasonCode_152=\u7BA1\u7406\u5458\u884C\u4E3A. +MqttReasonCode_153=\u8F7D\u8377\u683C\u5F0F\u65E0\u6548. +MqttReasonCode_154=\u4E0D\u652F\u6301\u4FDD\u7559. +MqttReasonCode_155=\u4E0D\u652F\u6301QoS +MqttReasonCode_156=\u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5668. +MqttReasonCode_157=\u670D\u52A1\u5DF2\u8FC1\u79FB. +MqttReasonCode_158=\u4E0D\u652F\u6301\u5171\u4EAB\u8BA2\u9605. +MqttReasonCode_159=\u8D85\u8FC7\u8FDE\u63A5\u901F\u7387. +MqttReasonCode_160=\u6700\u957F\u8FDE\u63A5\u65F6\u95F4. +MqttReasonCode_161=\u4E0D\u652F\u6301\u8BA2\u9605\u6807\u8BC6\u7B26. +MqttReasonCode_162=\u4E0D\u652F\u6301\u7684\u901A\u914D\u7B26\u8BA2\u9605. +NewSubscription=\u6DFB\u52A0\u8BA2\u9605 +NoSubscriptions=\u6CA1\u6709\u5DF2\u6536\u85CF\u7684\u8BA2\u9605 +SubscribeAll=\u8BA2\u9605\u6240\u6709 +RemoveFavoriteSubscription=\u4F60\u60F3\u8981\u79FB\u9664\u6536\u85CF\u7684\u8BA2\u9605 "%s" \u5417? +MessageIndicator=\u6D88\u606F\u6570(%d / %d) +SearchHistory=\u641C\u7D22\u5386\u53F2 +Empty=<\u7A7A> +MatchCase=\u533A\u5206\u5927\u5C0F\u5199 +WholeWords=\u5339\u914D\u5355\u8BCD +RegularExpression=\u6B63\u5219\u8868\u8FBE\u5F0F +PreviousOccurrence=\u4E0A\u4E00\u5904 +NextOccurrence=\u4E0B\u4E00\u5904 +ScrollToEnd=\u81EA\u52A8\u6EDA\u5230\u6700\u540E +ClearAll=\u5168\u90E8\u6E05\u9664 +FilterSearchResults=\u8FC7\u6EE4\u641C\u7D22\u7ED3\u679C +GoFirst=\u8F6C\u5230\u7B2C\u4E00\u6761\u6D88\u606F +GoPrevious=\u8F6C\u5230\u4E0A\u4E00\u6761\u6D88\u606F +GoNext=\u8F6C\u5230\u4E0B\u4E00\u6761\u6D88\u606F +GoLast=\u8F6C\u5230\u6700\u540E\u4E00\u6761\u6D88\u606F +Autoscroll=\u81EA\u52A8\u6EDA\u52A8 +More=\u66F4\u591A... +Script=\u811A\u672C +LoadScript=\u52A0\u8F7D\u811A\u672C ... +JavaScriptFileFilter=JavaScript \u811A\u672C\u6587\u4EF6 (*.js) +ClearAllMessages=\u6E05\u9664\u5168\u90E8\u6D88\u606F +ClearVisibleMessages=\u6E05\u9664\u53EF\u89C1\u7684\u6D88\u606F +ExportAllMessages=\u5BFC\u51FA\u5168\u90E8\u6D88\u606F ... +PayloadFormat=\u6D88\u606F\u683C\u5F0F +PayloadFormatTip=\u6D88\u606F\u683C\u5F0F\u9009\u62E9 "Default" \u65F6\uFF0C\u5C06\u91C7\u7528\u8FDE\u63A5\u4E2D\u8BBE\u7F6E\u7684\u9ED8\u8BA4\u6D88\u606F\u683C\u5F0F\u4F5C\u4E3A\u8BA2\u9605\u7684\u6D88\u606F\u683C\u5F0F\u3002\n\u5E76\u53EF\u5728\u8BA2\u9605\u9879\u7684\u5F39\u51FA\u83DC\u5355\u4E2D\u518D\u6B21\u66F4\u6539\u6D88\u606F\u683C\u5F0F\u3002 +Topic=\u4E3B\u9898 +Payload=\u6D88\u606F +QoS=QoS +Retained=\u4FDD\u7559 +ReceivedTime=\u63A5\u6536\u65F6\u95F4 +Time=\u65F6\u95F4 +Pretty=\u683C\u5F0F\u5316 +SyntaxHighlighting=\u8BED\u6CD5\u9AD8\u4EAE +SyntaxHighlightingTips=\u5F00\u542F\u8BED\u6CD5\u9AD8\u4EAE\u4F1A\u4EA7\u751F\u989D\u5916\u7684\u6027\u80FD\u6D88\u8017\uFF0C\u5EFA\u8BAE\u5728\u6D88\u606F\u91CF\u591A\u4E14\u5185\u5BB9\u590D\u6742\u65F6\u5173\u95ED\u8BED\u6CD5\u9AD8\u4EAE\u4EE5\u63D0\u5347\u9884\u89C8\u6027\u80FD\u3002 +JsonFileFilter=JSON \u6587\u4EF6 (*.json) +CsvFileFilter=CSV \u6587\u4EF6 (*.csv) +TextFileFilter=\u6587\u672C\u6587\u4EF6 (*.txt) +AllFileFilter=\u5168\u90E8\u6587\u4EF6 (*.*) +FileExists=\u6587\u4EF6 "%s" \u5DF2\u7ECF\u5B58\u5728, \u662F\u5426\u8986\u76D6! +Favorite=\u6536\u85CF +ShowOrHideMessages=\u663E\u793A/\u9690\u85CF\u6D88\u606F +HideRelatedMessages=\u9690\u85CF\u6B64\u4E3B\u9898\u7684\u6D88\u606F +HideAllOtherMessages=\u9690\u85CF\u5176\u5B83\u4E3B\u9898\u7684\u6D88\u606F +Unsubscribe=\u53D6\u6D88\u8BA2\u9605 +Resubscribe=\u91CD\u65B0\u8BA2\u9605 +ClearMessages=\u6E05\u9664\u6D88\u606F +ExportMessages=\u5BFC\u51FA\u6D88\u606F ... +TopicSubscribed=\u4E3B\u9898\u5DF2\u8BA2\u9605, \u4E0D\u53EF\u91CD\u590D\u8BA2\u9605\u3002 +Color=\u989C\u8272 +MoreColor=\u66F4\u591A\u989C\u8272 ... +ChooseColor=\u9009\u62E9\u989C\u8272 +Preview=\u9884\u89C8 +MessagePreview=\u6D88\u606F\u9884\u89C8 +PreviewSeparateWindow=\u5728\u72EC\u7ACB\u7A97\u53E3\u9884\u89C8 +Publish=\u53D1\u5E03 +PublishMessage=\u53D1\u5E03\u6D88\u606F +PublishTips=\u6D88\u606F\u5185\u5BB9\u53EF\u4EE5\u4F7F\u7528\u5360\u4F4D\u7B26, \u5B9E\u9645\u53D1\u9001\u65F6\u5C06\u88AB\u66FF\u6362\u4E3A\u76F8\u5E94\u7684\u968F\u673A\u503C\uFF1A\n${timestamp} : \u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4\u6233\u6BEB\u79D2\u503C\uFF1B\n${uuid} : \u968F\u673A UUID\uFF1B\n${int(min,max)} : \u968F\u673A\u6574\u6570\u503C\uFF1B\n${float(min,max)} : \u968F\u673A\u6D6E\u70B9\u503C\uFF1B\n${string(length)} : \u968F\u673A\u6307\u5B9A\u957F\u5EA6\u7684\u5B57\u7B26\u4E32\u3002 +Copy&Topic=\u590D\u5236\u4E3B\u9898(&T) +Copy&Payload=\u590D\u5236\u6D88\u606F +SegmentTopicDescription=%d \u4E2A\u4E3B\u9898 +SegmentTopicsDescription=%d \u4E2A\u4E3B\u9898 +SegmentMessageDescription=%d \u6761\u6D88\u606F +SegmentMessagesDescription=%d \u6761\u6D88\u606F # ConnectionManagerForm -ConnectionManagement = \u8FDE\u63A5\u7BA1\u7406 -&OpenConnection = \u6253\u5F00\u8FDE\u63A5(&O) -New&Group = \u65B0\u5EFA\u5206\u7EC4(&G) -New&RootGroup = \u65B0\u5EFA\u6839\u5206\u7EC4(&R) -New&Connection = \u65B0\u5EFA\u8FDE\u63A5(&C) -Du&plicate = \u521B\u5EFA\u526F\u672C(&P) -&Edit = \u7F16\u8F91(&E) -Edit = \u7F16\u8F91 -&Delete = \u5220\u9664(&D) -Delete = \u5220\u9664 -NewGroup = \u65B0\u5EFA\u5206\u7EC4 -EditGroup = \u7F16\u8F91\u5206\u7EC4 -GroupName = \u5206\u7EC4\u540D\u79F0 -EnterGroupName = \u8BF7\u8F93\u5165\u5206\u7EC4\u540D\u79F0 -NewConnection = \u65B0\u5EFA\u8FDE\u63A5 -EditConnection = \u7F16\u8F91\u8FDE\u63A5 -ConnectionDeleteConfirm = \u60A8\u60F3\u8981\u5220\u9664\u8FDE\u63A5 "%s" \u5417? +ConnectionManagement=\u8FDE\u63A5\u7BA1\u7406 +&OpenConnection=\u6253\u5F00\u8FDE\u63A5(&O) +New&Group=\u65B0\u5EFA\u5206\u7EC4(&G) +New&RootGroup=\u65B0\u5EFA\u6839\u5206\u7EC4(&R) +New&Connection=\u65B0\u5EFA\u8FDE\u63A5(&C) +Du&plicate=\u521B\u5EFA\u526F\u672C(&P) +&Edit=\u7F16\u8F91(&E) +Edit=\u7F16\u8F91 +&Delete=\u5220\u9664(&D) +Delete=\u5220\u9664 +NewGroup=\u65B0\u5EFA\u5206\u7EC4 +EditGroup=\u7F16\u8F91\u5206\u7EC4 +GroupName=\u5206\u7EC4\u540D\u79F0 +EnterGroupName=\u8BF7\u8F93\u5165\u5206\u7EC4\u540D\u79F0 +NewConnection=\u65B0\u5EFA\u8FDE\u63A5 +EditConnection=\u7F16\u8F91\u8FDE\u63A5 +ConnectionDeleteConfirm=\u60A8\u60F3\u8981\u5220\u9664\u8FDE\u63A5 "%s" \u5417? # ConnectionEditorForm -TestConnection = \u6D4B\u8BD5\u8FDE\u63A5 -General = \u5E38\u89C4 -MQTT5Options = MQTT5 \u9009\u9879 -TLS/SSL = TLS/SSL -LastWill = \u9057\u5631 -Other = \u5176\u5B83 -Generate = \u751F\u6210 -Name = \u540D\u79F0 -Transport = \u4F20\u8F93\u534F\u8BAE -Version = \u7248\u672C -Server = \u670D\u52A1\u5668 -Port = \u7AEF\u53E3 -ClientId = ClientId -CleanSession = \u6E05\u9664\u4F1A\u8BDD -CleanSessionToolTip = \u8BBE\u7F6E\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u662F\u5426\u5E94\u5728\u91CD\u65B0\u542F\u52A8\u548C\u91CD\u65B0\u8FDE\u63A5\u65F6\u8BB0\u4F4F\u72B6\u6001\u3002\n1\u3001\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u5219\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u5C06\u5728\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u548C\u8FDE\u63A5\u65F6\u4FDD\u6301\u72B6\u6001\u3002\u5F53\u72B6\u6001\u4FDD\u6301\u65F6\uFF1A\n - \u5373\u4F7F\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\uFF0C\u6D88\u606F\u4F20\u9012\u4E5F\u5C06\u53EF\u9760\u5730\u6EE1\u8DB3\u6307\u5B9A\u7684QOS\u3002\n - \u670D\u52A1\u5668\u4F1A\u5C06\u8BA2\u9605\u89C6\u4E3A\u6301\u4E45\u8BA2\u9605\u3002\n2\u3001\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u5219\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u5C06\u4E0D\u4F1A\u5728\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\u65F6\u4FDD\u6301\u72B6\u6001\u3002\u8FD9\u610F\u5473\u7740\n - \u5982\u679C\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\uFF0C\u5219\u65E0\u6CD5\u7EF4\u6301\u5411\u6307\u5B9AQOS\u7684\u6D88\u606F\u4F20\u9012\n - \u670D\u52A1\u5668\u5C06\u8BA2\u9605\u89C6\u4E3A\u975E\u6301\u4E45\u8BA2\u9605\u3002 -AutoReconnect = \u81EA\u52A8\u91CD\u8FDE -ConnectionTimeout = \u8FDE\u63A5\u8D85\u65F6 -ConnectionTimeoutToolTip = \u8BBE\u7F6E\u8FDE\u63A5\u8D85\u65F6\u95F4\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u5BA2\u6237\u7AEF\u4E0E MQTT \u670D\u52A1\u5668\u5EFA\u7ACB\u7F51\u7EDC\u8FDE\u63A5\u7684\u6700\u5927\u7B49\u5F85\u65F6\u95F4\u3002\n\u9ED8\u8BA4\u8D85\u65F6\u4E3A 30 \u79D2\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5C06\u7981\u7528\u8D85\u65F6\u5904\u7406\uFF0C\u8FD9\u610F\u5473\u7740\u5BA2\u6237\u7AEF\u5C06\u7B49\u5F85\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\u6216\u5931\u8D25\u3002 -KeepAliveInterval = \u4FDD\u6301\u6D3B\u52A8\u95F4\u9694 -KeepAliveIntervalToolTip = \u8BBE\u7F6E\u201C\u4FDD\u6301\u6D3B\u52A8\u95F4\u9694\u201D\u65F6\u957F\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u53D1\u9001\u6216\u63A5\u6536\u6D88\u606F\u4E4B\u95F4\u7684\u6700\u5927\u65F6\u95F4\u95F4\u9694\u3002\n\u5B83\u4F7F\u5BA2\u6237\u7AEF\u80FD\u591F\u68C0\u6D4B\u670D\u52A1\u5668\u662F\u5426\u4E0D\u518D\u53EF\u7528\uFF0C\u800C\u65E0\u9700\u7B49\u5F85TCP/IP\u8D85\u65F6\u3002\n\u5BA2\u6237\u7AEF\u5C06\u786E\u4FDD\u5728\u6BCF\u4E2A\u4FDD\u6D3B\u5468\u671F\u5185\u81F3\u5C11\u6709\u4E00\u6761\u6D88\u606F\u5728\u7F51\u7EDC\u4E0A\u4F20\u8F93\u3002\n\u5728\u8FD9\u6BB5\u65F6\u95F4\u5185\u6CA1\u6709\u76F8\u5173\u6D88\u606F\u7684\u60C5\u51B5\u4E0B\uFF0C\u5BA2\u6237\u7AEF\u4F1A\u53D1\u9001\u4E00\u6761\u201Cping\u201D\u6D88\u606F\uFF0C\u670D\u52A1\u5668\u4F1A\u5BF9\u6B64\u8FDB\u884C\u786E\u8BA4\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5C06\u7981\u7528\u5BA2\u6237\u7AEF\u4E2D\u7684\u4FDD\u6301\u6D3B\u52A8\u5904\u7406\u3002 -ReconnectInterval = \u91CD\u8FDE\u95F4\u9694 -ReconnectIntervalToolTip = \u8BBE\u7F6E\u81EA\u52A8\u91CD\u65B0\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\u95F4\u9694\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\u3002 -EnableLastWill = \u542F\u7528\u9057\u8A00\u6D88\u606F -RandomClientId = \u968F\u673A ClientId -Username = \u7528\u6237\u540D -Password = \u5BC6\u7801 -CleanStart = Clean Start -CleanStartToolTip = \u8BBE\u7F6E\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u662F\u5426\u5E94\u5728\u91CD\u65B0\u542F\u52A8\u548C\u91CD\u65B0\u8FDE\u63A5\u65F6\u8BB0\u4F4F\u72B6\u6001\u3002 -RequestResponseInfo = \u8BF7\u6C42\u54CD\u5E94\u4FE1\u606F -RequestResponseInfoToolTip = \u8BBE\u7F6E\u201C\u8BF7\u6C42\u54CD\u5E94\u4FE1\u606F\u201C\u6807\u5FD7\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A false\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u5219\u670D\u52A1\u5668\u5C06\u4E0D\u4F1A\u5728 CONNACK \u4E2D\u8FD4\u56DE\u4EFB\u4F55\u54CD\u5E94\u4FE1\u606F\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u5219\u670D\u52A1\u5668\u53EF\u4EE5\u5728 CONNACK \u4E2D\u8FD4\u56DE\u54CD\u5E94\u4FE1\u606F\u3002 -RequestProblemInfo = \u8BF7\u6C42\u95EE\u9898\u4FE1\u606F -RequestProblemInfoToolTip = \u8BBE\u7F6E\u201C\u8BF7\u6C42\u95EE\u9898\u4FE1\u606F\u201D\u6807\u5FD7\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A true\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u4F1A\u5728 CONNACK \u6216 DISCONNECT \u62A5\u6587\u4E0A\u8FD4\u56DE\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\uFF0C\u4F46\u4E0D\u4F1A\u5728 PUBLISH\u3001CONNACK \u6216 DISCONNECT \u4EE5\u5916\u7684\u4EFB\u4F55\u62A5\u6587\u4E0A\u53D1\u9001\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u4F1A\u5728\u4EFB\u4F55\u534F\u8BAE\u5141\u8BB8\u7684\u62A5\u6587\u4E0A\u8FD4\u56DE\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\u3002 -SessionExpiryInterval = \u4F1A\u8BDD\u8FC7\u671F\u95F4\u9694 -SessionExpiryIntervalToolTip = \u8BBE\u7F6E\u4F1A\u8BDD\u5230\u671F\u95F4\u9694\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u4E86\u4E00\u65E6\u5BA2\u6237\u7AEF\u65AD\u5F00\u8FDE\u63A5\uFF0C\u4EE3\u7406\u5C06\u7EF4\u62A4\u4F1A\u8BDD\u7684\u6700\u957F\u65F6\u95F4\u3002\n\u5982\u679C\u5BA2\u6237\u7AEF\u6253\u7B97\u5728\u4EE5\u540E\u67D0\u4E2A\u65F6\u95F4\u70B9\u8FDE\u63A5\u5230\u670D\u52A1\u5668\uFF0C\u5219\u53EA\u5E94\u4F7F\u7528\u8F83\u957F\u7684\u4F1A\u8BDD\u5230\u671F\u95F4\u9694\u8FDB\u884C\u8FDE\u63A5\u3002 -ReceiveMaximum = \u63A5\u6536\u6700\u5927\u503C -ReceiveMaximumToolTip = \u8BBE\u7F6E\u63A5\u6536\u6700\u5927\u503C\u3002\n\u8BE5\u503C\u8868\u793A\u5BA2\u6237\u7AEF\u613F\u610F\u540C\u65F6\u5904\u7406\u7684 QoS 1 \u548C QoS 2 \u53D1\u5E03\u7684\u9650\u5236\u3002\n\u6CA1\u6709\u9650\u5236\u670D\u52A1\u5668\u53EF\u80FD\u5C1D\u8BD5\u53D1\u9001\u7684 QoS 0 \u53D1\u5E03\u6570\u91CF\u7684\u673A\u5236\u3002\n\u53D6\u503C\u8303\u56F4\u4E3A 1 - 65535\uFF0C \u7559\u7A7A\u8868\u793A\u6700\u5927\u503C\u3002 -MaximumPacketSize = \u6570\u636E\u5305\u6700\u5927\u503C -MaximumPacketSizeToolTip = \u8BBE\u7F6E\u6700\u5927\u6570\u636E\u5305\u5927\u5C0F\u3002\n\u6B64\u503C\u8868\u793A\u5BA2\u6237\u7AEF\u613F\u610F\u63A5\u53D7\u7684\u6700\u5927\u6570\u636E\u5305\u5927\u5C0F\u3002\n\u53D6\u503C\u8303\u56F4\u4E3A 1-2684354656\uFF0C\u7559\u7A7A\u5219\u4E0D\u505A\u9650\u5236\u3002 -TopicAliasMaximum = \u4E3B\u9898\u522B\u540D\u6700\u5927\u503C -TopicAliasMaximumToolTip = \u6B64\u503C\uFF08\u5982\u679C\u5B58\u5728\uFF09\u8868\u793A\u5BA2\u6237\u7AEF\u5C06\u63A5\u53D7\u4F5C\u4E3A\u670D\u52A1\u5668\u53D1\u9001\u7684\u4E3B\u9898\u522B\u540D\u7684\u6700\u9AD8\u503C\u3002 \n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A 0\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A 0\uFF0C\u5219\u5BA2\u6237\u7AEF\u5C06\u4E0D\u63A5\u53D7\u4EFB\u4F55\u4E3B\u9898\u522B\u540D\u3002\u6B64\u5C5E\u6027\u7684\u6700\u5927\u503C\u4E3A 65535\u3002 -UserProperties = \u7528\u6237\u5C5E\u6027 -RemoveProperty = \u5220\u9664\u5C5E\u6027 -AddProperty = \u6DFB\u52A0\u5C5E\u6027 -NewProperty = \u65B0\u589E\u5C5E\u6027 -NewValue = \u65B0\u589E\u503C -Property = \u5C5E\u6027 -Value = \u503C -EnableSSL = \u542F\u7528 TLS/SSL -SslProtocol = \u534F\u8BAE -SslMode = TLS/SSL \u6A21\u5F0F -SslModeBasic = \u57FA\u7840 -SslModeServerOnly = CA \u8BC1\u4E66 -SslModeServerKeystore = CA \u4FE1\u4EFB\u5E93 -SslModeServerAndClient = CA \u8BC1\u4E66\u548C\u5BA2\u6237\u7AEF\u8BC1\u4E66/\u5BC6\u94A5 -SslModeServerAndClientKeystore = CA \u4FE1\u4EFB\u5E93\u548C\u5BA2\u6237\u7AEF\u5BC6\u94A5\u5E93 -SslModeProperties = TLS/SSL \u5C5E\u6027 -SslPropertyNotValid = "%s" \u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684 SSL \u5C5E\u6027\u540D\u3002 -ChooseFile = \u9009\u62E9\u6587\u4EF6 -CaAndKeysFileFilter = \u8BC1\u4E66\u548C\u5BC6\u94A5\u6587\u4EF6(*.jks,*.jceks,*.p12,*.pfx,*.bks,*.pem,*.key) -CaCertificateFile = CA \u8BC1\u4E66\u6587\u4EF6 -CaKeystoreFile = CA \u5BC6\u94A5\u5E93\u6587\u4EF6 -ClientCertificateFile = \u5BA2\u6237\u7AEF\u8BC1\u4E66\u6587\u4EF6 -ClientKeyPassword = \u5BA2\u6237\u7AEF\u5BC6\u94A5\u5BC6\u7801 -ClientKeystoreFile = \u5BA2\u6237\u7AEF\u5BC6\u94A5\u5B58\u5E93\u6587\u4EF6 -ClientKeystorePassword = \u5BA2\u6237\u7AEF\u5BC6\u94A5\u5E93\u5BC6\u7801 -ClientKeyFile = \u5BA2\u6237\u7AEF\u5BC6\u94A5\u6587\u4EF6 -CaKeystorePassword = CA \u5BC6\u94A5\u5E93\u5BC6\u7801 -PemKey = PEM \u683C\u5F0F -MaxMessagesStored = \u5B58\u50A8\u6D88\u606F\u6700\u5927\u6570\u91CF -DefaultPayloadFormat = \u6D88\u606F\u9ED8\u8BA4\u683C\u5F0F -ClearUnsubMessage = \u5173\u95ED\u8BA2\u9605\u65F6\u6E05\u9664\u6D88\u606F -FieldRequiredValidation = "%s" \u4E3A\u5FC5\u586B\u9879\u3002 -FieldRangeValidation = "%s" \u7684\u53D6\u503C\u8303\u56F4\u4E3A %d - %d\u3002 -FieldMaxLengthValidation = "%s" \u7684\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 %d \u4E2A\u5B57\u7B26\u3002 -InputNotValid = \u8F93\u5165\u7684\u5B57\u7B26\u4E32 "%s" \u4E0D\u662F\u6709\u6548\u7684 %s\u3002 -TestConnectionFailed = \u8FDE\u63A5\u5931\u8D25!\n\n\u4EE3\u7801:%d\n\u6D88\u606F:%s -TestConnectionSuccessful = \u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F! -TestConnectionError = \u6D4B\u8BD5\u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF:\n%s -Error = \u9519\u8BEF -Confirm = \u8BE2\u95EE -Information = \u4FE1\u606F -Warning = \u8B66\u544A -ConnectionExists = \u8FDE\u63A5\u5DF2\u88AB\u6253\u5F00\u3002 -OpenConnectionError = \u6253\u5F00\u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF. -InvalidTopicOfMultiSymbol = \u65E0\u6548\u7684\u4E3B\u9898\u683C\u5F0F, \u591A\u5C42\u901A\u914D\u7B26(#)\u53EA\u80FD\u5904\u4E8E\u4E3B\u9898\u7684\u5C3E\u90E8\u3002 -InvalidSubtopic = \u65E0\u6548\u7684\u4E3B\u9898\u683C\u5F0F, \u5B50\u4E3B\u9898: %s \u65E0\u6548\u3002 -ScriptLoaded = \u8F7D\u5165\u811A\u672C %s \u6210\u529F -ScriptRemoved = \u79FB\u9664\u811A\u672C %s \u6210\u529F\u3002 -ScriptError = \u6267\u884C\u811A\u672C %s \u65F6\u53D1\u751F\u9519\u8BEF -ChooseScriptOperation = \u8BF7\u9009\u62E9\u60A8\u8981\u5BF9\u811A\u672C\u8FDB\u884C\u4F55\u79CD\u64CD\u4F5C?\n \u5982\u679C\u4F60\u60F3\u53D6\u6D88\u8BE5\u811A\u672C\u7684\u6267\u884C\u53EF\u70B9\u51FB"\u79FB\u9664"\u6309\u94AE\u3002\n \u5982\u679C\u811A\u672C\u7684\u5185\u5BB9\u5DF2\u7ECF\u53D1\u751F\u6539\u53D8\uFF0C\u60A8\u53EF\u4EE5\u70B9\u51FB"\u91CD\u65B0\u8F7D\u5165"\u4EE5\u4FBF\u52A0\u8F7D\u65B0\u7684\u811A\u672C\u5185\u5BB9\u3002 -ScriptReloadConfirm = \u60A8\u60F3\u8981\u91CD\u65B0\u8F7D\u5165\u811A\u672C "%s" \u5417? -Chart = \u56FE\u8868 -MessageCountStatisticsChart = \u6D88\u606F\u6570\u7EDF\u8BA1\u56FE\u8868 ... -MessageCountStatisticsChartTitle = \u6D88\u606F\u6570\u7EDF\u8BA1\u56FE\u8868 [%s] -MessageLoadStatisticsChart = \u6D88\u606F\u8D1F\u8F7D\u7EDF\u8BA1\u56FE\u8868 ... -MessageLoadStatisticsChartTitle = \u6D88\u606F\u8D1F\u8F7D\u7EDF\u8BA1\u56FE\u8868 [%s] -MessageContentStatisticsChart = \u6D88\u606F\u5185\u5BB9\u7EDF\u8BA1\u56FE\u8868 ... -MessageContentStatisticsChartTitle = \u6D88\u606F\u5185\u5BB9\u7EDF\u8BA1\u56FE\u8868 [%s] -AddSeries = \u6DFB\u52A0\u7CFB\u5217 -RemoveSeries = \u5220\u9664\u7CFB\u5217 -ResetChart = \u91CD\u7F6E\u56FE\u8868 -Pause = \u6682\u505C -Resume = \u6062\u590D -SaveCollectionToFavorites = \u4FDD\u5B58\u5F53\u524D\u7CFB\u5217\u96C6\u5230\u6536\u85CF -EnterCollectionName = \u8F93\u5165\u7CFB\u5217\u96C6\u540D\u79F0 -OverwriteCollection = \u540C\u540D\u7684\u7CFB\u5217\u96C6"%s"\u5DF2\u7ECF\u5B58\u5728, \u4F60\u60F3\u8981\u8986\u76D6\u5417? -PieChart = \u997C\u56FE -BarChart = \u67F1\u72B6\u56FE -SaveAs = \u4FDD\u5B58\u4E3A ... -Print = \u6253\u5370 ... -ExportAs = \u5BFC\u51FA ... -ResetZoom = \u91CD\u7F6E\u7F29\u653E -RemoveFavoriteCollection = \u4F60\u786E\u5B9A\u8981\u5220\u9664\u5DF2\u6536\u85CF\u7684\u7CFB\u5217\u96C6 "%s"? -SeriesEditor = \u7CFB\u5217\u7F16\u8F91\u5668 -DynamicSeries = \u52A8\u6001\u7CFB\u5217 -SeriesName = \u7CFB\u5217\u540D -Dynamic = \u52A8\u6001 -Match = \u5339\u914D -MatchMode = \u5339\u914D\u6A21\u5F0F -MatchExpression = \u5339\u914D\u8868\u8FBE\u5F0F -MatchExpressionTip = \u5F53\u52A8\u6001\u7CFB\u5217\u590D\u9009\u6846\u88AB\u52FE\u9009\uFF0C\u5E76\u4E14\u5339\u914D\u65B9\u5F0F\u4E3A\u6B63\u5219\u8868\u8FBE\u5F0F\u65F6\uFF0C\u8BF7\u52A1\u5FC5\u4F7F\u7528\u5206\u7EC4\u6784\u9020\u63CF\u8FF0\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u5B50\u8868\u8FBE\u5F0F\u5E76\u6355\u83B7\u8F93\u5165\u5B57\u7B26\u4E32\u7684\u5B50\u5B57\u7B26\u4E32\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5339\u914D\u7B2C\u4E00\u4E2A\u5B50\u8868\u8FBE\u5F0F\u7684\u5B50\u5B57\u7B26\u4E32\u4F1A\u88AB\u63D0\u53D6\u3002\n\u5982\u679C\u6CA1\u6709\u4F7F\u7528\u5206\u7EC4\u6784\u9020\uFF0C\u5219\u4F1A\u63D0\u53D6\u5B8C\u6574\u7684\u5339\u914D\u5B57\u7B26\u4E32\u3002\n\n\u4F8B\u5982: \\$SYS/broker/connection/(.+)/state\n\u53EF\u4EE5\u5339\u914D\u4E3B\u9898 \\$SYS/broker/connection/ACBD/state\n\u5E76\u63D0\u53D6\u5B50\u5B57\u7B26\u4E32 ACBD -Wildcards = \u901A\u914D\u7B26 -JsonPath = JsonPath -Equals = \u7B49\u4E8E -NotEquals = \u4E0D\u7B49\u4E8E -Contains = \u5305\u542B -NotContains = \u4E0D\u5305\u542B -StatisticalMethod = \u7EDF\u8BA1\u65B9\u6CD5 -MessageCount = \u6D88\u606F\u6570\u91CF -AverageMessageSize = \u6D88\u606F\u5927\u5C0F\u5E73\u5747\u503C -SumOfMessageSize = \u6D88\u606F\u5927\u5C0F\u5408\u8BA1\u503C -MaximumMessageSize = \u6D88\u606F\u5927\u5C0F\u6700\u5927\u503C -MinimumMessageSize = \u6D88\u606F\u5927\u5C0F\u6700\u5C0F\u503C -MessageSize = \u6D88\u606F\u5927\u5C0F -MessageSizeAxis = \u6D88\u606F\u5927\u5C0F (\u5B57\u8282) -StatisticalWindow = \u7EDF\u8BA1\u7A97\u53E3 -ExtractingMode = \u53D6\u503C\u6A21\u5F0F -PayloadContent = \u6D88\u606F\u5185\u5BB9 -ExtractingExpression = \u53D6\u503C\u8868\u8FBE\u5F0F -ExtractingExpressionTip = \u5F53\u53D6\u503C\u6A21\u5F0F\u6B63\u5219\u8868\u8FBE\u5F0F\u65F6\uFF0C\u8BF7\u52A1\u5FC5\u4F7F\u7528\u5206\u7EC4\u6784\u9020\u63CF\u8FF0\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u5B50\u8868\u8FBE\u5F0F\u4EE5\u63D0\u53D6\u8F93\u5165\u5B57\u7B26\u4E32\u7684\u5B50\u5B57\u7B26\u4E32\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5339\u914D\u7B2C\u4E00\u4E2A\u5B50\u8868\u8FBE\u5F0F\u7684\u5B50\u5B57\u7B26\u4E32\u4F1A\u88AB\u63D0\u53D6\u3002\n\u5982\u679C\u6CA1\u6709\u4F7F\u7528\u5206\u7EC4\u6784\u9020\uFF0C\u5219\u4F1A\u63D0\u53D6\u5B8C\u6574\u7684\u5339\u914D\u5B57\u7B26\u4E32\u3002\n\n\u6CE8\u610F: \u63D0\u53D6\u7684\u5185\u5BB9\u5FC5\u987B\u662F\u6570\u5B57\uFF0C\u975E\u6570\u5B57\u7684\u5185\u5BB9\u5C06\u4F1A\u88AB\u5FFD\u7565\u3002 -RefreshFrequency = \u5237\u65B0\u9891\u7387 -XAxisDataQuantity = X\u8F74\u6570\u636E\u6570\u91CF\u9650\u5236 -Unlimited = \u65E0\u9650\u5236 -Seconds = \u79D2 -Minutes = \u5206\u949F -Hours = \u5C0F\u65F6 -DataPoints = \u6570\u636E\u70B9 -CloseTabConfirm = \u5B58\u5728\u4E0E\u5F53\u524D\u6807\u7B7E\u9875\u76F8\u5173\u7684\u56FE\u8868\u7A97\u53E3\u5C1A\u672A\u5173\u95ED\uFF0C \u5173\u95ED\u6807\u7B7E\u9875\u65F6\u4E5F\u5C06\u5173\u95ED\u8FD9\u4E9B\u56FE\u8868\u7A97\u53E3\uFF0C\u4F60\u662F\u5426\u786E\u5B9A\u8981\u5173\u95ED\uFF1F -Codecs = \u7F16\u89E3\u7801\u5668 -NewCodec = \u6DFB\u52A0\u7F16\u89E3\u7801\u5668 -EditCodec = \u4FEE\u6539\u7F16\u89E3\u7801\u5668 -Type = \u7C7B\u578B -SchemaFile = \u6A21\u5F0F\u6587\u4EF6 -MessageMapping = \u6D88\u606F\u6620\u5C04 -MessageMappingToolTip = \u586B\u5199\u6D88\u606F\u6620\u5C04\u8868\u53EF\u4EE5\u5E2E\u52A9 MqttInsight \u66F4\u4E3A\u51C6\u786E\u5730\u8BC6\u522B\u5E76\u89E3\u7801\u6D88\u606F\u3002\n\u5426\u5219 MqttInsight \u53EA\u80FD\u57FA\u4E8E\u6A21\u5F0F\u6587\u4EF6\u8FDB\u884C\u5C1D\u8BD5, \u89E3\u7801\u7684\u7ED3\u679C\u4E5F\u53EF\u80FD\u5E76\u4E0D\u5B8C\u5168\u51C6\u786E\u3002 -AddMapping = \u6DFB\u52A0\u6620\u5C04 -RemoveMapping = \u5220\u9664\u6620\u5C04 -IncompleteMessageMapping = \u6D88\u606F\u6620\u5C04\u8868\u683C\u4E2D\u7B2C %d \u884C\u672A\u5B8C\u6574\u586B\u5199\u3002 -MappingFieldTopic = \u4E3B\u9898(\u652F\u6301\u901A\u914D\u7B26) -ProtobufMessageName = Protobuf \u6D88\u606F\u540D\u79F0 -KryoRecordClass = Kryo \u5BF9\u8C61\u7C7B\u540D -AvroNamespace = Avro \u5BF9\u8C61\u547D\u540D\u7A7A\u95F4 -AvroName = Avro \u5BF9\u8C61\u540D\u79F0 -NoCodec = \u627E\u4E0D\u5230\u9009\u62E9\u7684\u7F16\u89E3\u7801\u5668\u7C7B\u578B: %s -CodecExists = \u7F16\u89E3\u7801\u5668 "%s" \u5DF2\u5B58\u5728\uFF0C\u8BF7\u4F7F\u7528\u5176\u5B83\u7684\u540D\u79F0\uFF0C\u6216\u8005\u5148\u5C06\u5176\u5220\u9664! +TestConnection=\u6D4B\u8BD5\u8FDE\u63A5 +General=\u5E38\u89C4 +MQTT5Options=MQTT5 \u9009\u9879 +TLS/SSL=TLS/SSL +LastWill=\u9057\u5631 +Other=\u5176\u5B83 +Generate=\u751F\u6210 +Name=\u540D\u79F0 +Transport=\u4F20\u8F93\u534F\u8BAE +Version=\u7248\u672C +Server=\u670D\u52A1\u5668 +Port=\u7AEF\u53E3 +ClientId=ClientId +CleanSession=\u6E05\u9664\u4F1A\u8BDD +CleanSessionToolTip=\u8BBE\u7F6E\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u662F\u5426\u5E94\u5728\u91CD\u65B0\u542F\u52A8\u548C\u91CD\u65B0\u8FDE\u63A5\u65F6\u8BB0\u4F4F\u72B6\u6001\u3002\n1\u3001\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u5219\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u5C06\u5728\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u548C\u8FDE\u63A5\u65F6\u4FDD\u6301\u72B6\u6001\u3002\u5F53\u72B6\u6001\u4FDD\u6301\u65F6\uFF1A\n - \u5373\u4F7F\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\uFF0C\u6D88\u606F\u4F20\u9012\u4E5F\u5C06\u53EF\u9760\u5730\u6EE1\u8DB3\u6307\u5B9A\u7684QOS\u3002\n - \u670D\u52A1\u5668\u4F1A\u5C06\u8BA2\u9605\u89C6\u4E3A\u6301\u4E45\u8BA2\u9605\u3002\n2\u3001\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u5219\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u5C06\u4E0D\u4F1A\u5728\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\u65F6\u4FDD\u6301\u72B6\u6001\u3002\u8FD9\u610F\u5473\u7740\n - \u5982\u679C\u91CD\u65B0\u542F\u52A8\u5BA2\u6237\u7AEF\u3001\u670D\u52A1\u5668\u6216\u8FDE\u63A5\uFF0C\u5219\u65E0\u6CD5\u7EF4\u6301\u5411\u6307\u5B9AQOS\u7684\u6D88\u606F\u4F20\u9012\n - \u670D\u52A1\u5668\u5C06\u8BA2\u9605\u89C6\u4E3A\u975E\u6301\u4E45\u8BA2\u9605\u3002 +AutoReconnect=\u81EA\u52A8\u91CD\u8FDE +ConnectionTimeout=\u8FDE\u63A5\u8D85\u65F6 +ConnectionTimeoutToolTip=\u8BBE\u7F6E\u8FDE\u63A5\u8D85\u65F6\u95F4\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u5BA2\u6237\u7AEF\u4E0E MQTT \u670D\u52A1\u5668\u5EFA\u7ACB\u7F51\u7EDC\u8FDE\u63A5\u7684\u6700\u5927\u7B49\u5F85\u65F6\u95F4\u3002\n\u9ED8\u8BA4\u8D85\u65F6\u4E3A 30 \u79D2\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5C06\u7981\u7528\u8D85\u65F6\u5904\u7406\uFF0C\u8FD9\u610F\u5473\u7740\u5BA2\u6237\u7AEF\u5C06\u7B49\u5F85\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\u6216\u5931\u8D25\u3002 +KeepAliveInterval=\u4FDD\u6301\u6D3B\u52A8\u95F4\u9694 +KeepAliveIntervalToolTip=\u8BBE\u7F6E\u201C\u4FDD\u6301\u6D3B\u52A8\u95F4\u9694\u201D\u65F6\u957F\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u53D1\u9001\u6216\u63A5\u6536\u6D88\u606F\u4E4B\u95F4\u7684\u6700\u5927\u65F6\u95F4\u95F4\u9694\u3002\n\u5B83\u4F7F\u5BA2\u6237\u7AEF\u80FD\u591F\u68C0\u6D4B\u670D\u52A1\u5668\u662F\u5426\u4E0D\u518D\u53EF\u7528\uFF0C\u800C\u65E0\u9700\u7B49\u5F85TCP/IP\u8D85\u65F6\u3002\n\u5BA2\u6237\u7AEF\u5C06\u786E\u4FDD\u5728\u6BCF\u4E2A\u4FDD\u6D3B\u5468\u671F\u5185\u81F3\u5C11\u6709\u4E00\u6761\u6D88\u606F\u5728\u7F51\u7EDC\u4E0A\u4F20\u8F93\u3002\n\u5728\u8FD9\u6BB5\u65F6\u95F4\u5185\u6CA1\u6709\u76F8\u5173\u6D88\u606F\u7684\u60C5\u51B5\u4E0B\uFF0C\u5BA2\u6237\u7AEF\u4F1A\u53D1\u9001\u4E00\u6761\u201Cping\u201D\u6D88\u606F\uFF0C\u670D\u52A1\u5668\u4F1A\u5BF9\u6B64\u8FDB\u884C\u786E\u8BA4\u3002\n\u8BBE\u7F6E\u4E3A 0 \u5C06\u7981\u7528\u5BA2\u6237\u7AEF\u4E2D\u7684\u4FDD\u6301\u6D3B\u52A8\u5904\u7406\u3002 +ReconnectInterval=\u91CD\u8FDE\u95F4\u9694 +ReconnectIntervalToolTip=\u8BBE\u7F6E\u81EA\u52A8\u91CD\u65B0\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\u95F4\u9694\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\u3002 +EnableLastWill=\u542F\u7528\u9057\u8A00\u6D88\u606F +RandomClientId=\u968F\u673A ClientId +Username=\u7528\u6237\u540D +Password=\u5BC6\u7801 +CleanStart=Clean Start +CleanStartToolTip=\u8BBE\u7F6E\u5BA2\u6237\u7AEF\u548C\u670D\u52A1\u5668\u662F\u5426\u5E94\u5728\u91CD\u65B0\u542F\u52A8\u548C\u91CD\u65B0\u8FDE\u63A5\u65F6\u8BB0\u4F4F\u72B6\u6001\u3002 +RequestResponseInfo=\u8BF7\u6C42\u54CD\u5E94\u4FE1\u606F +RequestResponseInfoToolTip=\u8BBE\u7F6E\u201C\u8BF7\u6C42\u54CD\u5E94\u4FE1\u606F\u201C\u6807\u5FD7\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A false\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u5219\u670D\u52A1\u5668\u5C06\u4E0D\u4F1A\u5728 CONNACK \u4E2D\u8FD4\u56DE\u4EFB\u4F55\u54CD\u5E94\u4FE1\u606F\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u5219\u670D\u52A1\u5668\u53EF\u4EE5\u5728 CONNACK \u4E2D\u8FD4\u56DE\u54CD\u5E94\u4FE1\u606F\u3002 +RequestProblemInfo=\u8BF7\u6C42\u95EE\u9898\u4FE1\u606F +RequestProblemInfoToolTip=\u8BBE\u7F6E\u201C\u8BF7\u6C42\u95EE\u9898\u4FE1\u606F\u201D\u6807\u5FD7\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A true\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A false\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u4F1A\u5728 CONNACK \u6216 DISCONNECT \u62A5\u6587\u4E0A\u8FD4\u56DE\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\uFF0C\u4F46\u4E0D\u4F1A\u5728 PUBLISH\u3001CONNACK \u6216 DISCONNECT \u4EE5\u5916\u7684\u4EFB\u4F55\u62A5\u6587\u4E0A\u53D1\u9001\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A true\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u4F1A\u5728\u4EFB\u4F55\u534F\u8BAE\u5141\u8BB8\u7684\u62A5\u6587\u4E0A\u8FD4\u56DE\u539F\u56E0\u5B57\u7B26\u4E32\u6216\u7528\u6237\u5C5E\u6027\u3002 +SessionExpiryInterval=\u4F1A\u8BDD\u8FC7\u671F\u95F4\u9694 +SessionExpiryIntervalToolTip=\u8BBE\u7F6E\u4F1A\u8BDD\u5230\u671F\u95F4\u9694\u3002\n\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C\u5B9A\u4E49\u4E86\u4E00\u65E6\u5BA2\u6237\u7AEF\u65AD\u5F00\u8FDE\u63A5\uFF0C\u4EE3\u7406\u5C06\u7EF4\u62A4\u4F1A\u8BDD\u7684\u6700\u957F\u65F6\u95F4\u3002\n\u5982\u679C\u5BA2\u6237\u7AEF\u6253\u7B97\u5728\u4EE5\u540E\u67D0\u4E2A\u65F6\u95F4\u70B9\u8FDE\u63A5\u5230\u670D\u52A1\u5668\uFF0C\u5219\u53EA\u5E94\u4F7F\u7528\u8F83\u957F\u7684\u4F1A\u8BDD\u5230\u671F\u95F4\u9694\u8FDB\u884C\u8FDE\u63A5\u3002 +ReceiveMaximum=\u63A5\u6536\u6700\u5927\u503C +ReceiveMaximumToolTip=\u8BBE\u7F6E\u63A5\u6536\u6700\u5927\u503C\u3002\n\u8BE5\u503C\u8868\u793A\u5BA2\u6237\u7AEF\u613F\u610F\u540C\u65F6\u5904\u7406\u7684 QoS 1 \u548C QoS 2 \u53D1\u5E03\u7684\u9650\u5236\u3002\n\u6CA1\u6709\u9650\u5236\u670D\u52A1\u5668\u53EF\u80FD\u5C1D\u8BD5\u53D1\u9001\u7684 QoS 0 \u53D1\u5E03\u6570\u91CF\u7684\u673A\u5236\u3002\n\u53D6\u503C\u8303\u56F4\u4E3A 1 - 65535\uFF0C \u7559\u7A7A\u8868\u793A\u6700\u5927\u503C\u3002 +MaximumPacketSize=\u6570\u636E\u5305\u6700\u5927\u503C +MaximumPacketSizeToolTip=\u8BBE\u7F6E\u6700\u5927\u6570\u636E\u5305\u5927\u5C0F\u3002\n\u6B64\u503C\u8868\u793A\u5BA2\u6237\u7AEF\u613F\u610F\u63A5\u53D7\u7684\u6700\u5927\u6570\u636E\u5305\u5927\u5C0F\u3002\n\u53D6\u503C\u8303\u56F4\u4E3A 1-2684354656\uFF0C\u7559\u7A7A\u5219\u4E0D\u505A\u9650\u5236\u3002 +TopicAliasMaximum=\u4E3B\u9898\u522B\u540D\u6700\u5927\u503C +TopicAliasMaximumToolTip=\u6B64\u503C\uFF08\u5982\u679C\u5B58\u5728\uFF09\u8868\u793A\u5BA2\u6237\u7AEF\u5C06\u63A5\u53D7\u4F5C\u4E3A\u670D\u52A1\u5668\u53D1\u9001\u7684\u4E3B\u9898\u522B\u540D\u7684\u6700\u9AD8\u503C\u3002 \n\u5982\u679C\u8BBE\u7F6E\u4E3A\u7A7A\uFF0C\u5219\u9ED8\u8BA4\u4E3A 0\u3002\n\u5982\u679C\u8BBE\u7F6E\u4E3A 0\uFF0C\u5219\u5BA2\u6237\u7AEF\u5C06\u4E0D\u63A5\u53D7\u4EFB\u4F55\u4E3B\u9898\u522B\u540D\u3002\u6B64\u5C5E\u6027\u7684\u6700\u5927\u503C\u4E3A 65535\u3002 +UserProperties=\u7528\u6237\u5C5E\u6027 +RemoveProperty=\u5220\u9664\u5C5E\u6027 +AddProperty=\u6DFB\u52A0\u5C5E\u6027 +NewProperty=\u65B0\u589E\u5C5E\u6027 +NewValue=\u65B0\u589E\u503C +Property=\u5C5E\u6027 +Value=\u503C +EnableSSL=\u542F\u7528 TLS/SSL +SslProtocol=\u534F\u8BAE +SslMode=TLS/SSL \u6A21\u5F0F +SslModeBasic=\u57FA\u7840 +SslModeServerOnly=CA \u8BC1\u4E66 +SslModeServerKeystore=CA \u4FE1\u4EFB\u5E93 +SslModeServerAndClient=CA \u8BC1\u4E66\u548C\u5BA2\u6237\u7AEF\u8BC1\u4E66/\u5BC6\u94A5 +SslModeServerAndClientKeystore=CA \u4FE1\u4EFB\u5E93\u548C\u5BA2\u6237\u7AEF\u5BC6\u94A5\u5E93 +SslModeProperties=TLS/SSL \u5C5E\u6027 +SslPropertyNotValid="%s" \u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684 SSL \u5C5E\u6027\u540D\u3002 +ChooseFile=\u9009\u62E9\u6587\u4EF6 +CaAndKeysFileFilter=\u8BC1\u4E66\u548C\u5BC6\u94A5\u6587\u4EF6(*.jks,*.jceks,*.p12,*.pfx,*.bks,*.pem,*.key) +CaCertificateFile=CA \u8BC1\u4E66\u6587\u4EF6 +CaKeystoreFile=CA \u5BC6\u94A5\u5E93\u6587\u4EF6 +ClientCertificateFile=\u5BA2\u6237\u7AEF\u8BC1\u4E66\u6587\u4EF6 +ClientKeyPassword=\u5BA2\u6237\u7AEF\u5BC6\u94A5\u5BC6\u7801 +ClientKeystoreFile=\u5BA2\u6237\u7AEF\u5BC6\u94A5\u5B58\u5E93\u6587\u4EF6 +ClientKeystorePassword=\u5BA2\u6237\u7AEF\u5BC6\u94A5\u5E93\u5BC6\u7801 +ClientKeyFile=\u5BA2\u6237\u7AEF\u5BC6\u94A5\u6587\u4EF6 +CaKeystorePassword=CA \u5BC6\u94A5\u5E93\u5BC6\u7801 +PemKey=PEM \u683C\u5F0F +MaxMessagesStored=\u5B58\u50A8\u6D88\u606F\u6700\u5927\u6570\u91CF +DefaultPayloadFormat=\u6D88\u606F\u9ED8\u8BA4\u683C\u5F0F +ClearUnsubMessage=\u5173\u95ED\u8BA2\u9605\u65F6\u6E05\u9664\u6D88\u606F +FieldRequiredValidation="%s" \u4E3A\u5FC5\u586B\u9879\u3002 +FieldRangeValidation="%s" \u7684\u53D6\u503C\u8303\u56F4\u4E3A %d - %d\u3002 +FieldMaxLengthValidation="%s" \u7684\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 %d \u4E2A\u5B57\u7B26\u3002 +InputNotValid=\u8F93\u5165\u7684\u5B57\u7B26\u4E32 "%s" \u4E0D\u662F\u6709\u6548\u7684 %s\u3002 +TestConnectionFailed=\u8FDE\u63A5\u5931\u8D25!\n\n\u4EE3\u7801:%d\n\u6D88\u606F:%s +TestConnectionSuccessful=\u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F! +TestConnectionError=\u6D4B\u8BD5\u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF:\n%s +Error=\u9519\u8BEF +Confirm=\u8BE2\u95EE +Information=\u4FE1\u606F +Warning=\u8B66\u544A +ConnectionExists=\u8FDE\u63A5\u5DF2\u88AB\u6253\u5F00\u3002 +OpenConnectionError=\u6253\u5F00\u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF. +InvalidTopicOfMultiSymbol=\u65E0\u6548\u7684\u4E3B\u9898\u683C\u5F0F, \u591A\u5C42\u901A\u914D\u7B26(#)\u53EA\u80FD\u5904\u4E8E\u4E3B\u9898\u7684\u5C3E\u90E8\u3002 +InvalidSubtopic=\u65E0\u6548\u7684\u4E3B\u9898\u683C\u5F0F, \u5B50\u4E3B\u9898: %s \u65E0\u6548\u3002 +ScriptLoaded=\u8F7D\u5165\u811A\u672C %s \u6210\u529F +ScriptRemoved=\u79FB\u9664\u811A\u672C %s \u6210\u529F\u3002 +ScriptError=\u6267\u884C\u811A\u672C %s \u65F6\u53D1\u751F\u9519\u8BEF +ChooseScriptOperation=\u8BF7\u9009\u62E9\u60A8\u8981\u5BF9\u811A\u672C\u8FDB\u884C\u4F55\u79CD\u64CD\u4F5C?\n \u5982\u679C\u4F60\u60F3\u53D6\u6D88\u8BE5\u811A\u672C\u7684\u6267\u884C\u53EF\u70B9\u51FB"\u79FB\u9664"\u6309\u94AE\u3002\n \u5982\u679C\u811A\u672C\u7684\u5185\u5BB9\u5DF2\u7ECF\u53D1\u751F\u6539\u53D8\uFF0C\u60A8\u53EF\u4EE5\u70B9\u51FB"\u91CD\u65B0\u8F7D\u5165"\u4EE5\u4FBF\u52A0\u8F7D\u65B0\u7684\u811A\u672C\u5185\u5BB9\u3002 +ScriptReloadConfirm=\u60A8\u60F3\u8981\u91CD\u65B0\u8F7D\u5165\u811A\u672C "%s" \u5417? +Chart=\u56FE\u8868 +MessageCountStatisticsChart=\u6D88\u606F\u6570\u7EDF\u8BA1\u56FE\u8868 ... +MessageCountStatisticsChartTitle=\u6D88\u606F\u6570\u7EDF\u8BA1\u56FE\u8868 [%s] +MessageLoadStatisticsChart=\u6D88\u606F\u8D1F\u8F7D\u7EDF\u8BA1\u56FE\u8868 ... +MessageLoadStatisticsChartTitle=\u6D88\u606F\u8D1F\u8F7D\u7EDF\u8BA1\u56FE\u8868 [%s] +MessageContentStatisticsChart=\u6D88\u606F\u5185\u5BB9\u7EDF\u8BA1\u56FE\u8868 ... +MessageContentStatisticsChartTitle=\u6D88\u606F\u5185\u5BB9\u7EDF\u8BA1\u56FE\u8868 [%s] +AddSeries=\u6DFB\u52A0\u7CFB\u5217 +RemoveSeries=\u5220\u9664\u7CFB\u5217 +ResetChart=\u91CD\u7F6E\u56FE\u8868 +Pause=\u6682\u505C +Resume=\u6062\u590D +SaveCollectionToFavorites=\u4FDD\u5B58\u5F53\u524D\u7CFB\u5217\u96C6\u5230\u6536\u85CF +EnterCollectionName=\u8F93\u5165\u7CFB\u5217\u96C6\u540D\u79F0 +OverwriteCollection=\u540C\u540D\u7684\u7CFB\u5217\u96C6"%s"\u5DF2\u7ECF\u5B58\u5728, \u4F60\u60F3\u8981\u8986\u76D6\u5417? +PieChart=\u997C\u56FE +BarChart=\u67F1\u72B6\u56FE +SaveAs=\u4FDD\u5B58\u4E3A ... +Print=\u6253\u5370 ... +ExportAs=\u5BFC\u51FA ... +ResetZoom=\u91CD\u7F6E\u7F29\u653E +RemoveFavoriteCollection=\u4F60\u786E\u5B9A\u8981\u5220\u9664\u5DF2\u6536\u85CF\u7684\u7CFB\u5217\u96C6 "%s"? +SeriesEditor=\u7CFB\u5217\u7F16\u8F91\u5668 +DynamicSeries=\u52A8\u6001\u7CFB\u5217 +SeriesName=\u7CFB\u5217\u540D +Dynamic=\u52A8\u6001 +Match=\u5339\u914D +MatchMode=\u5339\u914D\u6A21\u5F0F +MatchExpression=\u5339\u914D\u8868\u8FBE\u5F0F +MatchExpressionTip=\u5F53\u52A8\u6001\u7CFB\u5217\u590D\u9009\u6846\u88AB\u52FE\u9009\uFF0C\u5E76\u4E14\u5339\u914D\u65B9\u5F0F\u4E3A\u6B63\u5219\u8868\u8FBE\u5F0F\u65F6\uFF0C\u8BF7\u52A1\u5FC5\u4F7F\u7528\u5206\u7EC4\u6784\u9020\u63CF\u8FF0\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u5B50\u8868\u8FBE\u5F0F\u5E76\u6355\u83B7\u8F93\u5165\u5B57\u7B26\u4E32\u7684\u5B50\u5B57\u7B26\u4E32\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5339\u914D\u7B2C\u4E00\u4E2A\u5B50\u8868\u8FBE\u5F0F\u7684\u5B50\u5B57\u7B26\u4E32\u4F1A\u88AB\u63D0\u53D6\u3002\n\u5982\u679C\u6CA1\u6709\u4F7F\u7528\u5206\u7EC4\u6784\u9020\uFF0C\u5219\u4F1A\u63D0\u53D6\u5B8C\u6574\u7684\u5339\u914D\u5B57\u7B26\u4E32\u3002\n\n\u4F8B\u5982: \\$SYS/broker/connection/(.+)/state\n\u53EF\u4EE5\u5339\u914D\u4E3B\u9898 \\$SYS/broker/connection/ACBD/state\n\u5E76\u63D0\u53D6\u5B50\u5B57\u7B26\u4E32 ACBD +Wildcards=\u901A\u914D\u7B26 +JsonPath=JsonPath +Equals=\u7B49\u4E8E +NotEquals=\u4E0D\u7B49\u4E8E +Contains=\u5305\u542B +NotContains=\u4E0D\u5305\u542B +StatisticalMethod=\u7EDF\u8BA1\u65B9\u6CD5 +MessageCount=\u6D88\u606F\u6570\u91CF +AverageMessageSize=\u6D88\u606F\u5927\u5C0F\u5E73\u5747\u503C +SumOfMessageSize=\u6D88\u606F\u5927\u5C0F\u5408\u8BA1\u503C +MaximumMessageSize=\u6D88\u606F\u5927\u5C0F\u6700\u5927\u503C +MinimumMessageSize=\u6D88\u606F\u5927\u5C0F\u6700\u5C0F\u503C +MessageSize=\u6D88\u606F\u5927\u5C0F +MessageSizeAxis=\u6D88\u606F\u5927\u5C0F (\u5B57\u8282) +StatisticalWindow=\u7EDF\u8BA1\u7A97\u53E3 +ExtractingMode=\u53D6\u503C\u6A21\u5F0F +PayloadContent=\u6D88\u606F\u5185\u5BB9 +ExtractingExpression=\u53D6\u503C\u8868\u8FBE\u5F0F +ExtractingExpressionTip=\u5F53\u53D6\u503C\u6A21\u5F0F\u6B63\u5219\u8868\u8FBE\u5F0F\u65F6\uFF0C\u8BF7\u52A1\u5FC5\u4F7F\u7528\u5206\u7EC4\u6784\u9020\u63CF\u8FF0\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u5B50\u8868\u8FBE\u5F0F\u4EE5\u63D0\u53D6\u8F93\u5165\u5B57\u7B26\u4E32\u7684\u5B50\u5B57\u7B26\u4E32\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5339\u914D\u7B2C\u4E00\u4E2A\u5B50\u8868\u8FBE\u5F0F\u7684\u5B50\u5B57\u7B26\u4E32\u4F1A\u88AB\u63D0\u53D6\u3002\n\u5982\u679C\u6CA1\u6709\u4F7F\u7528\u5206\u7EC4\u6784\u9020\uFF0C\u5219\u4F1A\u63D0\u53D6\u5B8C\u6574\u7684\u5339\u914D\u5B57\u7B26\u4E32\u3002\n\n\u6CE8\u610F: \u63D0\u53D6\u7684\u5185\u5BB9\u5FC5\u987B\u662F\u6570\u5B57\uFF0C\u975E\u6570\u5B57\u7684\u5185\u5BB9\u5C06\u4F1A\u88AB\u5FFD\u7565\u3002 +RefreshFrequency=\u5237\u65B0\u9891\u7387 +XAxisDataQuantity=X\u8F74\u6570\u636E\u6570\u91CF\u9650\u5236 +Unlimited=\u65E0\u9650\u5236 +Seconds=\u79D2 +Minutes=\u5206\u949F +Hours=\u5C0F\u65F6 +DataPoints=\u6570\u636E\u70B9 +CloseTabConfirm=\u5B58\u5728\u4E0E\u5F53\u524D\u6807\u7B7E\u9875\u76F8\u5173\u7684\u56FE\u8868\u7A97\u53E3\u5C1A\u672A\u5173\u95ED\uFF0C \u5173\u95ED\u6807\u7B7E\u9875\u65F6\u4E5F\u5C06\u5173\u95ED\u8FD9\u4E9B\u56FE\u8868\u7A97\u53E3\uFF0C\u4F60\u662F\u5426\u786E\u5B9A\u8981\u5173\u95ED\uFF1F +Codecs=\u7F16\u89E3\u7801\u5668 +NewCodec=\u6DFB\u52A0\u7F16\u89E3\u7801\u5668 +EditCodec=\u4FEE\u6539\u7F16\u89E3\u7801\u5668 +Type=\u7C7B\u578B +SchemaFile=\u6A21\u5F0F\u6587\u4EF6 +MessageMapping=\u6D88\u606F\u6620\u5C04 +MessageMappingToolTip=\u586B\u5199\u6D88\u606F\u6620\u5C04\u8868\u53EF\u4EE5\u5E2E\u52A9 MqttInsight \u66F4\u4E3A\u51C6\u786E\u5730\u8BC6\u522B\u5E76\u89E3\u7801\u6D88\u606F\u3002\n\u5426\u5219 MqttInsight \u53EA\u80FD\u57FA\u4E8E\u6A21\u5F0F\u6587\u4EF6\u8FDB\u884C\u5C1D\u8BD5, \u89E3\u7801\u7684\u7ED3\u679C\u4E5F\u53EF\u80FD\u5E76\u4E0D\u5B8C\u5168\u51C6\u786E\u3002 +AddMapping=\u6DFB\u52A0\u6620\u5C04 +RemoveMapping=\u5220\u9664\u6620\u5C04 +IncompleteMessageMapping=\u6D88\u606F\u6620\u5C04\u8868\u683C\u4E2D\u7B2C %d \u884C\u672A\u5B8C\u6574\u586B\u5199\u3002 +MappingFieldTopic=\u4E3B\u9898(\u652F\u6301\u901A\u914D\u7B26) +ProtobufMessageName=Protobuf \u6D88\u606F\u540D\u79F0 +KryoRecordClass=Kryo \u5BF9\u8C61\u7C7B\u540D +AvroNamespace=Avro \u5BF9\u8C61\u547D\u540D\u7A7A\u95F4 +AvroName=Avro \u5BF9\u8C61\u540D\u79F0 +NoCodec=\u627E\u4E0D\u5230\u9009\u62E9\u7684\u7F16\u89E3\u7801\u5668\u7C7B\u578B: %s +CodecExists=\u7F16\u89E3\u7801\u5668 "%s" \u5DF2\u5B58\u5728\uFF0C\u8BF7\u4F7F\u7528\u5176\u5B83\u7684\u540D\u79F0\uFF0C\u6216\u8005\u5148\u5C06\u5176\u5220\u9664! From 3ac41ffa920ed932c8aee723946bd5c99a878f18 Mon Sep 17 00:00:00 2001 From: ptma Date: Fri, 17 Jan 2025 10:29:18 +0800 Subject: [PATCH 2/7] =?UTF-8?q?pref:=20=E4=B8=BB=E9=A2=98=E6=A0=91?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{SegmentTreeNode.java => SegmentNode.java} | 42 +++++++++++------ .../ui/component/tree/TopicTree.java | 46 ++++++++++++------- .../component/tree/TopicTreeCellRenderer.java | 2 +- 3 files changed, 57 insertions(+), 33 deletions(-) rename src/main/java/com/mqttinsight/ui/component/tree/{SegmentTreeNode.java => SegmentNode.java} (80%) diff --git a/src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java similarity index 80% rename from src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java rename to src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java index 410ddc3..8f0ff57 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/SegmentTreeNode.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java @@ -7,10 +7,10 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -public class SegmentTreeNode extends DefaultMutableTreeNode { +public class SegmentNode extends DefaultMutableTreeNode { private final TopicTree tree; - private final SegmentTreeNode parent; + private final SegmentNode parent; @Getter private final String name; @Getter @@ -21,7 +21,7 @@ public class SegmentTreeNode extends DefaultMutableTreeNode { private final AtomicInteger messageCount = new AtomicInteger(0); - public SegmentTreeNode(TopicTree tree, SegmentTreeNode parent, String name) { + public SegmentNode(TopicTree tree, SegmentNode parent, String name) { this.tree = tree; this.parent = parent; this.name = name; @@ -43,7 +43,7 @@ public Set getInvisibleTopics() { return new HashSet<>(Collections.singletonList(getFullTopic())); } else { return getChildren().stream() - .map(SegmentTreeNode::getInvisibleTopics) + .map(SegmentNode::getInvisibleTopics) .reduce((setA, setB) -> { setA.addAll(setB); return setA; @@ -59,14 +59,14 @@ public void toggleSegmentVisible(boolean segmentVisible, boolean effectOnChildre this.segmentVisible = segmentVisible; tree.getTreeModel().nodeChanged(this); - + if (updateParentCompositeVisibleStatus) { updateSegmentCompositeVisibleStatus(true, true); } } public boolean isSegmentCompositeVisible() { - return segmentVisible || getChildren().stream().anyMatch(SegmentTreeNode::isSegmentCompositeVisible); + return segmentVisible || getChildren().stream().anyMatch(SegmentNode::isSegmentCompositeVisible); } public void updateSegmentCompositeVisibleStatus(boolean updateParent, boolean notify) { @@ -90,10 +90,10 @@ public void incrementMessages(List topicSegments) { String segment = topicSegments.get(0); AtomicBoolean childAppended = new AtomicBoolean(false); - SegmentTreeNode child = getChild(segment).orElseGet(() -> { - SegmentTreeNode newChild = new SegmentTreeNode(tree, this, segment); + SegmentNode child = getChild(segment).orElseGet(() -> { + SegmentNode newChild = new SegmentNode(tree, this, segment); childAppended.set(true); - tree.getTreeModel().insertNodeInto(newChild, this, this.getChildCount()); + addChildSegment(newChild); return newChild; }); if (topicSegments.size() > 1) { @@ -106,6 +106,18 @@ public void incrementMessages(List topicSegments) { } } + private void addChildSegment(SegmentNode child) { + List segments = getChildren(); + for (int i = 0; i < segments.size(); i++) { + SegmentNode existingSegment = segments.get(i); + if (child.getName().compareTo(existingSegment.getName()) <= 0) { + tree.getTreeModel().insertNodeInto(child, this, i); + return; + } + } + tree.getTreeModel().insertNodeInto(child, this, segments.size()); + } + public void decrementMessages(String topic) { if (fullTopic.equals(topic)) { if (messageCount.get() > 0) { @@ -131,7 +143,7 @@ public void removeSelf() { } } - public void removeChild(SegmentTreeNode child) { + public void removeChild(SegmentNode child) { tree.getTreeModel().removeNodeFromParent(child); if (getTopicCount() == 0) { removeSelf(); @@ -143,7 +155,7 @@ public int getSelfMessageCount() { } public int getTotalMessageCount() { - return getSelfMessageCount() + getChildren().stream().map(SegmentTreeNode::getTotalMessageCount) + return getSelfMessageCount() + getChildren().stream().map(SegmentNode::getTotalMessageCount) .reduce(0, Integer::sum); } @@ -153,23 +165,23 @@ public int getTopicCount() { count++; } count += getChildren().stream() - .map(SegmentTreeNode::getTopicCount) + .map(SegmentNode::getTopicCount) .reduce(0, Integer::sum); return count; } - public Optional getChild(String segment) { + public Optional getChild(String segment) { return getChildren().stream() .filter(c -> c.getName().equals(segment)) .findFirst(); } - public List getChildren() { + public List getChildren() { if (children == null) { return List.of(); } else { return children.stream() - .map(c -> (SegmentTreeNode) c) + .map(c -> (SegmentNode) c) .toList(); } } diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java index 27ef4c0..0081bbe 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java @@ -25,7 +25,7 @@ public class TopicTree extends JXTree { private final MqttInstance mqttInstance; - private final SegmentTreeNode rootNode; + private final SegmentNode rootNode; private final DefaultTreeModel treeModel; private FlatPopupMenu popupMenu; private JMenuItem menuClearMessages; @@ -39,7 +39,7 @@ public TopicTree(MqttInstance mqttInstance) { selectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); this.setSelectionModel(selectionModel); treeModel = new DefaultTreeModel(null, false); - rootNode = new SegmentTreeNode(this, null, "#"); + rootNode = new SegmentNode(this, null, "#"); treeModel.setRoot(rootNode); this.setModel(treeModel); this.setRootVisible(false); @@ -114,7 +114,7 @@ public void mousePressed(MouseEvent e) { } TopicTree.this.setSelectionRow(rowIndex); - SegmentTreeNode node = (SegmentTreeNode) clickedPath.getLastPathComponent(); + SegmentNode node = (SegmentNode) clickedPath.getLastPathComponent(); menuHideMessages.setSelected(!node.isSegmentCompositeVisible()); popupMenu.show(e.getComponent(), e.getX(), e.getY()); } @@ -130,8 +130,8 @@ public DefaultTreeModel getTreeModel() { public String getToolTipText(MouseEvent e) { TreePath treePath = getPathForLocation(e.getX(), e.getY()); if (treePath != null) { - if (treePath.getLastPathComponent() instanceof SegmentTreeNode) { - SegmentTreeNode node = (SegmentTreeNode) treePath.getLastPathComponent(); + if (treePath.getLastPathComponent() instanceof SegmentNode) { + SegmentNode node = (SegmentNode) treePath.getLastPathComponent(); return node.getFullTopic(); } } @@ -141,7 +141,7 @@ public String getToolTipText(MouseEvent e) { private void removeSegmentMessages() { TreePath selectedPath = getSelectionPath(); if (selectedPath != null) { - final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + final SegmentNode selectNode = (SegmentNode) selectedPath.getLastPathComponent(); if (selectNode != null) { removeSegmentMessages(selectNode); } @@ -151,7 +151,7 @@ private void removeSegmentMessages() { private void toggleSegmentVisible() { TreePath selectedPath = getSelectionPath(); if (selectedPath != null) { - final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + final SegmentNode selectNode = (SegmentNode) selectedPath.getLastPathComponent(); if (selectNode != null) { boolean segmentVisible = !selectNode.isSegmentVisible(); selectNode.toggleSegmentVisible(segmentVisible, true, true); @@ -165,14 +165,14 @@ private void toggleOtherSegmentVisible() { }); TreePath selectedPath = getSelectionPath(); if (selectedPath != null) { - final SegmentTreeNode selectNode = (SegmentTreeNode) selectedPath.getLastPathComponent(); + final SegmentNode selectNode = (SegmentNode) selectedPath.getLastPathComponent(); if (selectNode != null) { selectNode.toggleSegmentVisible(true, true, true); } } } - public void removeSegmentMessages(SegmentTreeNode node) { + public void removeSegmentMessages(SegmentNode node) { SwingUtilities.invokeLater(() -> { mqttInstance.applyEvent(l -> l.clearMessages(node.getFullTopic())); }); @@ -180,7 +180,7 @@ public void removeSegmentMessages(SegmentTreeNode node) { public void notifyTopicSegmentsVisibleChange() { Set invisibleTopics = getRootSegments().stream() - .map(SegmentTreeNode::getInvisibleTopics) + .map(SegmentNode::getInvisibleTopics) .reduce((setA, setB) -> { setA.addAll(setB); return setA; @@ -210,25 +210,25 @@ private void extractSegmentAndHandle(String topic, BiConsumer ha } } - public List getRootSegments() { + public List getRootSegments() { return Collections.list(rootNode.children()) .stream() - .map(item -> (SegmentTreeNode) item) + .map(item -> (SegmentNode) item) .toList(); } private void updateSegments(String topic) { extractSegmentAndHandle(topic, (segment, remainTopic) -> { - SegmentTreeNode rootSegment = Collections.list(rootNode.children()).stream() - .map(item -> (SegmentTreeNode) item) + SegmentNode rootSegment = Collections.list(rootNode.children()).stream() + .map(item -> (SegmentNode) item) .filter(item -> item.getName().equals(segment)) .findFirst() .orElse(null); if (rootSegment == null) { - rootSegment = new SegmentTreeNode(this, rootNode, segment); - treeModel.insertNodeInto(rootSegment, rootNode, rootNode.getChildCount()); + rootSegment = new SegmentNode(this, rootNode, segment); + addRootSegment(rootSegment); } if (remainTopic != null) { rootSegment.incrementMessages(StrUtil.split(remainTopic, '/')); @@ -240,7 +240,7 @@ private void updateSegments(String topic) { private void removeTopicSegments(String topic) { extractSegmentAndHandle(topic, (segment, remainTopic) -> { - Optional rootSegment = getRootSegments().stream() + Optional rootSegment = getRootSegments().stream() .filter(item -> item.getName().equals(segment)) .findFirst(); rootSegment.ifPresent((topicSegment) -> { @@ -249,6 +249,18 @@ private void removeTopicSegments(String topic) { }); } + private void addRootSegment(SegmentNode segmentNode) { + List segments = getRootSegments(); + for (int i = 0; i < segments.size(); i++) { + SegmentNode existingSegment = segments.get(i); + if (segmentNode.getName().compareTo(existingSegment.getName()) <= 0) { + treeModel.insertNodeInto(segmentNode, rootNode, i); + return; + } + } + treeModel.insertNodeInto(segmentNode, rootNode, segments.size()); + } + private void locateSegments(String topic) { extractSegmentAndHandle(topic, (segment, remainTopic) -> { diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java index 44826a2..f93495c 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTreeCellRenderer.java @@ -46,7 +46,7 @@ public TopicTreeCellRenderer() { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { - if (value instanceof SegmentTreeNode node) { + if (value instanceof SegmentNode node) { nameLabel.setText(node.getName()); Color fg; if (node.isSegmentVisible()) { From 7bc595988d42ea22213431fcf3c924478471f9df Mon Sep 17 00:00:00 2001 From: ptma Date: Fri, 17 Jan 2025 17:33:40 +0800 Subject: [PATCH 3/7] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=88=AA=E5=9B=BE?= =?UTF-8?q?=E5=92=8C=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ README_zh_CN.md | 2 ++ screenshots/dialogue_view.png | Bin 77119 -> 112406 bytes screenshots/table_view.png | Bin 77353 -> 78861 bytes 4 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 88dcfc5..421bb4a 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,14 @@ MqttInsight is an open source cross platform MQTT desktop client. * Supports MQTT3 and MQTT5; * Supports Websocket; * Switchable table and dialogue message views; +* Topic hierarchy visualization; * Supports Node.js JavaScript (Supported by [Javet](https://github.com/caoccao/Javet)); * Built in message codecs such as PlainText, JSON, XML, HEX, Base64, Protobuf, Message Pack, Avro, Hessian, Hessian2, and Kryo; * Supports codecs through Java SPI; * Supports codecs written in JavaScript; * Provides charts such as message quantity statistics, message load statistics, and message content statistics; +* Message search and filtering. ## Screenshots diff --git a/README_zh_CN.md b/README_zh_CN.md index dfb635b..3cc7933 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -12,11 +12,13 @@ MqttInsight 是开源跨平台的 MQTT 图形客户端. * 支持 MQTT3、MQTT5; * 支持 Websocket; * 支持表格和对话两种消息视图; +* 主题层次结构可视化; * 支持 Node.js 脚本 (由 Javet 提供支持); * 内置 PlainText、JSON、XML、HEX、Base64、Protobuf、MessagePack、Avro、Hessian、Hessian2 和 Kryo 等消息编解码; * 支持通过 SPI 扩展编解码器; * 支持 Javascript 编解码器; * 支持消息数量、消息负载、消息内容等统计图表; +* 消息搜索和过滤。 ## 界面截图 diff --git a/screenshots/dialogue_view.png b/screenshots/dialogue_view.png index f1a9edef101e38aa82389b50e5981793355b21d4..fe8f603056698b30329829e4bc11c13a5edc809e 100644 GIT binary patch literal 112406 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

<=7Ggf9;7)~esB&>j_qIzM;4K0D5zlj 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 z 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

$tG=#sSdY*v$({s1i>uj!lL)V{NR zz1qz-%j>7Acv5pWeVU<$4JlClT=cxn9)B@Uta6$xTBz!hM&dXsOwm}he4*HgU%t{N zpv6bAd-(r)Tc}z;^2(!K;P^!LKJ+J7*NaD=qR8h#zBI!z+%1mMP_?9OuAzIiTY*f- zMz?qL-+HDC5YdgjF|m0Cfo#rCCw#P*8RrPq>;7|TiV}rNJz4-tQv=B!@|pZA_sct; zp!j+l)B>RRAKhQp^w*tTs91e7ptPaj?l0q3jnRDhq0mpskh#rZgg^&4)!c9a1*2$- zF!lRF5h^>iJ3HqWDqier_5JR^)WN#An9sZ4ro~>iZG_$uzs*xC%i`IV-5lpy&WvAz zUoVy23ChKgb`)73BGU}UW)_=)va=F7AHHkpg;2&%+hO;?mOWUxn_)3y+4k_V@P>NSrPT*ZTe?BwXAKN6H>2 zU`NonxHt-9&+Xwn{l9wRej9#?k$#w>e>Beh9}IriB4{Mv5bUwPJ~#K^@BY~kJWRRk z+VJ|ijhOLDG^h4IyXgLLCSVLQ(kppkeXQu;4z`1wpMp-GHuHFI?+&Q;baxw7xdGm^ z-)7{Py~;X10^iCCuSYZ`yB}i#==;MN+;)i28z<_p+~>&i-W$#%iIOz`L-cE> zA=8QqwH(J!&+Q0=MlF>ND&S7RQ)G`|fklL?6P}matuYP*Ekyal(&jxh!ZshV2*I9# zp~|j!UXzXfGE&P`S8AiQkSYli4n_rff99)r%ZbMwVA}&G1z<|G_t42o zS8F%7M++eBd;`**e>rc=Rcq+2Mvn}G#9co5sf}nt%Z-Dmmz$r*g4L5VE!hmmNqEAT za5pw#Zcwr`*F*n#_nj?bTRE8}2N~2-Cd5&8`puB%*MNOn$+u|NqCTs7kW1STGjn0-|AGprif*`fr|XXTiErnf3;uhA&fX z0J9!ni!@w2c};f;z0Fl$M(BS1Tjov#me`d9kQ%TEuJA_cQ^Q%0XE!h(TD+DPFJ>zk z0Yfoy)Z{uKy!>;*NOd?vkURX-ZF9^Ro&Raqc9(`4%Ger^KSR)d*K2we6^T* z)w};yy6pKhIEk4^d?nQUXJ3%F48U`$=d(p)pOVgij;+E=<-(xLqEv*K z3!J~r3xm{{?`7=}gY?_rf!k(JEiqKTOKXl7KHI#2DHrhI&VzoA#!UjXNpZgBI*yC# zZ!~%KIE5?8!!0ScAx1Y7{M_yLz9W0HOxcb6dD-$qm+xOjy&|HMXHewr?8)L9I<-)0 zeSSHRQJEGSv~O~6@`!c}xrjDZEV043;+m1tUtaxE_8h+Fr&jldpvCm&t+?z6=yjux z8*oTzu|wo96(zwBBQM4|f6)Tn#?j(AkZ>p^cUi*}Z2H;wtc|90D4wMn=VbUI$jy3x z{pBL3(6RWhU%#F|e@;M5t7B+b;_(a;N_V;wQ|o!WyK(?DPNXA&nbE#bB)oL{tBcF^ z=-W@GC&#;Aik`}UCw@9sUN34=YQFV>M_z9yVK$ulQ&MSMFWO5FSE;6Q|$zbS_W#FSSM3J63BzcGj`z&Z6 z8T)ALkw0D6v}oYpelQ;KNHq5KA7Piw&CMeT%ZiJm&LU32PXvzmbfeCk)`s(d_07@D zY;iFAIhyjq*Z`E_Zh^cMn5{jxPCC5n>moxlamx52vmWIB=^}V$j7OImR9d2U;-RX>B*g&(-0AFdNnNkz!_<2HhhxnC; zoda+!kHBw%Wf;>TZ4PG*=TEeVUFIt0^D_F;n zn`qIxdh|Vd1-3fyd*_(SmLiLAcDy-|^>$ANKFi_{;|iD7BJ%jGX<|CW=EoyoU4``` z8PAK{cVUnuQnBAWHK|z|I@mXja+;LRL{bp->OL?4InD|P_BIh9pW;|?2Xd_Fro6PY zG+;~&6eg#~uKYx(S04X#fhWlJ@r6B;gf$&@WSHyW@A+j{mkm&3etG7ODL0{v^RnkyyIl(h+d`Z;zk|(vC;8YeO)AOkQ}Hfa zCAx7@3QpbvCl9?i^7oI-(^^BV;Pxfl?yuWUlu2xDp#c8CqlM_`z@o%VXPJ|lCkNvE-j52iXq3Wn7*B<<7MvLcy5m>#|LeNhN2tXunX|Y#`KsOWk z%zr;ObANg6o1mYpNj!V%=Q$%>m&~qMmqJ}?Q@ zfj@Gdlk?qIV$)YkdV*g7XY=ne8_2l01#8`yD8oz4+R`W?k*LlN0kfE!Or7Kwh7e{d%Snn@~h^+xuYLNv`AAa<|py=Z$M-7GE5Z%Q%83jDr!#% zX$cq5H~u-C@=F-Gloo*=aT7+8X-so#;d0}%Tl+I!E5-p(k7^$Jh4k;HweZ=Tc<6>h^2Yu!jS)z^CS8h3;WDn*ra?u(Sn zFCm^p-X+fH7U=ESzcd2M`O90xcn;|Ipu(SA#NSegnEL8vYPB)VR4d}-NzIGm6pQtZ z)2!QWEs4pm<3y8yif+A8E@y2LY&qPzD55$&p2E0|*gaZ8Y zaTVnJWQDVKfzgX9fp)1#dTAtMBWq7M04X(@6QU?y*JW!Eo>?2?5#y2hj>&r{`G@t}p{Badp2#7-%I0a0k+P^; zV{C^<5jw`miRLmmBpHHU1o;lG(94A{#zF(nc>2ViN)>Xl%z@0VJQyRwWCcQV^Ye|6 zFh?Wxi<$Z#hqHV4AG&SBcq;xve&*EZ1d-fxs zkN-EK{W3#wPo-2Z&m$8vaWLxpqs(@Czpl}vozG^A_%59C2V*y|dB~v5bEpV-_BfW% zwK!l{Xc$h)vtd-iHgUSBOdbQ2Vwm&DFgtO@*BMYq;AI_&z3y>6Dv zjxg;zMA%#ndA)mQ$ef{}k0(n6Q|`3zu?rkQzcvE`x;`z}f~GR-4atN+%*l5t76_dj&6e8ew>2a+z3CKnXn+WZh|x{d7DX6^nVsa@I1*OSiK z``Xs@+0W&De9c7sp&0s;w2mXxJ!pY#efyIPIsIN|89O;DU!ft;cn1AMjp6+&dkyHwTwUpjL4(rv zRAPlkVdN$c3*DqMgFYAMjDvz+{X@^Xo2aVtY)vMsws@jk0ls{2n^q!F1EPv+@#`6? zrx&(o-&v?g%k0x$ex$oG@N$R&a8@b0j&iUFHgdKgszU8ohy-zNm#VM zIfPP7~g!upDq{xdRyoeyqzHy=Rith?(Nge4N=TLMN0P?`kf%K9^M8yG!dOv4emaUEMLzDR7m(Yetc#e}piVx>qRV(JVXY^Bni|8ljrs z!(isdvc@f~64XlL0;pL9X?fu`Adx7+m(flN@ug8#MlZHAv{Df8e;duCV8i<6u%JOw z$9u$aa-*jz4G>@1X|^M@qoBiD58Zr=DWsVn)Z?4XwU2 zmq4*cZZbWxcfM{;ZX4{2XC$_}T|ESKe8)fP=Id?+kDn_kxYjZxVQPw6c`TmHRDCiF zDcJIe1Vk@AP6*j>wdvs9PZ{5-Ii|hN-X}3tKYlIX<7tUCCL9TZCE*<a_Av2xX3`+>VK9fh2J&<~6uzGAC6H zD4>kv(W9nvQ_^7Gl47bA+8P+GD^O5YPwB{hgX$7=S_2u6goZ`>^*DO%ia)n9?0knP`1*4q^ys4lXExe&C)K~ z(bui?ThX^k(pem{K|r;Ct)7beuu%99$N50KLFRf=cw;PK@`rF_g6a=ilE$KFm1-Ne zrQ$diLv<&=C6Mfg1e{FedC&%t^Y!g#C0W-8)CQt~H&j4LIz+@l*5SSM(@qp(@A{5u zhQxXBJ;(W=lI^a&*o#qikR@BwF;8E0y%#&Xh4`p~oJC60#oqI_f(P4u8l-h#bce9*V08q^* zB;@*s5%~QpS+9VQHNhmLiK%JxBB(vI0tQJx=fT|p3uZRW!#tcA*{kTO8Zek?d zY-*@e&SPoz}`axzwvLO6?1k<|GxkvFbaTqA)f_VMzv0WOv6D}VS&El zZ!h*6fA79OX8!#1HgNQG;HckfnS%R`y|G`W#it^vcP|2->jBq?5o-3i5h|P^l>Tfh zuT}15txp5bVxiE*m#q&>RyyGP)+(n< zxZ3iyliPCewaN5p=dHt!Y|y{pgoJ=|`|*MP9Xdt#db9oYp!+wNhvcb?j8FLJ{_+Ae zT5~b#vf?JhNu@pR-v_FZhsHH0dTRDHM;Fe}-=_z3S2^PLHyQ&;c(}O88A0F4@9@>h zEJgs)69dlb1}V@w=c~-c@cMc`0?zw%73OQe@Gz9uF|gI_OuZ*wOW^5jzl-86Ny_J}DTvGyM$7P`T{(P` zx}E5$z;y<}eT5`f3LYcRg=lTqVQ5^0_3^Mi&^30^FqP`>?{A(2XW`k2O^ULvAC6$e_$n%m)mc6bDn(50%x8X5uT~Fj>EB+_MY2 z<$z!wGpTn_d>EuZ4Y$DK6IbkndUBmz!R{k^SkCVDY{>p*6~?IAUC2_ayQha$zpJaO zIw&l^0ugb?>1byGP-bFsh3uv(ONxtKR{GP6+lUU35rRz0lhz~o(d$}7+mZ^zF|>lB zE)hBM{J`0>!skFz-s14x>fjc|b|K|_8;u_;{b|667|?yqx30M^pE!pFyProOocb&t z4#NgTnaaas`l6j=cfl+9_br+nK)FAO%=!kaRQ#gs%Hj>{-Zkg5Ls3>gTOILvaF&P!%kQmW7 zDdg4a%#lTShEXw4*tM7s$1@1F>+Np7t_Is67BRKVb~br%)G3>0GYZ$yu^q>Ct7(p> zCW~nM1k`CE#*bvQEKQR1IvztrNJaQ$;CvMNMrzOYj$sg|+;0!iPeQ};(8C{4>%w-E z<*@AsAeg2OT)InJOAFAzXuLH5{<-b$gT7AO^2revpr7@nsuR%>eIm4q%-U|nEaQ;0 zF7OTm2_yRH>8r3{+5zbMw!lz{rV4-lWPjPalhRL|ipalQ+ig>#LotA(B$&Tjr=jHC zSKf;nXA9Q&T@NLl1py3@lCEq9I=Ma6zV>wg>=ai!Fn|DEytqPPP=i|U>LUr&!4n-4 zQIL+25#46*-6MJC6{O=lfZ^jk>6uvzi;IC*ea#nYP<4dLi9vb6&$I^ZYb1#AYKA9{ zh@+rPVy>%$04l`-I0SOssrSLZ<^Ht_V8*;Ma)}9Vxiajzm9+D#o0K7ixL41_s$>DZ3&`^`J*JbaG?fZRES)^Ek2Zd^}i5MWG z#EKdtckCoD9K9*_{o8Y|?YU-)sMd~-4!Jr2mpl{gmYamEF?8Uees;ql{W<56(%R=+ z1d306*33sB?#K~$u<;ytZX1-ZdGuQR>Cc;z-)D5tR|v=KYe+KQ*YM=*pI_j@H#7jt z3buNn1aeoj{(!k(mo|%>UmeP^9F*O8*&grLPJaP7BW2oehDshUUs~h@)@jYRP$uYF zx?;?7R@zNh;GKGGi3DUuwrgaD1pdf%MCUB1A2P3zyXoTiW~wyMSzPNvUPSAo&hL{dlN*yPc`7*=6zxk)Im)+UN1i@IPF zSgY6)$Y-}qvGw6uuxGN*{`^{Kf)3Txu@}0#>@+L3+~iTu$z&#YNinBGMSS|&w-q$dcN-B&Ye$5(sUTuNgW=D`+EO|xT89vjTWAe z(s#0ai)Q_`IId?R$5)Axfn7zbrfo~~cxq1ytJy9TfLw?9mXJlD54E_PdYf25sUE^o zVu6OW?yZe9o~Al45qoN7^9oO%l8kGZrc|>17^?6o_wX~i;j>>?p>{<)ux$`EZBBB% z3f|J8r8g)4-IJtZhbfHaIKuhouXs9s(e8@Fp-y;vp~w|hY8^ej2m|(N{0g7~!n%1U zaB5ZBFqbJU9H@U~vYvo$jQv&<2~6Mz)!)ay{2=y?uLq+} zW6m*HpW1|6Y@&~+Fb^iHv?&90bcsC+=&I=%A+Bocr}tKS4~Nw7^6`PTCENf6RAxU7 zxCI=HMpGnj8>j}?bMwO?hw_?>9>vjsI?I;n|DKD4>_fm zy5+M!dt0gC-+pK)DJuUY4#%d+D`uUc{fJR>^TEh3+S#B4DIdwWlhy>qY4^3f0?!3bdG@>nsQ6jVbjCEB{8^j#t=)4@o}XiilV*KYwmMq1mUkMbQQ+=MO@a2N@ z;{qT{tveBXzD<9=z44E=4h3IIR8&;F5T=#G3(|!yq55dJD&qZB*hpS%Jjs=?E#m9E z*WKe5dwTk;GV#&+SpAQ*8xHFRh85T<;cW%OA!YSUGk&YEH}v~FUwvJh!8%xFoE%|j?4=Wk(g>LDGK=?JgS2dZ35z*;KFC$6PLES39-aWS3WO^4q`#s&1;WN2hyfZ@Oznv&4V~B3b`K@Z)v>b;phaTmvScCWS<4# zlBWp#g+8;kfPusWZ;=PoJa`y3iq*H*=ne5UD6gU%H^xg=R#rZz1B(XB`RT9PlV9oS z=?cd-fKx<)voNqqVH2nBInJap7S=K(g5l-h_3|_+&9t~;QyQ^}tSZ#t8=Kf)?Rde> z@|=cI!IJ=)CMTs#6kUc#<(WdX-$ppAbh|-XvjzO7+Wm+QXgG{v1rouQWQ(i5?1ccy z$5Rz25mZjz1kco3CVQV4ek0y>AkO?q43409>2Vf(6O(rRIyk0##qnVRV6fv8NAL@_ zrwSQo^VTrZ5clGAF-kX4lgB8I7}}n>Qyr5SfHV2(Ns)rhQ~?wonJ@^Y8+rjmVSln# zW1OFXbuk;zVLDen(>hpL0Ma{kAkIGrBF`HrHrciovkS2$_BulTEgI$qvMWd64*)_F zih?3X;u6n*<+k?x3|BjTL2&mNpRQ_8l-U>DhF?U?#lDGt%@%tx0w;g`w$9d9egSESG(O*ZAY!K$QI5Zc*a^aO2HSc?m^w_)CkQ=u_{Y z7;bH5xsuF^-&kr9Wgce;yB6(eft3C{)ThW21T=xE&jq(Rw7jM4qd#50UeDggt|<3p z7RS~CUeA{6iB2dG>;S(pL`-gjRtD+ip(=4TePm5ZME8DFiB@aR0MCk$>$sHjoqmy&665u}IkIfUvw~R9lX!^`neuaE;~=j&!qY8wkXzKLq+%S_ ziw8(tEPBjqY&~!&G1<26b6G)*LV>LS00{NqYaL*I^iSudZbFKOw<4j-_wRRr6G9h( zToh}47{PZx=m)9Kv&55I-G?({9K69xx0f(ss&KVwx>R_CM+5mt+lL#|WzN`j1CfGE z%yX96BL!wGv<(iqL`I%en>Om19szDZgWPUPkg{F#y_57IcOHN&ZWMhZqMgUEmix-n zHi%7B8f>@bJ@owp;mWTMdVtjH{VjxN+q|Oju?D$Y?m}|yyuBC$Np^@OSHtOfrJ_v> z*gdb*ss^He=m~n;???5i&V1vO!K`);X>5wmwqBhS5-_1s zlFZ%4Z26dUg4|~3K@rO_ht*NipYacCBDC1r&lmp3IH5)(IOK1?P<6F7HpaSkLqn0_pw$0)DY zRexXsWXZ#LM21q$Z@ursmDF(DnN*5I9P!|g=;KSq*m8NwJ}?DA-kvP6*s3r<)=u6sBg79IJSU(mImhn zYHYNET_C{QK=7KYk!e_5sF?HZYi)Ap&9397>(z>F5@L177N(&qW#>{rQn<+bdRBKb zX!+;tFQN9nALsx~ziqS}MdLNxmr?uPTAAhZ7z!hcx$rc&yyvo3h$#~g1+k0O+S)k&(l+>lluNXVY|=30urOM zkse=D*!=w4^FS@v8s9B4MuI`8O^#V*i7J6CZ(yaP&m*z}sFh~{3E&XEU@L8>_{6Z! z@y!(dpJOCDg6Uhtf@Vm(Jm9du(^-JO z%BNL&dU`UeOPr;t`QOT_SgOkhcL8>v)Nqh&6h!QX#lXh|ca3(Rv~UokBYj@-G3fTUr2sWdsrhN_xQPj*W#fDUg%<$DZf=&Jy$!P6Px0I{5jr{mRjG1L8p_akpRZ7;p}Fiy&3cln~zW!Kaxt?3-#M#c)X6%Kp1bBinRp!?as z=Q-zm&UxoACb-wSSA65TuJ5{;nwfEnHC70)6&0LAr)7(rOLmUno6%%vt}(;x-`ZRu zU*{J-v_*^<382 zhSymsAAY;YePGZxnC3(NRCyJZz-zN3r4e@{?G$yfJ+#oHka^h=Be)XqL>H5esgNbY2 zDZAU!&VP;AGUzzWf4Iu!pkm69oNIb^g5|v6d@#QqTpKhg@f-uA&Ph(ey~QW{V==)7 z=~tuf@^B1j+)TE~&Q7sEQ>79^LEl(FGR=Y^4Lr=B@>6>|IKN8m=^37)rMYP&guh}X zv7XPV=`-*kTx9>a1CUgtQI5|LVW8~9LjH1$^>f2W&V*d;JBvi%bmH(8Kw1kx)Lo~j zdX9u#9zYrZ+JXhSr@bn3y*ry~cU#h~LdoEVl=TRn&1e$yvs&5mJM@vU=4~=`l}%@_ zKUTRPp zyj4DHO--vgw8)(Fq%|Nu?C$kil2YDLg5w3Dwy^E*@8SUGka3(u5l;}3ew7rM2WL(p zJ-JkkHwXCgv#4xT7B6ZAS2lbLZj0rMNa8DMEEc_twE(41X|o3chvN0UXu(c^?mch$0fJ8A#Yd!F z&gvxErjMbI^SZL2wZ=dp)YhT)9!Ge9y?-d6V9O1I@*`qXGn>R7T;NWS3pJkH{whE& zN%h&7mB=eOLEdv4Fb|_~fY#9VP`5vJLv%?yh<>bdMRR0+fY9&d-}O zjcp`gtrFf*GJ>Kx@;vUPkrPg|Q|Ob0uBO1XHOvj-H8#6yBa2b$>ISjSyNKz*sq+x( zlweA97vxU=(sP-U#lUm!e;8Sr)Jz$b_F1=m;r_Vz%}HetD(;upuk_GcOD6`RT&wTj z0I8eC)d1hZeN9xDQBvOq&mC|qfH*D2jtH#oW` z|HrZX&tY{mXNvC8790?F1GzV#LgwdKw{sdzY?7*-vgJdCb%`p&p+69@KSi_JFS*Dj zC9tXQQ#PiO!*P2hT%}VMe1S(qu;dqh!wG|?e_Xu{y?3xIko%;~C=@D5gQjxh|aVXVUH4)eGz zH{5aTJodS^>A0N;Nk?AC?|z4S{BPyp#Q9svrJ&Isql) zba*2ifNVrA&vx6ru@`{IWdFz0FANQE!j!M;}38Vhyq?3DCR zXnJ2IMQ@>MIWM_By0uR8u8-|`=XY27V*eIe3jjZ8QqpBZX9v0P z1|9d{xI&D9);DnbD$Wglw)y-y^;#GpIj8IQM|5|E(S!N>aT4(z;JEtV%H*4+AfHCeJG`g6hvV-YmbA@$yF}QWor2#dm-MEBXN(dMb0hMhhE^R7VDwgyNn>JRHso{LWavHz;dQ@7ShgvaHE_tDegOQ$LUqCZ-IrArtuO5xAk z#{$HG?Ucg~d;yB?3;gaj9N^diIAkZuW7E>P%=7eMhnn(PD>N!13cB@?_-d@sPy0&& z6e+-fpor3CLos5f- z5#QGreq>rgMV+ss!|8&*f&?)cg--X_AJEZOHtAIFUB!sqU`_(9(z>)$qK!|VWJl_e z5nEaVIS>COl=!zeV&ut9%X=t**!9}1S_Vo3rc}z_AQ1qbBd@4vUSA7T2>e-0_5|}_ zVq)SXx1~?DZE3e2@GwWEhLEb6{!Lw^Zs$MYfT?&y>=udlGlfcX1+=C2{JxF;?_khH zOBkEQ>|w@>2axM9aJHjE#=M+I;QVZjk?T4PJkDZWH+h+{b$1$X$f~gJ;2h=c4X86% zR*zcv5ZfJ33iYZS7Il#)F(;>Ub8{!ahQ6}YDKsw=sC$vhH{6^op3Bg2+x6Wctn>cH z_5S4BtGq27kgHfxTPzk8#`Ym%m>rtMm)xSU@Sc9-YmF;`A{7!3_{Z-Se`ho?*S<)J zbO%r2{8g5jXn6RrPEFgKE)>OCN;R!ag&rMVBf*L{$crIW#VG*W0JwPXZ4&Pk_LGy* zdVOhD^yAI0{RZUaZZvVwj@=jEX;Jrw4M$mT^7>Nu3?fV6FONxlBk;yjsBriNkt(h! z&5Zmtn>yK&`Io3b)XH{jqtEkNF2Zr?*H%tfL7k8pI;e9{0`y%gw5$L-G6}4@`t6W6 zblzFdslYDl7OR4GGr*zT*DViOOe;TdbE_zY=h$ab)H6AikSAPVRZ|<0ffwq81r0+Yevu2WV>ZE#OP`AZI z_OVR;u~))BeXbSfjLiik3BT^uMeYsUcSNXI z!dl$}w=4)zuCu-*3Q0o8hu)WmY_Zd>^VqH!I=%79M_%pnA3OrS#^ld99uqE2l%9CJ zOS{q~P4|C3!g2hH4TjU)AlECSMZ9PPbhETA;Mz#Y2alO04Ee6952CJfQ{Q$~S)aDb zZo!@0aTIUJUOsfRjh{E88g7M3i0IrxWq*XSa&S-yI<0shPxbSLfy_LXs}QpD;XM@V z#b_3CO4xq>bdV~)`+WD1(RO`$uXpsx4+ahxlVAOq@k+aOdpxL${2@++ z>_MC>LGs_OQ0$P{NM%;!3ygrrBw;)r=}f+(=J^tDx(J#-)oAz1KYah;)9PXFTJG9f z5?K#sGDcdHoTjF;v*WQ!sMr3f=V480^=-s0WXe7$a$d7xbT)4gyerZn_d|WRd7(>r zGOCu2$YBHv439X>Nm+4<&g9sox_E>5EZ5{=KXUY9AGD;egEvEiQ#R0`Y+m_UiQF(e z=hMXC*IDqw{1MKL8#iFB_@m}rErz7{=Ghq~F z88bHrj@Sx}*zJn8c$Pvnp60LvTC^Wmx^`6xeQeeZn z#F`#x87AbD5u1?{gDR3wgQK#GlTB?Aw4sYH4n0k%i43XaR|yC2tgYPAg+XiuC=N>L zZY|D7FY1|!cD{!}!e{M{e5lT5fQkj#O)z`)&qp^{8N<2SK}%7<~%oGjON! zWcJ;5uHULoQ$hB-IcAKK@xD`eeRKUeS-B6ZZB|>5a;-!TDw|IPaSOO3Viefc*7o4w zfMwJ~dgH@;tqt|TSF5I=q8JpXVp<6*j>ceB4+aT~dfq;I`COk=k_b2RUGB1YcVYA| zBDdSKII{EL5(2s)yt4VjDop#y^Y^GqRV0_=rje*Dosi0Du@@qZYjWEUoKk-;8uFUy z>){}+Z)W>r?ZH=BT!b+Hu_yLSRXa@EpiOl|v-2BPLa}I08{n8Cu$plA36A}Twxl+* z^lDV!>mc%R!6)?nefrIdrYiWvNM&P_!)}huLNIU>Ghj0^q`jk~YL(*0q_70cXNIU2 zC~21RJjbr(T7Sar+Vrn-i84Wr01nhJjbDXr)zN1S*}kD5>98k+)pEr zuubh;VG$Sx!gvGbzisXt1)=RNveN`LTnvXV`T3fw?l><5dPfw4rTp9$);9; zyBSBaJ`wTcr2Da!7)@*znhm6&? zkX%&A;*(SDb%b~xW9p%d>W=a#-JZ;QaH?imUUU7aQ-q9X3S=9&Z4pz;F8M6$z8jlUj)!&6-r!$KF7S68k1sjfgP*;Hd2bhYQdL-Q-PEBWy5$})mC!#BP|yC$I$C22hx zF&^t+;*xh6a>A23={}ncOk{%AIdWNhpow2#mXGB78kzaMD!EV1NRjW>uZC|1m~Hex z;B6S^uz@uup)|k^fLB2n8qX&`%(z{ ztM$GGy73lOiHYPYU)Qon&gvwaRub6g*yr}Dh=rW6I&Ooicb?d@400sQQhrh{eUiyt z_h33$aP~=0AbGuFODK1A5`A6NhsQ)8nr)iTKw|7)& z5ox53vnuH$3#u~WoO&g$Oya|ox~--@ujI6l6sWqul`@qwbO+SuyN~XC?Yy3 z`1&`%b#Jgnq8`>t9ZjE}ljO|b6a5q-1!LbvU+)Gm5I5c~?toAOk3)`(kDhCg&V_H) z(Gm&YyP6DOGJ&Rm_0R{E;G!5NYQgdW0~3UP9pRw6Vyu5GGqr0k@s9GVrO3a(VeNvZ zSI;N<5VwE(J_Fti=v>+g=Nq%sN8X(Wz1hmLV&MfKf$^6>Ia>7eP^V20{Q-N?(+VYPU;bAUguV`Pf;hVEz8z+y&bGWly;eLg>n~aLXL66{ zfN^O5)#XiF?ow^wI;EWDvE)fuF4Iq-xw_3!OJd-HVAsz+;^HMqGvoadnMCS5t+y)G z0xSw(SE?la`^uHh%TiHg%1nAF*wK+7J{%CP^(szdUwNR}uGwefh3U z=cn1fL+?~fG%TF8-k~U5Y+JzBrI!(l+c$xaFVe?y2{3vTP6srOM39Bm9D+V=yzt?t zd53q$k#MoOhG-uYzLkwPSA2$;cNdKUrFf26V!4nvy+@I5x^8d3u%QDr>$fLJxJ8}7 z?Y`%03el4w@h-IXyF|5}5%c-S&enW%9DS>PYbnP|EJyAO&UE zlGO{H@JLkKT{U-g6<&qIJHY+DMa31MDyyo-fBpo6!FjbzAs5Ml;p?Ge3!ysitW(~s zs#|v@Jea!e_-a!n56(zA1Oh9KWcx#^erACrZHreO1 zpcNA9Z}?^M8Z`C#^~g|#pw{+eO_AoYPZWEnIK7G%!IV>Si`^_oaMp^nuugG4G#5J~AaBxV^PMr%tm9)u;cfCu~rEVU^P;XWRGCD9o$WU##I5 zoFd&%7%|_m#*ur1-swQhHPsCLoS0Y#J1)uHiOWBaboMa2nZD?KMy*|TUrcibc?#mQ*rd6jG;Q?U^C{F<(wLsrT6eyB;%rQPc0WOGr==nv=+9_Jcc zbQgmEO~}pa=uJ+0-qrjE&;?55tjOrIZD7N*JrVojADa!Q)ArZ#ko*PKUuaj@UC8X5 z0hbU`?(>%BzefeYKIkjbA!zX_Iv_6#7t)%%h|e=neNfUpiIQY`Z{DfWmNOVcZ1v#qOrj*Mik_U^0t5 zuW`cdb=8w{=Xwc)P-~^Z%;2TH3Xz*MfkR9am>aIck9a~hQ!UtF5d6>K?r=F6Q$JO4 zD<^~C%a875hHoLDam}UY+@1{SbFToAgCPeOxN<=UphPNZP8{S}AKxO%CMI8%u34(y*W4umMVVSUQ=4 z%FZ@JkHZ!SGp|=g-L35>e;Fps^zdVqW&?g3#t?{h$M9vLyL=28i-v@wIWMNsulZMZ zJ3`)t^@=@M?|XA6$C@^f_wlo*iwNU^re|&tLF!?M#YsA!Wf{S1gv#ga!!b`abB1LFh&Y`3L(-kr#AvO?pX%y*ss#c^NuaBD$*{Ae?Ca+%}hmdvr6(J?@FQ@RpPOI zLoA6=%U~O{_Nc_jGbV4QJDUK}I2I|z;f12Sqgrmq0SxT->JzwmZ&G&`bZBZI;^U3k z-myutxC^sLk8vaR1^LIRU*i;E{>KQ1#eNHyxkIC@k`S&8?}iB@A~}ucgXx0|<6QI; zsp6Q*aDAf1k5%F@t1(bxn`*}_2i zgVOMdJA%_O8CQxj8hjH%&=v&ZH=CNQ@{Tk>CF*(l(6ItwszXrO^kAoU zR+Fh&OYY!!4;`$-OUj4biSD3?BfI|pKCjN==x++94S#Je}vS+is29Dd3 zb)&k9ywI(n?>wo+xF7HCA>p!4)jywK1>yf(0C;zl@)jLNqF+}r67b7bom2Rqn2b@< z@X@?%arsjqPWKe2pXltd$l{trb$LgOSWb=)W}haG+EO5v>)dB>12LLM0a@s@z3a4) zN_>)2hsUQvqLA_Xymd`SXN-yVUX!kDx~g?I9p8UT7${?t&-jJ~GFrQNF&Xyp195ym)I@!i&JQ^-^#(E;dN zVt85OVIeUMdCU*!ShAF}`^BtJ%g^1T5Hm8-m>yP^x13|MN^19G^p~u1AU{HjQB22P zN?C@F`Uajj(n}epSUPwp{ki;>_)R3&Q>1Cf!cVs+5z(^eMjQR zYo`MSnbz3@rMSCB?FEXq)QEA*;va-4zKCvJ7?5r)V@^^T=fS!)kr{5S_9>W*s<&`) z1}ummnbXv_itQE@>VgaV;TAJ)@PEN^R`Mh=$vG`?LNd_mwiIjlgIhw57@B|VI9Ah@&`1oPx?g=ljI zBWPu+x6{*3;98C=-1c#qz{K&oS^5W2Plc7T!KDgY3IDc9^%m!?yl12h`O?jTNZgj?W7&43q3wSg&GF$h`TbVGR%m*H(p`IautvOo*)UU# z{C%7E@;qw!y(MWeABW|PAuH-^-u^ivvg7mFTFHw-U2r_Wr+;Yqd30W7MDrkpxW6SN zyHc9d;&j%-G_eq6TBQ-CjcA*gWy0sIWc^?`2 zC`EErplNiDj-KbZ3{-Y^#}V8)tw{T>#-l6WiZ=e7ig4We%h{3EWD2TzAR9#+zRB6q zr&v|b(dKsstkDjo@IJEXJw5QR9-g-!JMi!x5cxWmcg|Q(Qo&Y{vou)rvh#>%sWcsV zvUTdu&gi{Uyxlc#@ul@IT`F&GflK?FtyTiuRX<|Xr75UdOGOlHd0`&;mBA~Y*X!JA zALz=O{f%xGfFBra&_^`)zSVe@ZrWT>bBd(SNYFxKXUpUo_G?ZG)O$g$#5*PK~n@ zkVgbDsffd?I3;W1Sc5%a{-@TzVYVALw4{)DvLOJ0P|wVQJ7|wNeli`FD^At__&`OW z(}yl~q*56N>mv5I9;iv>l*#sZl2sgpPPv61e#V#y>|4wyB&tJx#uqp>6b)$Ghkm^p_w?7WQHucW9N@gP z^RMl18j!`R?;8tiREVI9Xq?Q`kK|moYoYS`nFOPwYT#)a$eLYwCga&!3?wF#qAF33 zHxW&g*x~V?9FSbAvvIYwHQK`v!cE~IeXdp~fcFB;gDE!f|0@Fe1tx4zepb@736@)B zDXR+v8?7T~T^`2h@5h%M78fw>g2WIiO<1zYelFMs!%(I>@=-7{%bgxYASbqAjtQ+d z7>5#0LAD*{$^#3G@KqP3%z&Egk0t+gN2V}HrhwO88kPD~i%PaL%@6QGr?~de7|${bq4$y<{mLY7t!{5k#t<`lC=qEY?6{hX)P-A%N`A(%`k9}} zkH6w4R2A*z_U&<8?0YlcwTqG}94ikx9n9VUXXf~;09k?kT}dRKr1}t0a8CTiK1V_q z>%2|2SMUg@)tv_bvzEXYWx)Ut7u!8c`=)5H7J=OYo}N)QhG}~j<;5HhW3*dswbkq7 zvvr&u4_`9% z%M;|(HP^cPc6iJZ3Y|m{^O5OTGPVyy+8?A5^7+IuCMz-oVHV4a)N6dzT&R9pMamL_ zYNLJrgDHC6Rb{+EjO^7;^jBY0<%+E+;n>*Nrha}ts&XTk&XkitnyV>g(`)AnwMN4x z02bqDPLHIv-d57hU@+b%uqqUkCxZEZc@a!x!g2yfvkTML?1IcZh_!*)s9LF0BwWaL zVN2-%Y~^hy|_cHD-13zWA4Hfc`bBM1DgPU24sKAEpr z3g?_sw1Sk5byQL|!3w3J7hB4;Z!&;TSuge!XYo}g3(qb1!L1zQyl|UHvWoc8j7SnN z-=oOnkdWM+#zWh49B=9CNqaS(qXVkQMfJt#^}o4$KTUAw`8ueXj!LylplX{nEtf{S z#GiI)REgD3tzB~CYtDcQ7BAO*LNxIq?diWpOQ(xh6WS-T&SNCarG_Obi8LhR?75Gx z6I~`<#JPw_n}={$=GI;t+!^pIbFjVo|{PfSVU7)rqeOZKfLX6 zIvLlT9N9;UdtVREl_||rq+SC^{ib|F<+G|Xd)D`k-81~rtzo*z#^sx@LRQiY?A;yNxG2B+?X6BZ>04y*-W47q=d8 zfi%S~;0?^c=a@oC%vF6buvEbH|BebW8kbA%&69Y8M)QQ4K0 z9<$esw*7Y_=19D89A>xGvC!RU}4CJ63ohYT!%qw#be|a?k zd2iSzZ^)cE^mcoWda^Gp1KseiO)zlOnI9Tcp8*pBJZOnYMvNGni$)XF2k=0M=C zq!++U{nzt#9k3va^;^lNtEm;Jdaj_Ao1S?@us12{$N2q99q#^9#LC zl8x5oa85k^ml=7aLTxj5?gFcN8$>d-5fTzY9`ie)e~UuH5}L@l2ypZrID%I9%wHC| z%xt4!LYOAr4s}JH!liLX7eK2Y)TmNcBd62*6@bX$rpHJXwcIn;3 zvxah%h6eBQ?#K@ruHR7%Hnx&2F2iLxg{Ph}xjZb)AX9i@l&f!ZunlUj+ZGN+p(z_l zrw=!&eqP_r4Vb@Q&*jNBI4+D!X zG-VRglhObPtU&2jvknWNRiZcyawd07*#c$V^&)2Wh7ivDvlT3Wx-!&S@8!I~ng8Y9 z9`gM3^60$&SeFk1Kuzg4DNBK5(Qwi#c&tU?^YebFgfh`HpmMz6Ico-uRIY#C$d~dX z9Ou926)}J)R_o$~wQ4)y^`J)Yp9U&P5VU4n!zMbHqx;s*J~HiI#QToVh>9K}!&@EF zPen??0*gX3ojRhtB!&C=UH?<=fQc|}_k_?1P-YJ04Zpu;4J#ptG#arfqC;55$OE?h z-RPcX=xu4Ts7b=xZia;FLRt)f6A#5Kmb-T1?|i|mfDcy)JChd7ne^q~^tuUaRXKvM zHvB=ICZqh3;e7cfKVJ%NE?Q*eLcoqlJVk~Fn|8nx35JDUX7BS3REB#Q9DvTf1jQz_ zUF8@A@IaTfUBL@{$sRGULvgQiW3&x|wE}QIX7e89;5Y`f3)97>o#@;wj5Ajp%YUpS zSuaL^$h4=*?SQ9!hwlYlO!hyDXchX2CWfD7e&wsuI7$Yp^maj)rD z^!0(wZjMap*1QR202f`QaOh6~tG6_Jg(Lj2g@DaL_vz1Cy?%Egk2bx)kFW56xLe&V z1So7JQIMMPZ4lIaqIP-h3MjO-#*1H>Uj{XYRp5ME>u?_B4a_r$I*_QjLqruEL zOW}$AEztAIWJwhG3StE(#o4v`t<|0rzv^oPbzci-pZeib#=)roWO zR$9uYc7$TCSWkstSrv<2cIeD{+8VDmFm%uT1`E=Q&q6ej;zT<(?H%> z93N5jeahy^JhMo58Ha+ompQ__Pk;31f3qI>-?%7t8X1Dtry&{{SMG^+@qgi-(C9g*2x_w#RHjrNzN8*_`b{q@p@E<)!X#VhN5F_*$ zwytIyLsL98%prj&&Z!dneKz*0v|(5k15;bXzlcKu&QA#e%jWCk--zR%-CfbBZu&8v zUdl2V4&<^YM`-GOvEv%&22>Qc7OB}+L*8LBBz`%N>5;uon;Tq6*Cn{!v`3CWQ%Z2$ z+{yqFV&vByu|UN>_Nk_)l(FIZawN#`6OzO3$1;5%^z{S2u{#IQJPSM!^XOi~j+cTe zfA|9zeBU{RTSocYL?@S7roS7K6_)3|WuHbtkLOteFjaI41^w113`oQ3d3>bu0L*Gq zZ?5d_Xu$1QuNX(bpXLfa95jhr&N#y97Ven8r;)+${-2)Cc$-ZAPkR2g9NjqEY z?c3l2$j@K<`Uu!@Hy={1kD?-0}>4m0hAd%e>@PE2V3iHRGRA%9! zpj7+l!E{KxmV`&0Xf8b(xQ&&A{i0j03KfR+zR4@xNJednXy9G2i&(ej8acA~HXh|4 z&6=#x?0eB3_XjOfPl!-zhGt#nPnfxkSM8T)tjgr7 zCpc+X|C5z_2JsBHT^-lqv+D0%qhffY2;om2ac ze568xNh`w}nO$ghV)K4I;AI$o7MkAhTc>P`qXIl0^2wP@udd zn7ZR5cdY6js6y8Tii^1edaiPp-ry4B+T#LgGh-+gm%@MZxU5oraOCne6K32DYi-|b zX^INj*z{couk)Hz!O#*H=3AGqqrC>ZE&n9WkWV|=+nSlx!5kk9_>XZc7dgJ^M10oy z@c!4^7={EC)5l)BZ4kW&EHnGxe%eKy%Q8SXT#7&T+E2&Z@ocaNF+_e2fP3qkN$n)` z3d@$a`lCZEz*kZ8!-F;tT3R;SU!TG?j+z#8Ggy3nd3qnUov!(CIvJHEUp@`(u@2?{ zrzK`PxAy+^gjIh3?q`^2h;B%G!_hPAXN6M?92fc4YSAPJs4lteJ@oPc6mH+Sxq^o9 zmhRM4EChNzeL*@*?I&(Mu9)OP5b*FvczZaT{PfVC%DA`+tDjc8WNc}9(Q*dovM&S( zoz0fOY7KZ^)0K!+1oYyXJzfOec`Zd~vL zUNZIe+Ka(3^7;RRhl79GFc%od{#N{>gVvp6EEM3gTD(hlaKf#ZUu-^B(Zx#=IOZ2D z=WA!?-5GksURPpydp<_=we#0y7;4@8DjtA-4}&Kwq{{oH_aFzN-s4Rf#F$8%J@gG{jqctY*%AMwy+q=hy> zzgx-e;gwA<%0$cqPt^eK7_b>lufVsP@TAMDwbP2j6 zJC%hh-w2W%(aam4y-rAAC0S zb%C2hr{7zkU#3Fw(uO*zLg-Jg?gIV!NT>Vb|GKX$_UK>VqyM}DEdGf{V|agG@amhZ zkN+J^{!YTL0wzFhcf}$6ai2G|Zk}K$ew(;?l|&ag{tshCFZ@+!T9b;duz~jSwb|3v zVBHIgddHV_^H&Tl>%wugXvoCjvrCSQ#NDNSkLf4d`x34#%ZaZB!JjE$Ga%vB;0$<7 zW@hnypmSRQs|8O;NH`fp9bIX{Ld=xPHT$gNCN@hfmqLG>@hp|3Bi-HmpaOgrx;@%)x5Qf+>7G?a#d`8DEc8;pxc7bt^eJR31?}+)tOxbMF%{d?h@5v7mkJh3sKkqO+-~}fo62Q;z~T;qwKPtMi94eUZk!aJMMyH-yK^{ zPI(SrsKiW9{**^4VQsD)`{SOyJ4matoU{#)??6ZGfR2L%Y4754u(Q~i+hJT1s7Smy z?k@7O4Py5AB24=InVwal1VI3bX!}*s!)EJ?wb(;eLuDS|O0i z6XMv({?`aS0zwn%N+;;1k=DG`9C+=1T$lWh-KQ=gx|rSMx163#8O~V`XcKL=2_wWk z&yL{H2Ou=^^>Zqy3ubLSq(pf*0WE8!($i#f4u{oI`6)<*V}|s5%~Upi+lxpTV57|P zs-RD=R-F`3OfHX^%DTd(n#4KPKE8EqN$U>qR(slr~tc*yL`|@mAc@uR%R8 zTyKS^lr&?o$dkF$pg4LSmv+2(obWK|L#~*R!?cilpR0%d$dJ`t8$;Y6BPsM&Kyuk! z0FUnwKem#tmuyZa7}9Td3lw?C){w|UWbHp&_}yg3GGV8f6Hb0=G%Z27Yt7St5kWzv1{)pE z&o_tyV#yOL=~Gpf;KnUDn&}=q!Rc-*kwR}`SnJTSOqMcbMSV;cHMR=JK998Dj}V7f zFZS9802YP6T&i?60p{<}+J5gOA5<;R(Q?VyT~zhM68kIOefD$K<&`N6dHiB-}AcslIZ)6@GOY=b(4U1>)g}$Ik4F>xMT$$z&UM9g5&~q{G}hl&3S|) z%R!$bF+}IWw|*Kx@IEu|#O@*2QllW>ZaG$ZFz>#ipLpr0=q>>To4dm*33!#C!;fcy2ewp(6J&w?<4b z><`ov^SBXUq|?q>9o|Cr?jyOL&Fbg`$S^I<4}IMNw)lJ6N(AfvUmsCzxBYkei`F@6 zVm?}6$gFG3y$BpCWx7RtM<(P96u$F_6vDa-I|+SVOnQ-@;W z{rF9Pk`|429>D>cdSl<6131liDdCOTEO-cuG)CX=A!gcdty@$biI2hq+teA^55egn zW{jr~6P3F9UT=e>$X@*qSn2fCuKSAi%l^9}HT&r*n}6w+Rk-Wu>D&pG0%PyzVwSDw0~w=}{y?PcQj6f%TOccdgINa+nSUZS9R>yKBJ>u2(0lujS>>LA zh&&-|n(ucnzB0|Sq{msed@^e6#i~MX=9#dkS@$9g)s~fsdOfjGl#UmlE zDricMO!*XNzcuN=ziuvlx1;q*XH|z+%>FLOeg{roaSLgvb)4|4l#YRhB?%v4M6aAB z67+>FwcL~EReUE(O(#-6-qU)y2-A#(Ic<&vlD*6U=yV+4LqcoIi!9NvR* zjhx=OgS@dS5n0lBJWaFvcWo|T$Z(Kn&`x0`wA3vre~vFJV1k(SiIt@%gZVu2LdIM(m{8J-JG2xJ#4?u?Dg@jiHoN zu}SzI%`-gT7m@CYO-=^m4GnOEF%d@(&k2h1xxd(bGb1dc&IAih2znA4GNDIFhilJi zmAtf)paYpN3@dr|&$hlCsqj`v)Jx?JU!g%TNZWM?Kqvrykar}55I@0`wJoO;7-s0r z=KYe_=tYhYWsg zH0EyqxN@{?YDQOoJXxyd0Xu>dbpYAn4cZh_3#{Q-QH0(E8Pc=|eh0~1jW!xcWl_ZZ z(vlxX(*WoH-%Mi*RCEu?H5A2f$(nGjlEkTB%ZygPC?LH^zK<^OK;t$57sQ+AURGpB zO!ZPpcPM|ZEOrMdqX6PbHly+h!#qb%s?DnTNOZ4ermu9bv*3|FS60EsnIxJlax@nX zgste;zeCX9AmTM+gJ$Hv;{pW|*8%vS@BR<(S||Qz(o8S>LnX%taxvUxHbD06tlw*Y zA}=`2=osMG z|3AcVS0b^)QMB?Gs7$Phyv#+=+E%>?d2w+QIlBbbnbkSS&0voxJZ$Rw$OKR0n!u&- z^aplC)Mgw1eknG0b0T+tKKZ=epo|l&wYQP@>*1s0W8eMy3msEZcV@nXPreakI`Lh& zEOjH61A^AiUQ$M#%aXx=qWL@vjo_RBlU6g;Ne}$o2it9KyDQJP$dzD?7qi1{ps7!R}C|b}MGVcN(hY{!zX?q0+LX z2$!$T)va}l{unO(>oJJ4#$p9?01m)^`gsyAaqiKlI2%|6k$l40CVU;~ni&}CYu9Q& z87F*6Lsy7m{L()D#~U{YRHY@JtNH9&ditB0Xs4kU-1SUWjvj*_AjJDY;Tr%`-vX8M zxAA>*0E*F2^}iI)W-dii}}ex>Y-HIL&{gHD&u34MA*6OXuKdDe{aQ=k~s`Dc`tr!u>~?6luR=%xjrh~Ror>W z_G!qqW))Pvk4PJ%i_e&&Bm-{fD$zr)ssdC11;pX(FSOFr@CA|b9N4L@<2~yn%)eh1 z@aMa1kKEO_K(>+Jgt8a+K(CkjnGZ@otbOQ0Z^R><;eQD*2@guGt+RD?#(KE{$MI6_ zk*9yksP!E9^$8ptjIsj?Yca~{5XP`+vc318PT@?{0U~MWT{~%jmQ6YWSu8Nh%3Yc) z8s_azkgFIl7fkvMR@L!Q_5!DPRP7iHXdDC z$H29&WU=`V&V90UiSV~(!Db8K1^hC5=a|S217VoIn6_t(2^W<*{(Xb(T!exrv7sTA zy3WVD*3lCmUQNCx{1r`@#T9hI>c%#f-yW}$UYnCI5=5_>fAKt8rTqWKeH}m1DKugS zIx+)h0JPU#i#?6?DY-V-B63h?QvyWF{3*LNa1<32~$X}*zYa1cOCCDAz?Q<}A5JA5<@ zn8v0Pq+(t+uN1k#LvnxCbBT&vbowK>CU#yTAhYNzz9*rwDd9$z*z@1WMNye7Czdg*kh04QiwZFzqC(jEIVx(7jDZ`w zG1C28Ri2obDE}=ic4Tbz9Yr^i*;k(z8D7irFjTiTX`agVb*oeS+V<-Db3^y|*`ci2 ze74unp|uCcs1cdx_ft4rfk&`l1^YW`yWymo*~N$FQCv~g(DlR9e#>pAo#kjnE*A!j zb41fF0eKpPu^Shu`~)b#0~nY)Da_Z7Y@wf(;#!Po3`hY0Dg>zU7}22o6!g#&vLm9q zMlyl~@=q9K=TNbD*s?0wxzq0>GQG9=$tWLXL>Q-ZQsbaqo%IGhe)wDE0$gL)-dd7g z8y_vQBc=ENP~CoS!#~I@Fb8+g#(UaNUnipuADuLO!49D)B`Q(0QGlYre({Y=*s#{Q zk6!kvXe4C|^#3(><>64S{a zVwEY4X5M{XU<$Y|m;^>7F=wgwslp@LC*7HBolg|iE+sC6vrgIQd!PNsW$-5BA$-_3 z$4Iz;Kn5>bMaJ)S4}S7c<;&73JkalG0Pyi9q7anO16L8Stc?YA+fw7`j|_UB*mNO2 zn{DewBK7Fmu ztU*n^HJYOs2gXv{FDsYK<6fmkP_@4V#fw`Bkwv4#44;oove?Rsd$vj~L3F!&Z0;%U zO(X#{i82(No}RD|28YQtsdel^3EuBp%z1lNxx`QusXCY*-zPQ|j~Q9v(v^RDhtFqE zxZ4Gz9v(*9L!*=DxN2&&{WPCoz&MK1;(hd6SAt;6??s-QTg&`zM_-gMKYw;zTLp? zP9j2Zo+OLMo|2qL&HlV8oWLb@ust4e$z|UMN54=)A~C9a#*Vf{oMB$D`=xl2d?QA4 z@Yw`aTQQ={>ERMat}ir}`Y5+dKiT7bk)BJBLf8^!DPiQV8VI8@L2XyPF!|!k)b2Gi z7O|?65}?4uxRXRZansYuskwnF z(4D1@;l+04N}eSeKQ`c9jz0H?1Ub1aqfi{2Vs0MY8M^w#ffUTYh0GfGq^sH%ZK^Li?Z zJc7c{YIgbeR2TVhCB(2~8ZR)ttOQV2eQo=_5iOQ`S@{d2G@!_; zekN6T6zS0UzC9(kbtEoV56)}(PC+-uOV8HD0VU(Pi6S7j{kt_l0MEKLKnK+yswV}A z*7ueg4*itNy&Fu!AiTQ;%|6U=5);*c3Zu4{cQ|vxN8;-|x5N%OC=V2@vQpEt?42OQ zxe7G^ID6}g%tTeMXNh|*IVp=$!t|7j0C(Fq-ia-(Nm!~adcR)rd55>ru(lS zH9b?U<Us7%fzYGo4C5Gz!!@5)LFe zD&>p^cfu?Il@GLjjV?JSwID&mLuz~*N-k7!&^43xWk+;qLy?O6QAZ(Fx~034u;_VF z1wjn9$fklP>_~Xb_4voFsAmErJ!}Q;)DxiOZ~e?H#9um9kfQ?yr1i)I@y%Z4 zT>)u4Ar4Atq$}8Z{IJ%2;#IL{>299LGua$UuEE$ z!=C?uKn9qWYCNs`nV7B#SN9W)E6jnI?CQ=G;v`hcuNP%dK?}?r=3xADsLPr) zaY&7(dU@6Np##?%!usiID@l|x2CSg;>G_^_YKi_WbAiw!t~Y!TZj85@@>5G+mPsgW zXv&KB<)`4f=V1C2+{5I9Zq{+;?F&(9^C>zCovnHH1CGLkEcI)NF8kG&HgNL_i1z$Sx~WunzlX9j1XYe@P~i@8o!L!#cB&oZs((zOhb5 zf#S7mZh&NM)1_!AR&4gf90n_4)wxIBZpK%`j`UUnA%xzG_x=rBaoukR!|so?jFuz%na_}sW(a{NGT6DRl%Wx$OTk@xOeqK1!0nTd+m zdTY74deysQ&X(iDEBGUd6BNkXWy0MSMxI-3Bb{rU_2soO8NK_XAgHl?L`^nR{TP2U zDhjII|3#-C0(xng>Vxev zuTx=ctL=}n*Ug;Y*$jod!WG{uc+9Rpv<(=9RD6w}cMNvKwi*7gvv&|m1aCL=dI@8= z@fv5Cn5)?lvK#}Vr`8r~L9XZ_Kv812c|uW(<#94Yz3pqI#th=+b7T=Up2bNWqntkf ztCcT0(}MXRxV3!&YsuVDP$&r8-{|H~+7 z7B=Id+PU0ke#A!geRj*Bc+0X4wFT8OMd2?e&2tlmFs}oas^E6Wmx*=LpbPM`kcRJDC#4l{Yh=(j20u)kQ)~YDF83ASN zQH&EC23|i9?a82|v%*1&@*VU-Y2VHjSbOORJkk^eYQA_?o^#1AwD#Q2T+ryd9Ow{w zwcO|Csi@J-M^qB$?h{N>AQx!~7>Xa4A2+%wbETZo2$A4bfa)NF8lRKH)~p>L zPxn%0fT{D9K64Y)Epd^J$mT|5ThTl$Gc%JAS-XVk2b@!cmyiTVGTBXgjTG@Uz#M?v zvZPD!r(CED{?bqW+_|uopkV53s^9NIEhFJu^Y&Yrt1lL31fZT$qQ1D3dP zRBtdwEEDVR5Dkk(^l$rOCwI}S>ZEj3(PO$ceoF*@Ca`r4);HdYA9Z=!b?M5=X&Jm& zN&ljnkJ1C7Wu1@FY2N;{A7^h|P!k=f8B??j774SeEw)c6kC90oGMGPAs8n-@p2glt z)S#;PTvm?XRdl*i`>~xUE?K<*A4R$IHPyv>G_O-Nft8 zo_GG0#1x^pghphCXDiu4M|cVIQv}*^j)5KF%|VqbWtEOaw+HtE12C=3)WT^hb?q~J zRk@7x@wb+>8C0c}3RiQ>7R-zIRh#&JFyQUXA-nW_@WK^XhcLui(S6_{xk;e*p+5Sigk? z1e2T%Y|g+B3L-Eji?dqBR72EBPo8f;}P_AM>88-V-0f5p7m zpBpj)jw-(iROJc@>>e0<$iIw9O-*gw{qEZ|*wM_}<2p)bwg(cXZ9Dw28%7Wu9DTH@ zOsrQK2|P0#1`END;)v%d4ByyGL@W|{_N)}_0Yjq7a_;$G^}C3>yE`4oMO}&k_3He} zPh30dFdTk;u)?3U{2jT*{QOy2I)&u2HXDXqr9}m3SR4wxed?8mp|K%<$dr}Sg@)Zj# zN+OY{e$@N$fK{5=CmJ#?e(k*C>%l{8%Z$}x>+#BCvWnVC5_zVp2RKR)v%I;&@K$bi z_}lt`3iv94=U#w--6`WQZC<6U7ZF3FQAqaSBEGn+Yz5pHa1vdLSHM#9VEp2(+};QT eZgu29<4Df6mDK50|v(bZM7E`PXa{@}lo__UA! literal 77353 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 Date: Mon, 20 Jan 2025 16:44:37 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix:=20=E9=80=89=E6=8B=A9=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E8=83=BD=E4=B8=8D=E8=83=BD=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=A2=84=E8=A7=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mqttinsight/ui/form/panel/MessageViewPanel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/mqttinsight/ui/form/panel/MessageViewPanel.java b/src/main/java/com/mqttinsight/ui/form/panel/MessageViewPanel.java index ef8a450..2170024 100644 --- a/src/main/java/com/mqttinsight/ui/form/panel/MessageViewPanel.java +++ b/src/main/java/com/mqttinsight/ui/form/panel/MessageViewPanel.java @@ -359,6 +359,7 @@ private void tableSelectionChanged(ListSelectionEvent e) { mqttInstance.applyEvent(l -> l.tableSelectionChanged(message)); } } else { + lastSelectedRow = selectedRow; mqttInstance.applyEvent(l -> l.tableSelectionChanged(null)); } } From aa4cc7724e30d298fa8996c6f814ff7773021bcb Mon Sep 17 00:00:00 2001 From: ptma Date: Mon, 20 Jan 2025 16:46:49 +0800 Subject: [PATCH 5/7] =?UTF-8?q?pref:=20=E5=8E=BB=E9=99=A4=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E5=B1=82=E7=BA=A7=E6=96=B0=E5=A2=9E=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=E8=BF=87=E6=BB=A4=E5=99=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mqttinsight/ui/component/tree/SegmentNode.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java index 8f0ff57..6a919e3 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java @@ -4,7 +4,6 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.util.*; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; public class SegmentNode extends DefaultMutableTreeNode { @@ -89,10 +88,8 @@ public void incrementMessages(List topicSegments) { } String segment = topicSegments.get(0); - AtomicBoolean childAppended = new AtomicBoolean(false); SegmentNode child = getChild(segment).orElseGet(() -> { SegmentNode newChild = new SegmentNode(tree, this, segment); - childAppended.set(true); addChildSegment(newChild); return newChild; }); @@ -101,9 +98,6 @@ public void incrementMessages(List topicSegments) { } else { child.incrementMessages(); } - if (childAppended.get() && !isSegmentVisible()) { - tree.notifyTopicSegmentsVisibleChange(); - } } private void addChildSegment(SegmentNode child) { From f3bc2878b201c618f6249317a980ff485bdb3e54 Mon Sep 17 00:00:00 2001 From: ptma Date: Fri, 7 Feb 2025 10:04:43 +0800 Subject: [PATCH 6/7] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mqttinsight/ui/component/tree/SegmentNode.java | 6 ------ .../java/com/mqttinsight/ui/component/tree/TopicTree.java | 6 ++++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java index 6a919e3..9ca01b0 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/SegmentNode.java @@ -79,7 +79,6 @@ public void updateSegmentCompositeVisibleStatus(boolean updateParent, boolean no public void incrementMessages() { messageCount.incrementAndGet(); - tree.getTreeModel().nodeChanged(this); } public void incrementMessages(List topicSegments) { @@ -126,14 +125,9 @@ public void decrementMessages(String topic) { } } - public void removeSegmentMessages() { - tree.removeSegmentMessages(this); - } - public void removeSelf() { if (parent != null) { parent.removeChild(this); - tree.getTreeModel().nodeChanged(parent); } } diff --git a/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java index 0081bbe..ca2ad32 100644 --- a/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java +++ b/src/main/java/com/mqttinsight/ui/component/tree/TopicTree.java @@ -186,7 +186,9 @@ public void notifyTopicSegmentsVisibleChange() { return setA; }) .orElseGet(HashSet::new); - mqttInstance.applyEvent(l -> l.applyFilterTopics(invisibleTopics)); + SwingUtilities.invokeLater(() -> { + mqttInstance.applyEvent(l -> l.applyFilterTopics(invisibleTopics)); + }); } private void extractSegmentAndHandle(String topic, BiConsumer handler) { @@ -225,7 +227,6 @@ private void updateSegments(String topic) { .findFirst() .orElse(null); - if (rootSegment == null) { rootSegment = new SegmentNode(this, rootNode, segment); addRootSegment(rootSegment); @@ -235,6 +236,7 @@ private void updateSegments(String topic) { } else { rootSegment.incrementMessages(); } + treeModel.nodeChanged(rootSegment); }); } From f47dd1a23bc144fe0c58ea74af445f2a981db2d8 Mon Sep 17 00:00:00 2001 From: ptma Date: Tue, 18 Feb 2025 11:13:49 +0800 Subject: [PATCH 7/7] build: v1.1.4 --- README.md | 1 - doc/Changelog.md | 4 ++++ src/main/resources/version.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 421bb4a..677f509 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ -- ![JDK](https://img.shields.io/badge/JDK-17-blue.svg) ![Apache 2.0](https://img.shields.io/badge/Apache-2.0-blue.svg) -![Release](https://img.shields.io/badge/Release-1.1.2-blue.svg) [![Release](https://img.shields.io/github/v/release/ptma/mqtt-insight.svg)](https://github.com/ptma/mqtt-insight/releases) ![](https://img.shields.io/github/downloads/ptma/mqtt-insight/total.svg) diff --git a/doc/Changelog.md b/doc/Changelog.md index e6809ab..3d31ad2 100644 --- a/doc/Changelog.md +++ b/doc/Changelog.md @@ -1,5 +1,9 @@ Changelog -- +## 1.1.4 (2025-02-18) +* **优化 🙌** + * 重构主题树,提升界面响应性能 + ## 1.1.3 (2025-01-06) * **新增 ✨** * 主题树形层级显示及过滤功能 diff --git a/src/main/resources/version.json b/src/main/resources/version.json index a4c7e1e..d7b0b6d 100644 --- a/src/main/resources/version.json +++ b/src/main/resources/version.json @@ -1,3 +1,3 @@ { - "version": "1.1.3" + "version": "1.1.4" }