com.zeroc.IceGridGUI.LiveDeployment.LogFilterDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.zeroc.IceGridGUI.LiveDeployment.LogFilterDialog.java

Source

// **********************************************************************
//
// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

package com.zeroc.IceGridGUI.LiveDeployment;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

import com.zeroc.Ice.LogMessageType;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.util.LayoutStyle;

class LogFilterDialog extends JDialog {
    LogFilterDialog(final ShowIceLogDialog dialog) {
        super(dialog, "Ice log filter - IceGrid Admin", true);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        java.util.Set<com.zeroc.Ice.LogMessageType> messageTypeFilterSet = null;
        if (dialog.getMessageTypeFilter() != null) {
            messageTypeFilterSet = new java.util.HashSet<>(java.util.Arrays.asList(dialog.getMessageTypeFilter()));
        }

        final JCheckBox error = new JCheckBox("Error",
                messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.ErrorMessage));
        final JCheckBox warning = new JCheckBox("Warning",
                messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.WarningMessage));
        final JCheckBox print = new JCheckBox("Print",
                messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.PrintMessage));
        final JCheckBox trace = new JCheckBox("Trace",
                messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.TraceMessage));

        final JTextArea traceCategories = new JTextArea(3, 40);
        traceCategories.setLineWrap(true);

        String[] traceCategoryFilter = dialog.getTraceCategoryFilter();
        if (traceCategoryFilter != null) {
            // TODO: join with escapes!
            traceCategories.setText(com.zeroc.IceUtilInternal.StringUtil
                    .joinString(java.util.Arrays.asList(traceCategoryFilter), ", "));
        } else {
            traceCategories.setText(null);
        }

        traceCategories.setToolTipText("Trace categories separated by commas; leave blank to get all categories");

        JButton okButton = new JButton("OK");
        ActionListener okListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String[] traceCategoryFilter = null;

                String txt = traceCategories.getText();
                if (txt != null && !txt.isEmpty()) {
                    traceCategoryFilter = com.zeroc.IceUtilInternal.StringUtil.splitString(txt, ", \t\r\n");
                    if (traceCategoryFilter == null) {
                        // unmatched quote
                        JOptionPane.showMessageDialog(LogFilterDialog.this,
                                "Unmatched quote in Trace categories field", "Invalid entry",
                                JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    if (traceCategoryFilter.length == 0) // only separators
                    {
                        traceCategoryFilter = null;
                    }
                }

                java.util.Set<LogMessageType> messageTypeFilterSet = new java.util.HashSet<>();
                if (error.isSelected()) {
                    messageTypeFilterSet.add(LogMessageType.ErrorMessage);
                }
                if (warning.isSelected()) {
                    messageTypeFilterSet.add(LogMessageType.WarningMessage);
                }
                if (print.isSelected()) {
                    messageTypeFilterSet.add(LogMessageType.PrintMessage);
                }
                if (trace.isSelected()) {
                    messageTypeFilterSet.add(LogMessageType.TraceMessage);
                }
                if (messageTypeFilterSet.size() == 0 || messageTypeFilterSet.size() == 4) {
                    // All or nothing checked equivalent of getting everything!
                    messageTypeFilterSet = null;
                }
                LogMessageType[] messageTypeFilter = null;
                if (messageTypeFilterSet != null) {
                    messageTypeFilter = messageTypeFilterSet.toArray(new LogMessageType[0]);
                }

                dispose();
                dialog.setFilters(messageTypeFilter, traceCategoryFilter);
            }
        };
        okButton.addActionListener(okListener);
        getRootPane().setDefaultButton(okButton);

        JButton cancelButton = new JButton("Cancel");
        ActionListener cancelListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        };
        cancelButton.addActionListener(cancelListener);

        FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        builder.border(Borders.DIALOG);
        builder.rowGroupingEnabled(true);
        builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

        builder.appendSeparator("Retrieve only the following types of log messages (server-side filtering)");
        builder.nextLine();
        builder.append(error);
        builder.nextLine();
        builder.append(warning);
        builder.nextLine();
        builder.append(print);
        builder.nextLine();
        builder.append(trace);
        builder.nextLine();
        builder.append("Trace categories");
        builder.nextLine();
        builder.append("");
        builder.nextRow(-2);
        CellConstraints cc = new CellConstraints();
        JScrollPane scrollPane = new JScrollPane(traceCategories);
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 1, 3));
        builder.nextRow(2);
        builder.nextLine();

        JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
        buttonBar.setBorder(Borders.DIALOG);

        java.awt.Container contentPane = getContentPane();
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
        contentPane.add(builder.getPanel());
        contentPane.add(buttonBar);

        pack();
        setResizable(false);
        setLocationRelativeTo(dialog);
        setVisible(true);
    }
}