All Downloads are FREE. Search and download functionalities are using the official Maven repository.

admin.astor.tools.PoolThreadsManager Maven / Gradle / Ivy

//+======================================================================
// $Source:  $
//
// Project:   Tango
//
// Description:  java source code for Tango manager tool..
//
// $Author$
//
// Copyright (C) :      2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,
//						European Synchrotron Radiation Facility
//                      BP 220, Grenoble 38043
//                      FRANCE
//
// This file is part of Tango.
//
// Tango is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// Tango is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with Tango.  If not, see .
//
// $Revision$
//
//-======================================================================


package admin.astor.tools;

import admin.astor.TangoHost;
import admin.astor.TangoServer;
import fr.esrf.Tango.DevFailed;
import fr.esrf.TangoDs.Except;
import fr.esrf.tangoatk.widget.util.ATKGraphicsUtils;
import fr.esrf.tangoatk.widget.util.ErrorPane;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;


//===============================================================
/**
 * JDialog Class to display info
 *
 * @author Pascal Verdier
 */
//===============================================================


@SuppressWarnings("MagicConstant")
public class PoolThreadsManager extends JDialog {
    private Window parentWindow;
    private TangoHost host;
    private TangoServer server;
    private PoolThreadsTree tree;

    //===============================================================
    /*
     *	Creates new form PoolThreadsManager
     */
    //===============================================================
    public PoolThreadsManager(Window parent, TangoServer server) throws DevFailed {
        this(parent, null, server);
    }
    //===============================================================
    /*
     *	Creates new form PoolThreadsManager
     */
    //===============================================================
    public PoolThreadsManager(Window parent, TangoHost host, TangoServer server) throws DevFailed {
        super(parent);
        this.parentWindow = parent;
        this.host = host;
        this.server = server;
        createForm();
    }
    //===============================================================
    /*
     *	Creates new form PoolThreadsManager
     */
    //===============================================================
    public PoolThreadsManager(Window parent, String servname) throws DevFailed {
        this(parent, null, servname);
    }
    //===============================================================
    /*
     *	Creates new form PoolThreadsManager
     */
    //===============================================================
    public PoolThreadsManager(Window parent, TangoHost host, String servname) throws DevFailed {
        this(parent, host, new TangoServer(
                (servname.startsWith("dserver/")) ? servname : "dserver/" + servname));
    }
    

    //===============================================================
    //===============================================================
    private void createForm() throws DevFailed {
        initComponents();
        //	Check IDL Version
        int idl;
        try {
            idl = server.get_idl_version();
        } catch (DevFailed e) {
            idl = 0;
        }

        if (idl > 0 && idl < 4)
            Except.throw_non_supported_exception("BAD_IDL_VERSION",
                    "The server is compiled with IDL " + idl +
                            "\nThis feature is allowed only with IDL 4 (TANGO 7) and above",
                    "PoolThreadsManager.PoolThreadsManager()");
        warningTextArea.setVisible(idl == 0);    //	visible if server not running
        initializeTree();

        pack();
        ATKGraphicsUtils.centerDialog(this);
    }

    //===============================================================
    //===============================================================
    private JScrollPane scrollPane = null;

