Package org.rioproject.ui

Source Code of org.rioproject.ui.Util$DisposeActionListener

/*
* Copyright to the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.rioproject.ui;

import net.jini.admin.Administrable;
import net.jini.io.UnsupportedConstraintException;
import org.rioproject.deploy.DeployAdmin;
import org.rioproject.deploy.ProvisionManager;
import org.rioproject.opstring.OperationalStringException;
import org.rioproject.opstring.OperationalStringManager;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Method;
import java.net.URL;
import java.rmi.RemoteException;

/**
* General utilities for use with a UI component in Rio.
*
* <p>This class is part of the rio-api module because it will be downloaded with service ui
* classes. If we were to put it into the rio-lib module, the rio-lib module would have to
* be declared as part of the codebase (dependencies) of the watch-ui module.
*
* @author Dennis Reedy
*/
public class Util {

    public static OperationalStringManager getOperationalStringManager(final ProvisionManager monitor,
                                                                       final String opStringName)
        throws RemoteException, OperationalStringException {
    if (monitor == null)
      return null;
        DeployAdmin da = (DeployAdmin) ((Administrable)monitor).getAdmin();
        OperationalStringManager mgr = da.getOperationalStringManager(opStringName);
        return(mgr);
    }

    /**
     * If the Container has a dispose method, call it
     *
     * @param comp The Container
     */
    public static void dispose(final Container comp) {
        try {
            Method dispose = comp.getClass().getMethod("dispose");
            dispose.invoke(comp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Get an image as a resource and create an ImageIcon
     *
     * @param location The image icon location
     *
     * @return The corresponding ImageIcon loaded from the location
     */
    public static ImageIcon getImageIcon(final String location) {
        ImageIcon icon = null;
        URL url = Thread.currentThread().getContextClassLoader().getResource(location);
        if (url != null)
            icon = new ImageIcon(url);
        return (icon);
    }

    /**
     * Get an image as a resource and create an ImageIcon
     *
     * @param location The image icon location
     * @param width The scaled width
     * @param height The scaled height
     *
     * @return The corresponding ImageIcon loaded from the location and scaled
     */
    public static ImageIcon getScaledImageIcon(final String location, final int width, final int height) {
        ImageIcon icon = null;
        URL url = Thread.currentThread().getContextClassLoader().getResource(location);
        if (url != null) {
            icon = new ImageIcon(url);
            icon = new ImageIcon(icon.getImage().getScaledInstance(width,
                                                                   height,
                                                                   Image.SCALE_SMOOTH));
        }
        return (icon);
    }

    /**
     * Show an exception in a Dialog
     *
     * @param e The exception
     * @param comp The parent component
     * @param title The title to use
     */
    public static void showError(final Throwable e, final Component comp, final String title) {
        if (e.getCause() != null &&
            e.getCause() instanceof UnsupportedConstraintException) {
            Throwable cause = e.getCause();
            JOptionPane.showMessageDialog(comp,
                                          "<html><font face=monospace><font size=3>" +
                                          "Exception: " +
                                          cause.getClass().getName() +
                                          "<br><br> " +
                                          "You do not have permission to perform " +
                                          "the action" +
                                          "</font></font></html>",
                                          "Action Denied",
                                          JOptionPane.ERROR_MESSAGE);
            return;
        }
        StringBuilder buffer = new StringBuilder();
        Throwable thrown = e;
        if (e.getCause() != null)
            thrown = e.getCause();
        StackTraceElement[] trace = thrown.getStackTrace();
        for (StackTraceElement aTrace : trace)
            buffer.append("&nbsp;&nbsp;&nbsp;&nbsp;at ").append(aTrace).append("<br>");

        showError("<html><font face=monospace><font size=3>" +
                  "Exception : " +
                  thrown.getClass().getName() +
                  " : " +
                  thrown.getLocalizedMessage() +
                  "<br>" +
                  buffer.toString() +
                  "</font></font></html>",
                  comp,
                  title);
    }

    /**
     * Show an error in a Dialog
     *
     * @param text The text to show
     * @param comp The parent component
     * @param title The title to use
     */
    public static void showError(final String text, final Component comp, final String title) {
        JDialog dialog;
        if (comp instanceof Dialog)
            dialog = new JDialog((Dialog) comp);
        else if (comp instanceof Frame)
            dialog = new JDialog((Frame) comp);
        else
            dialog = new JDialog();
        JEditorPane errorPane = new JEditorPane();
        errorPane.setEditable(false);
        errorPane.setContentType("text/html");
        errorPane.setText(text);
        errorPane.setCaretPosition(0);
        errorPane.moveCaretPosition(0);
        JPanel pane = new JPanel();
        pane.setLayout(new BorderLayout(8, 8));
        pane.add(new JScrollPane(errorPane), BorderLayout.CENTER);
        JButton dismiss = new JButton("Close");
        dismiss.addActionListener(new DisposeActionListener(dialog));
        JPanel buttonPane = new JPanel();
        buttonPane.add(dismiss);
        pane.add(buttonPane, BorderLayout.SOUTH);
        dialog.getContentPane().add(pane);
        int width = 650;
        int height = 300;
        dialog.pack();
        dialog.setSize(width, height);
        if(comp==null) {
            Dimension screenSize =
                Toolkit.getDefaultToolkit().getScreenSize();
            int widthLoc = screenSize.width / 2 - width / 2;
            int heightLoc = screenSize.height / 2 - height / 2;
            dialog.setLocation(widthLoc, heightLoc);
        } else {
            dialog.setLocationRelativeTo(comp);
        }
        dialog.setTitle(title);
        dialog.setVisible(true);
    }

    public static class DisposeActionListener implements ActionListener {
        JDialog dialog;

        public DisposeActionListener(final JDialog dialog) {
            this.dialog = dialog;
        }

        public void actionPerformed(final ActionEvent ae) {
            dialog.dispose();
        }
    }
}
TOP

Related Classes of org.rioproject.ui.Util$DisposeActionListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.