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

Java tutorial

Introduction

Here is the source code for com.zeroc.IceGridGUI.LiveDeployment.RegistryEditor.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.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;

import com.zeroc.IceGrid.*;
import com.zeroc.IceGridGUI.*;

class RegistryEditor extends Editor {
    RegistryEditor() {
        _hostname.setEditable(false);

        Action openDefinition = new AbstractAction("Open definition") {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedRow = _applications.getSelectedRow();
                if (selectedRow != -1) {
                    String appName = (String) _applications.getValueAt(selectedRow, 0);
                    ApplicationPane app = _target.getCoordinator().openLiveApplication(appName);

                    if (app != null && app.getRoot().getSelectedNode() == null) {
                        app.getRoot().setSelectedNode(app.getRoot());
                    }
                }
            }
        };

        Action showDetails = new AbstractAction("Show details") {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedRow = _applications.getSelectedRow();
                if (selectedRow != -1) {
                    String appName = (String) _applications.getValueAt(selectedRow, 0);
                    _target.showApplicationDetails(appName);
                }
            }
        };

        final Action patch = new AbstractAction("Patch distribution") {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedRow = _applications.getSelectedRow();
                if (selectedRow != -1) {
                    String appName = (String) _applications.getValueAt(selectedRow, 0);
                    _target.patch(appName);
                }
            }
        };

        Action removeApplication = new AbstractAction("Remove from registry") {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedRow = _applications.getSelectedRow();
                if (selectedRow != -1) {
                    String appName = (String) _applications.getValueAt(selectedRow, 0);

                    int confirm = JOptionPane.showConfirmDialog(
                            _target.getCoordinator().getMainFrame(), "You are about to remove application '"
                                    + appName + "' from the IceGrid registry. " + "Do you want to proceed?",
                            "Remove Confirmation", JOptionPane.YES_NO_OPTION);

                    if (confirm == JOptionPane.YES_OPTION) {
                        _target.getCoordinator().removeApplicationFromRegistry(appName);
                    }
                }
            }
        };

        removeApplication.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("DELETE"));

        _applications.getActionMap().put("delete", removeApplication);
        _applications.getInputMap().put(KeyStroke.getKeyStroke("DELETE"), "delete");

        final JPopupMenu appPopup = new JPopupMenu();
        appPopup.add(openDefinition);
        appPopup.add(showDetails);
        appPopup.addSeparator();
        appPopup.add(patch);
        appPopup.addSeparator();
        appPopup.add(removeApplication);

        _applications.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    int selectedRow = _applications.getSelectedRow();
                    if (selectedRow != -1) {
                        String appName = (String) _applications.getValueAt(selectedRow, 0);
                        _target.showApplicationDetails(appName);
                    }
                }
            }

            @Override
            public void mousePressed(MouseEvent e) {
                maybeShowPopup(e);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                maybeShowPopup(e);
            }

            private void maybeShowPopup(MouseEvent e) {
                int selectedRow = _applications.getSelectedRow();
                if (e.isPopupTrigger() && selectedRow != -1) {
                    String appName = (String) _applications.getValueAt(selectedRow, 0);
                    ApplicationDescriptor desc = _target.getApplicationDescriptor(appName);
                    patch.setEnabled(desc != null && desc.distrib.icepatch.length() > 0);
                    appPopup.show(_applications, e.getX(), e.getY());
                }
            }
        });

        Action deleteObject = new AbstractAction("Remove selected object") {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (_target.getCoordinator().connectedToMaster()) {
                    int selectedRow = _objects.getSelectedRow();
                    if (selectedRow != -1) {
                        _target.removeObject((String) _objects.getValueAt(selectedRow, 0));
                    }
                }
            }
        };
        deleteObject.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("DELETE"));

        _objects.getActionMap().put("delete", deleteObject);
        _objects.getInputMap().put(KeyStroke.getKeyStroke("DELETE"), "delete");

        Action showObject = new AbstractAction("Show details") {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedRow = _objects.getSelectedRow();
                if (selectedRow != -1) {
                    String proxy = (String) _objects.getValueAt(selectedRow, 0);
                    String type = (String) _objects.getValueAt(selectedRow, 1);
                    _target.showObject(proxy, type);
                }
            }
        };

        Action addObject = new AbstractAction("Add a new well-known object") {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (_target.getCoordinator().connectedToMaster()) {
                    _target.addObject();
                }
            }
        };
        addObject.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("INSERT"));

        _objects.getActionMap().put("insert", addObject);
        _objects.getInputMap().put(KeyStroke.getKeyStroke("INSERT"), "insert");

        _objects.setToolTipText("<html>Well-known objects registered through the Admin interface.<br>"
                + "Well-known objects registered using Adapter or Replica Group<br>"
                + "definitions are not displayed here.</html>");

        final JPopupMenu objectsPopup = new JPopupMenu();
        objectsPopup.add(addObject);
        objectsPopup.addSeparator();
        final JMenuItem deleteObjectMenuItem = objectsPopup.add(deleteObject);
        objectsPopup.addSeparator();
        final JMenuItem showObjectMenuItem = objectsPopup.add(showObject);

        _objects.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    int selectedRow = _objects.getSelectedRow();
                    if (selectedRow != -1) {
                        String proxy = (String) _objects.getValueAt(selectedRow, 0);
                        String type = (String) _objects.getValueAt(selectedRow, 1);
                        _target.showObject(proxy, type);
                    }
                }
            }

            @Override
            public void mousePressed(MouseEvent e) {
                maybeShowPopup(e);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                maybeShowPopup(e);
            }

            private void maybeShowPopup(MouseEvent e) {
                if (e.isPopupTrigger()) {
                    showObjectMenuItem.setEnabled(_objects.getSelectedRow() != -1);
                    deleteObjectMenuItem.setEnabled(_objects.getSelectedRow() != -1);
                    objectsPopup.show(_objects, e.getX(), e.getY());
                }
            }
        });

        Action deleteAdapter = new AbstractAction("Remove selected adapter") {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (_target.getCoordinator().connectedToMaster()) {
                    int selectedRow = _adapters.getSelectedRow();
                    if (selectedRow != -1) {
                        _target.removeAdapter((String) _adapters.getValueAt(selectedRow, 0));
                    }
                }
            }
        };
        deleteAdapter.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("DELETE"));

        _adapters.getActionMap().put("delete", deleteAdapter);
        _adapters.getInputMap().put(KeyStroke.getKeyStroke("DELETE"), "delete");
        _adapters.setToolTipText("<html>Object adapters registered at run time.</html>");

        final JPopupMenu adaptersPopup = new JPopupMenu();
        adaptersPopup.add(deleteAdapter);

        _adapters.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                maybeShowPopup(e);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                maybeShowPopup(e);
            }

            private void maybeShowPopup(MouseEvent e) {
                if (e.isPopupTrigger() && _adapters.getSelectedRow() != -1) {
                    adaptersPopup.show(_adapters, e.getX(), e.getY());
                }
            }
        });
    }

    @Override
    protected void appendProperties(DefaultFormBuilder builder) {
        CellConstraints cc = new CellConstraints();

        builder.append("Hostname");
        builder.append(_hostname, 3);
        builder.nextLine();

        builder.appendSeparator("Deployed Applications");
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextRow(-14);
        JScrollPane scrollPane = new JScrollPane(_applications);
        scrollPane.setToolTipText(_applications.getToolTipText());
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 14));
        builder.nextRow(14);
        builder.nextLine();

        builder.appendSeparator("Dynamic Well-Known Objects");
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextRow(-14);
        scrollPane = new JScrollPane(_objects);
        scrollPane.setToolTipText(_objects.getToolTipText());
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 14));
        builder.nextRow(14);
        builder.nextLine();

        builder.appendSeparator("Dynamic Object Adapters");
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");
        builder.nextRow(-14);
        scrollPane = new JScrollPane(_adapters);
        scrollPane.setToolTipText(_adapters.getToolTipText());
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 14));
        builder.nextRow(14);
        builder.nextLine();
    }

    @Override
    protected void buildPropertiesPanel() {
        super.buildPropertiesPanel();
        _propertiesPanel.setName("Registry Properties");
    }

    void show(Root root) {
        _target = root;
        _hostname.setText(root.getRegistryInfo().hostname);
        _applications.setSortedMap(root.getApplicationMap());
        _objects.setObjects(root.getObjects());
        _adapters.setAdapters(root.getAdapters());
    }

    private JTextField _hostname = new JTextField(20);
    private TableField _applications = new TableField("Name", "Last Update");
    private TableField _objects = new TableField("Proxy", "Type");
    private TableField _adapters = new TableField("ID", "Endpoints", "Replica Group");

    private Root _target;
}