    public void initializeTree() throws DevFailed {
        if (scrollPane == null) {
            scrollPane = new JScrollPane();
            scrollPane.setPreferredSize(new Dimension(350, 400));
            centerPanel.add(scrollPane, BorderLayout.CENTER);
        } else if (tree != null)
            scrollPane.remove(tree);

        //	Build users_tree to display uinfo
        tree = new PoolThreadsTree(this, server);
        scrollPane.setViewportView(tree);

        //	Customize menu
        editMenu.setMnemonic('E');
        newThreadItem.setMnemonic('N');
        removeThreadItem.setMnemonic('R');

        newThreadItem.setAccelerator(KeyStroke.getKeyStroke('N', MouseEvent.CTRL_MASK));
        removeThreadItem.setAccelerator(KeyStroke.getKeyStroke(Event.DELETE, 0));
    }
    //===============================================================
    /**
     * This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //===============================================================
    // //GEN-BEGIN:initComponents
    private void initComponents() {

        javax.swing.JPanel bottomPanel = new javax.swing.JPanel();
        javax.swing.JButton okBtn = new javax.swing.JButton();
        javax.swing.JButton cancelBtn = new javax.swing.JButton();
        centerPanel = new javax.swing.JPanel();
        warningTextArea = new javax.swing.JTextArea();
        javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
        javax.swing.JLabel titleLabel = new javax.swing.JLabel();
        javax.swing.JMenuBar jMenuBar = new javax.swing.JMenuBar();
        editMenu = new javax.swing.JMenu();
        newThreadItem = new javax.swing.JMenuItem();
        removeThreadItem = new javax.swing.JMenuItem();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        okBtn.setText("Apply");
        okBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                okBtnActionPerformed(evt);
            }
        });
        bottomPanel.add(okBtn);

        cancelBtn.setText("Dismiss");
        cancelBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelBtnActionPerformed(evt);
            }
        });
        bottomPanel.add(cancelBtn);

        getContentPane().add(bottomPanel, java.awt.BorderLayout.SOUTH);

        centerPanel.setLayout(new java.awt.BorderLayout());

        warningTextArea.setColumns(20);
        warningTextArea.setEditable(false);
        warningTextArea.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N
        warningTextArea.setRows(3);
        warningTextArea.setText("Warning:\nIDL server cannot be checked.\nThis feature is avalable only for TANGO-7 (or above) servers.");
        centerPanel.add(warningTextArea, java.awt.BorderLayout.SOUTH);

        titleLabel.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        titleLabel.setText("Polling Threads Mangement");
        jPanel1.add(titleLabel);

        centerPanel.add(jPanel1, java.awt.BorderLayout.NORTH);

        getContentPane().add(centerPanel, java.awt.BorderLayout.CENTER);

        editMenu.setText("Edit");

        newThreadItem.setText("New Thread");
        newThreadItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newThreadItemActionPerformed(evt);
            }
        });
        editMenu.add(newThreadItem);

        removeThreadItem.setText("Remove Thread");
        removeThreadItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeThreadItemActionPerformed(evt);
            }
        });
        editMenu.add(removeThreadItem);

        jMenuBar.add(editMenu);

        setJMenuBar(jMenuBar);

        pack();
    }// //GEN-END:initComponents

    //===============================================================
    //===============================================================
    @SuppressWarnings({"UnusedDeclaration"})
    private void removeThreadItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeThreadItemActionPerformed
        if (tree.selectedObjectIsThread())
            tree.removeThread();
    }//GEN-LAST:event_removeThreadItemActionPerformed

    //===============================================================
    //===============================================================
    @SuppressWarnings({"UnusedDeclaration"})
    private void newThreadItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newThreadItemActionPerformed
        tree.addThreadNode();
    }//GEN-LAST:event_newThreadItemActionPerformed

    //===============================================================
    //===============================================================
    @SuppressWarnings({"UnusedDeclaration"})
    private void okBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okBtnActionPerformed

        if (JOptionPane.showConfirmDialog(parentWindow,
                "Apply pool thread configuration to database ?",
                "Confirm Dialog",
                JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) {
            tree.putPoolThreadInfo();
            if (host != null)
                server.restart(parentWindow, host, false);
            else
                JOptionPane.showMessageDialog(this,
                        "Database has been updated.\nRestart the server now.",
                        "Command Done",
                        JOptionPane.INFORMATION_MESSAGE);
        }
    }//GEN-LAST:event_okBtnActionPerformed

    //===============================================================
    //===============================================================
    @SuppressWarnings({"UnusedDeclaration"})
    private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelBtnActionPerformed
        doClose();
    }//GEN-LAST:event_cancelBtnActionPerformed

    //===============================================================
    //===============================================================
    @SuppressWarnings({"UnusedDeclaration"})
    private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
        doClose();
    }//GEN-LAST:event_closeDialog

    //===============================================================
    /**
     * Closes the dialog
     */
    //===============================================================
    private void doClose() {
        if (parentWindow!=null) {
            setVisible(false);
            dispose();
        } else
            System.exit(0);
    }

    //===============================================================
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel centerPanel;
    private javax.swing.JMenu editMenu;
    private javax.swing.JMenuItem newThreadItem;
    private javax.swing.JMenuItem removeThreadItem;
    private javax.swing.JTextArea warningTextArea;
    // End of variables declaration//GEN-END:variables
    //===============================================================


    //===============================================================

    /**
     * @param args the command line arguments
     */
    //===============================================================
    public static void main(String args[]) {

        try {
            if (args.length==0)
                Except.throw_exception("BAD_SYNTAX", "Server name ?",
                        "admin.astor.tools.PoolThreadsManager.main()");
            new PoolThreadsManager((JFrame)null, args[0]).setVisible(true);
//					new TangoHost("esrflinux1-2", true), "dserver/PoolThreadTest/pv").setVisible(true);
        } catch (DevFailed e) {
            ErrorPane.showErrorMessage(new Frame(), "", e);
            System.exit(0);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy