Package org.rioproject.tools.ui.browser

Source Code of org.rioproject.tools.ui.browser.ServiceUIHelper$JComponentFrame

/*
* 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.tools.ui.browser;

import net.jini.core.lookup.ServiceItem;
import net.jini.lookup.entry.UIDescriptor;
import net.jini.lookup.ui.factory.JComponentFactory;
import net.jini.lookup.ui.factory.JDialogFactory;
import net.jini.lookup.ui.factory.JFrameFactory;
import net.jini.lookup.ui.factory.JWindowFactory;
import org.rioproject.ui.Util;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
* utility to help using service user interface entries.
* @author Dennis Reedy
*/
public class ServiceUIHelper {

    static void handle(final UIDescriptor uiDescriptor, final ServiceItem serviceItem, final Component parent) {
        try {
            Object factory = uiDescriptor.getUIFactory(Thread.currentThread().getContextClassLoader());
            Class factoryClass = factory.getClass();
            if(JFrameFactory.class.isAssignableFrom(factoryClass)) {
                JFrameFactory uiFactory = (JFrameFactory)factory;
                JFrame frame = uiFactory.getJFrame(serviceItem);
                frame.validate();
                frame.setVisible(true);
            }
            else if(JWindowFactory.class.isAssignableFrom(factoryClass)) {
                JWindowFactory uiFactory = (JWindowFactory)factory;
                JWindow window = uiFactory.getJWindow(serviceItem);
                window.validate();
                window.setVisible(true);
            } else if(JComponentFactory.class.isAssignableFrom(factoryClass)) {
                JComponentFactory uiFactory = (JComponentFactory)factory;
                JComponent component = uiFactory.getJComponent(serviceItem);
                String name = component.getAccessibleContext().getAccessibleName();
                if(name==null) {
                    component.getAccessibleContext().setAccessibleName(component.getClass().getName());
                }
                JComponentFrame componentFrame = new JComponentFrame(component, name);
                componentFrame.setLocationRelativeTo(parent);
                componentFrame.setVisible(true);
            } else if(JDialogFactory.class.isAssignableFrom(factoryClass)) {
                JDialogFactory uiFactory = (JDialogFactory)factory;
                JDialog dialog = uiFactory.getJDialog(serviceItem);
                dialog.validate();
                dialog.setVisible(true);
            }
        } catch (Exception e) {
            Util.showError(e, parent, "Service UI Exception");
        }
    }

    static class JComponentFrame extends JFrame {
        public JComponentFrame(JComponent component, String name)  {
            super();
            setTitle("Service UI for "+name);
            Container container = getContentPane();
            if(container!=null)
                container.add(component);
            WindowListener l = new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    dispose();
                }
            };
            addWindowListener(l);
            // Set dimensions and show
            setSize(565, 588);
        }
    }
}
TOP

Related Classes of org.rioproject.tools.ui.browser.ServiceUIHelper$JComponentFrame

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.