Search in sources :

Example 96 with WindowEvent

use of java.awt.event.WindowEvent in project Smack by igniterealtime.

the class EnhancedDebuggerWindow method createDebug.

/**
     * Creates the main debug window that provides information about Smack and also shows
     * a tab panel for each connection that is being debugged.
     */
@SuppressWarnings({ "rawtypes", "unchecked" })
private void createDebug() {
    frame = new JFrame("Smack Debug Window");
    if (!PERSISTED_DEBUGGER) {
        // Add listener for window closing event
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent evt) {
                rootWindowClosing(evt);
            }
        });
    }
    // We'll arrange the UI into tabs. The last tab contains Smack's information.
    // All the connection debugger tabs will be shown before the Smack info tab. 
    tabbedPane = new JTabbedPane();
    // Create the Smack info panel 
    JPanel informationPanel = new JPanel();
    informationPanel.setLayout(new BoxLayout(informationPanel, BoxLayout.Y_AXIS));
    // Add the Smack version label
    JPanel versionPanel = new JPanel();
    versionPanel.setLayout(new BoxLayout(versionPanel, BoxLayout.X_AXIS));
    versionPanel.setMaximumSize(new Dimension(2000, 31));
    versionPanel.add(new JLabel(" Smack version: "));
    JFormattedTextField field = new JFormattedTextField(SmackConfiguration.getVersion());
    field.setEditable(false);
    field.setBorder(null);
    versionPanel.add(field);
    informationPanel.add(versionPanel);
    // Add the list of installed IQ Providers
    JPanel iqProvidersPanel = new JPanel();
    iqProvidersPanel.setLayout(new GridLayout(1, 1));
    iqProvidersPanel.setBorder(BorderFactory.createTitledBorder("Installed IQ Providers"));
    Vector<String> providers = new Vector<String>();
    for (Object provider : ProviderManager.getIQProviders()) {
        if (provider.getClass() == Class.class) {
            providers.add(((Class<?>) provider).getName());
        } else {
            providers.add(provider.getClass().getName());
        }
    }
    // Sort the collection of providers
    Collections.sort(providers);
    JList list = new JList(providers);
    iqProvidersPanel.add(new JScrollPane(list));
    informationPanel.add(iqProvidersPanel);
    // Add the list of installed Extension Providers
    JPanel extensionProvidersPanel = new JPanel();
    extensionProvidersPanel.setLayout(new GridLayout(1, 1));
    extensionProvidersPanel.setBorder(BorderFactory.createTitledBorder("Installed Extension Providers"));
    providers = new Vector<String>();
    for (Object provider : ProviderManager.getExtensionProviders()) {
        if (provider.getClass() == Class.class) {
            providers.add(((Class<?>) provider).getName());
        } else {
            providers.add(provider.getClass().getName());
        }
    }
    // Sort the collection of providers
    Collections.sort(providers);
    list = new JList(providers);
    extensionProvidersPanel.add(new JScrollPane(list));
    informationPanel.add(extensionProvidersPanel);
    tabbedPane.add("Smack Info", informationPanel);
    // Add pop-up menu.
    JPopupMenu menu = new JPopupMenu();
    // Add a menu item that allows to close the current selected tab
    JMenuItem menuItem = new JMenuItem("Close");
    menuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // Remove the selected tab pane if it's not the Smack info pane
            if (tabbedPane.getSelectedIndex() < tabbedPane.getComponentCount() - 1) {
                int index = tabbedPane.getSelectedIndex();
                // Notify to the debugger to stop debugging
                EnhancedDebugger debugger = debuggers.get(index);
                debugger.cancel();
                // Remove the debugger from the root window
                tabbedPane.remove(debugger.tabbedPane);
                debuggers.remove(debugger);
                // Update the root window title
                frame.setTitle("Smack Debug Window -- Total connections: " + (tabbedPane.getComponentCount() - 1));
            }
        }
    });
    menu.add(menuItem);
    // Add a menu item that allows to close all the tabs that have their connections closed
    menuItem = new JMenuItem("Close All Not Active");
    menuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            ArrayList<EnhancedDebugger> debuggersToRemove = new ArrayList<EnhancedDebugger>();
            // Remove all the debuggers of which their connections are no longer valid
            for (int index = 0; index < tabbedPane.getComponentCount() - 1; index++) {
                EnhancedDebugger debugger = debuggers.get(index);
                if (!debugger.isConnectionActive()) {
                    // Notify to the debugger to stop debugging
                    debugger.cancel();
                    debuggersToRemove.add(debugger);
                }
            }
            for (EnhancedDebugger debugger : debuggersToRemove) {
                // Remove the debugger from the root window
                tabbedPane.remove(debugger.tabbedPane);
                debuggers.remove(debugger);
            }
            // Update the root window title
            frame.setTitle("Smack Debug Window -- Total connections: " + (tabbedPane.getComponentCount() - 1));
        }
    });
    menu.add(menuItem);
    // Add listener to the text area so the popup menu can come up.
    tabbedPane.addMouseListener(new PopupListener(menu));
    frame.getContentPane().add(tabbedPane);
    frame.setSize(650, 400);
    if (!PERSISTED_DEBUGGER) {
        frame.setVisible(true);
    }
}
Also used : JPanel(javax.swing.JPanel) ActionEvent(java.awt.event.ActionEvent) JTabbedPane(javax.swing.JTabbedPane) BoxLayout(javax.swing.BoxLayout) ArrayList(java.util.ArrayList) WindowAdapter(java.awt.event.WindowAdapter) GridLayout(java.awt.GridLayout) JFrame(javax.swing.JFrame) JMenuItem(javax.swing.JMenuItem) Vector(java.util.Vector) JScrollPane(javax.swing.JScrollPane) JFormattedTextField(javax.swing.JFormattedTextField) JLabel(javax.swing.JLabel) Dimension(java.awt.Dimension) JPopupMenu(javax.swing.JPopupMenu) ActionListener(java.awt.event.ActionListener) WindowEvent(java.awt.event.WindowEvent) JList(javax.swing.JList)

Example 97 with WindowEvent

use of java.awt.event.WindowEvent in project Smack by igniterealtime.

the class LiteDebugger method createDebug.

/**
     * Creates the debug process, which is a GUI window that displays XML traffic.
     */
private void createDebug() {
    frame = new JFrame("Smack Debug Window -- " + connection.getXMPPServiceDomain() + ":" + connection.getPort());
    // Add listener for window closing event 
    frame.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent evt) {
            rootWindowClosing(evt);
        }
    });
    // We'll arrange the UI into four tabs. The first tab contains all data, the second
    // client generated XML, the third server generated XML, and the fourth is packet
    // data from the server as seen by Smack.
    JTabbedPane tabbedPane = new JTabbedPane();
    JPanel allPane = new JPanel();
    allPane.setLayout(new GridLayout(3, 1));
    tabbedPane.add("All", allPane);
    // Create UI elements for client generated XML traffic.
    final JTextArea sentText1 = new JTextArea();
    final JTextArea sentText2 = new JTextArea();
    sentText1.setEditable(false);
    sentText2.setEditable(false);
    sentText1.setForeground(new Color(112, 3, 3));
    sentText2.setForeground(new Color(112, 3, 3));
    allPane.add(new JScrollPane(sentText1));
    tabbedPane.add("Sent", new JScrollPane(sentText2));
    // Add pop-up menu.
    JPopupMenu menu = new JPopupMenu();
    JMenuItem menuItem1 = new JMenuItem("Copy");
    menuItem1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // Get the clipboard
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            // Set the sent text as the new content of the clipboard
            clipboard.setContents(new StringSelection(sentText1.getText()), null);
        }
    });
    JMenuItem menuItem2 = new JMenuItem("Clear");
    menuItem2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            sentText1.setText("");
            sentText2.setText("");
        }
    });
    // Add listener to the text area so the popup menu can come up.
    MouseListener popupListener = new PopupListener(menu);
    sentText1.addMouseListener(popupListener);
    sentText2.addMouseListener(popupListener);
    menu.add(menuItem1);
    menu.add(menuItem2);
    // Create UI elements for server generated XML traffic.
    final JTextArea receivedText1 = new JTextArea();
    final JTextArea receivedText2 = new JTextArea();
    receivedText1.setEditable(false);
    receivedText2.setEditable(false);
    receivedText1.setForeground(new Color(6, 76, 133));
    receivedText2.setForeground(new Color(6, 76, 133));
    allPane.add(new JScrollPane(receivedText1));
    tabbedPane.add("Received", new JScrollPane(receivedText2));
    // Add pop-up menu.
    menu = new JPopupMenu();
    menuItem1 = new JMenuItem("Copy");
    menuItem1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // Get the clipboard
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            // Set the sent text as the new content of the clipboard
            clipboard.setContents(new StringSelection(receivedText1.getText()), null);
        }
    });
    menuItem2 = new JMenuItem("Clear");
    menuItem2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            receivedText1.setText("");
            receivedText2.setText("");
        }
    });
    // Add listener to the text area so the popup menu can come up.
    popupListener = new PopupListener(menu);
    receivedText1.addMouseListener(popupListener);
    receivedText2.addMouseListener(popupListener);
    menu.add(menuItem1);
    menu.add(menuItem2);
    // Create UI elements for interpreted XML traffic.
    final JTextArea interpretedText1 = new JTextArea();
    final JTextArea interpretedText2 = new JTextArea();
    interpretedText1.setEditable(false);
    interpretedText2.setEditable(false);
    interpretedText1.setForeground(new Color(1, 94, 35));
    interpretedText2.setForeground(new Color(1, 94, 35));
    allPane.add(new JScrollPane(interpretedText1));
    tabbedPane.add("Interpreted", new JScrollPane(interpretedText2));
    // Add pop-up menu.
    menu = new JPopupMenu();
    menuItem1 = new JMenuItem("Copy");
    menuItem1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // Get the clipboard
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            // Set the sent text as the new content of the clipboard
            clipboard.setContents(new StringSelection(interpretedText1.getText()), null);
        }
    });
    menuItem2 = new JMenuItem("Clear");
    menuItem2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            interpretedText1.setText("");
            interpretedText2.setText("");
        }
    });
    // Add listener to the text area so the popup menu can come up.
    popupListener = new PopupListener(menu);
    interpretedText1.addMouseListener(popupListener);
    interpretedText2.addMouseListener(popupListener);
    menu.add(menuItem1);
    menu.add(menuItem2);
    frame.getContentPane().add(tabbedPane);
    frame.setSize(550, 400);
    frame.setVisible(true);
    // Create a special Reader that wraps the main Reader and logs data to the GUI.
    ObservableReader debugReader = new ObservableReader(reader);
    readerListener = new ReaderListener() {

        @Override
        public void read(String str) {
            int index = str.lastIndexOf(">");
            if (index != -1) {
                receivedText1.append(str.substring(0, index + 1));
                receivedText2.append(str.substring(0, index + 1));
                receivedText1.append(NEWLINE);
                receivedText2.append(NEWLINE);
                if (str.length() > index) {
                    receivedText1.append(str.substring(index + 1));
                    receivedText2.append(str.substring(index + 1));
                }
            } else {
                receivedText1.append(str);
                receivedText2.append(str);
            }
        }
    };
    debugReader.addReaderListener(readerListener);
    // Create a special Writer that wraps the main Writer and logs data to the GUI.
    ObservableWriter debugWriter = new ObservableWriter(writer);
    writerListener = new WriterListener() {

        @Override
        public void write(String str) {
            sentText1.append(str);
            sentText2.append(str);
            if (str.endsWith(">")) {
                sentText1.append(NEWLINE);
                sentText2.append(NEWLINE);
            }
        }
    };
    debugWriter.addWriterListener(writerListener);
    // Assign the reader/writer objects to use the debug versions. The packet reader
    // and writer will use the debug versions when they are created.
    reader = debugReader;
    writer = debugWriter;
    // Create a thread that will listen for all incoming packets and write them to
    // the GUI. This is what we call "interpreted" packet data, since it's the packet
    // data as Smack sees it and not as it's coming in as raw XML.
    listener = new StanzaListener() {

        @Override
        public void processStanza(Stanza packet) {
            interpretedText1.append(packet.toXML().toString());
            interpretedText2.append(packet.toXML().toString());
            interpretedText1.append(NEWLINE);
            interpretedText2.append(NEWLINE);
        }
    };
}
Also used : JPanel(javax.swing.JPanel) JTextArea(javax.swing.JTextArea) ActionEvent(java.awt.event.ActionEvent) JTabbedPane(javax.swing.JTabbedPane) WindowAdapter(java.awt.event.WindowAdapter) StanzaListener(org.jivesoftware.smack.StanzaListener) StringSelection(java.awt.datatransfer.StringSelection) GridLayout(java.awt.GridLayout) MouseListener(java.awt.event.MouseListener) JFrame(javax.swing.JFrame) ObservableWriter(org.jivesoftware.smack.util.ObservableWriter) JMenuItem(javax.swing.JMenuItem) ReaderListener(org.jivesoftware.smack.util.ReaderListener) JScrollPane(javax.swing.JScrollPane) ObservableReader(org.jivesoftware.smack.util.ObservableReader) Color(java.awt.Color) WriterListener(org.jivesoftware.smack.util.WriterListener) Stanza(org.jivesoftware.smack.packet.Stanza) JPopupMenu(javax.swing.JPopupMenu) ActionListener(java.awt.event.ActionListener) WindowEvent(java.awt.event.WindowEvent) Clipboard(java.awt.datatransfer.Clipboard)

Example 98 with WindowEvent

use of java.awt.event.WindowEvent in project Smack by igniterealtime.

the class ScreenShareSession method initialize.

/**
     * Initialize the screen share channels.
     */
@Override
public void initialize() {
    JingleSession session = getJingleSession();
    if ((session != null) && (session.getInitiator().equals(session.getConnection().getUser()))) {
        // If the initiator of the jingle session is us then we transmit a screen share.
        try {
            InetAddress remote = InetAddress.getByName(getRemote().getIp());
            transmitter = new ImageTransmitter(new DatagramSocket(getLocal().getPort()), remote, getRemote().getPort(), new Rectangle(0, 0, width, height));
        } catch (Exception e) {
            LOGGER.log(Level.WARNING, "exception", e);
        }
    } else {
        // Otherwise we receive a screen share.
        JFrame window = new JFrame();
        JPanel jp = new JPanel();
        window.add(jp);
        window.setLocation(0, 0);
        window.setSize(600, 600);
        window.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosed(WindowEvent e) {
                receiver.stop();
            }
        });
        try {
            receiver = new ImageReceiver(InetAddress.getByName("0.0.0.0"), getRemote().getPort(), getLocal().getPort(), width, height);
            LOGGER.fine("Receiving on:" + receiver.getLocalPort());
        } catch (UnknownHostException e) {
            LOGGER.log(Level.WARNING, "exception", e);
        }
        jp.add(receiver);
        receiver.setVisible(true);
        window.setAlwaysOnTop(true);
        window.setVisible(true);
    }
}
Also used : JPanel(javax.swing.JPanel) ImageTransmitter(org.jivesoftware.smackx.jingleold.mediaimpl.sshare.api.ImageTransmitter) UnknownHostException(java.net.UnknownHostException) Rectangle(java.awt.Rectangle) JingleSession(org.jivesoftware.smackx.jingleold.JingleSession) WindowAdapter(java.awt.event.WindowAdapter) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) ImageReceiver(org.jivesoftware.smackx.jingleold.mediaimpl.sshare.api.ImageReceiver) DatagramSocket(java.net.DatagramSocket) JFrame(javax.swing.JFrame) WindowEvent(java.awt.event.WindowEvent) InetAddress(java.net.InetAddress)

Example 99 with WindowEvent

use of java.awt.event.WindowEvent in project jmonkeyengine by jMonkeyEngine.

the class JoglDisplay method applySettings.

protected void applySettings(AppSettings settings) {
    final boolean isDisplayModeModified;
    final GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
    // Get the current display mode
    final DisplayMode previousDisplayMode = gd.getDisplayMode();
    // Handle full screen mode if requested.
    if (settings.isFullscreen()) {
        frame.setUndecorated(true);
        // Check if the full-screen mode is supported by the OS
        boolean isFullScreenSupported = gd.isFullScreenSupported();
        if (isFullScreenSupported) {
            gd.setFullScreenWindow(frame);
            // Check if display mode changes are supported by the OS
            if (gd.isDisplayChangeSupported()) {
                // Get all available display modes
                final DisplayMode[] displayModes = gd.getDisplayModes();
                DisplayMode multiBitsDepthSupportedDisplayMode = null;
                DisplayMode refreshRateUnknownDisplayMode = null;
                DisplayMode multiBitsDepthSupportedAndRefreshRateUnknownDisplayMode = null;
                DisplayMode matchingDisplayMode = null;
                DisplayMode currentDisplayMode;
                // that matches exactly with your parameters
                for (int i = 0; i < displayModes.length && matchingDisplayMode == null; i++) {
                    currentDisplayMode = displayModes[i];
                    if (currentDisplayMode.getWidth() == settings.getWidth() && currentDisplayMode.getHeight() == settings.getHeight()) {
                        if (currentDisplayMode.getBitDepth() == settings.getBitsPerPixel()) {
                            if (currentDisplayMode.getRefreshRate() == settings.getFrequency()) {
                                matchingDisplayMode = currentDisplayMode;
                            } else if (currentDisplayMode.getRefreshRate() == DisplayMode.REFRESH_RATE_UNKNOWN) {
                                refreshRateUnknownDisplayMode = currentDisplayMode;
                            }
                        } else if (currentDisplayMode.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) {
                            if (currentDisplayMode.getRefreshRate() == settings.getFrequency()) {
                                multiBitsDepthSupportedDisplayMode = currentDisplayMode;
                            } else if (currentDisplayMode.getRefreshRate() == DisplayMode.REFRESH_RATE_UNKNOWN) {
                                multiBitsDepthSupportedAndRefreshRateUnknownDisplayMode = currentDisplayMode;
                            }
                        }
                    }
                }
                DisplayMode nextDisplayMode = null;
                if (matchingDisplayMode != null) {
                    nextDisplayMode = matchingDisplayMode;
                } else if (multiBitsDepthSupportedDisplayMode != null) {
                    nextDisplayMode = multiBitsDepthSupportedDisplayMode;
                } else if (refreshRateUnknownDisplayMode != null) {
                    nextDisplayMode = refreshRateUnknownDisplayMode;
                } else if (multiBitsDepthSupportedAndRefreshRateUnknownDisplayMode != null) {
                    nextDisplayMode = multiBitsDepthSupportedAndRefreshRateUnknownDisplayMode;
                } else {
                    isFullScreenSupported = false;
                }
                // with the input parameters, use it
                if (nextDisplayMode != null) {
                    gd.setDisplayMode(nextDisplayMode);
                    isDisplayModeModified = true;
                } else {
                    isDisplayModeModified = false;
                }
            } else {
                isDisplayModeModified = false;
                // Resize the canvas if the display mode cannot be changed
                // and the screen size is not equal to the canvas size
                final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                if (screenSize.width != settings.getWidth() || screenSize.height != settings.getHeight()) {
                    canvas.setSize(screenSize);
                }
            }
        } else {
            isDisplayModeModified = false;
        }
        // Software windowed full-screen mode
        if (!isFullScreenSupported) {
            final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            // Resize the canvas
            canvas.setSize(screenSize);
            // Resize the frame so that it occupies the whole screen
            frame.setSize(screenSize);
            // Set its location at the top left corner
            frame.setLocation(0, 0);
        }
    } else // Otherwise, center the window on the screen.
    {
        isDisplayModeModified = false;
        frame.pack();
        int x, y;
        x = (Toolkit.getDefaultToolkit().getScreenSize().width - settings.getWidth()) / 2;
        y = (Toolkit.getDefaultToolkit().getScreenSize().height - settings.getHeight()) / 2;
        frame.setLocation(x, y);
    }
    frame.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent evt) {
            // If required, restore the previous display mode
            if (isDisplayModeModified) {
                gd.setDisplayMode(previousDisplayMode);
            }
            // If required, get back to the windowed mode
            if (gd.getFullScreenWindow() == frame) {
                gd.setFullScreenWindow(null);
            }
            windowCloseRequest.set(true);
        }

        @Override
        public void windowActivated(WindowEvent evt) {
            active.set(true);
        }

        @Override
        public void windowDeactivated(WindowEvent evt) {
            active.set(false);
        }
    });
    logger.log(Level.FINE, "Selected display mode: {0}x{1}x{2} @{3}", new Object[] { gd.getDisplayMode().getWidth(), gd.getDisplayMode().getHeight(), gd.getDisplayMode().getBitDepth(), gd.getDisplayMode().getRefreshRate() });
}
Also used : DisplayMode(java.awt.DisplayMode) GraphicsDevice(java.awt.GraphicsDevice) WindowEvent(java.awt.event.WindowEvent) WindowAdapter(java.awt.event.WindowAdapter) Dimension(java.awt.Dimension)

Example 100 with WindowEvent

use of java.awt.event.WindowEvent in project languagetool by languagetool-org.

the class FontChooser method initComponents.

private void initComponents() {
    KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
    getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke, "Hide");
    getRootPane().getActionMap().put("Hide", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectedFont = null;
            setVisible(false);
        }
    });
    this.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            selectedFont = null;
            setVisible(false);
        }
    });
    setTitle(messages.getString("FontChooser.title"));
    fontStylesArray = new String[] { messages.getString("FontChooser.style.plain"), messages.getString("FontChooser.style.bold"), messages.getString("FontChooser.style.italic"), messages.getString("FontChooser.style.bold_italic") };
    String[] fontNamesArray = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    getContentPane().setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.insets = new Insets(4, 4, 4, 4);
    JPanel fontPanel = new JPanel(new GridBagLayout());
    c.gridx = 0;
    c.gridy = 0;
    c.fill = GridBagConstraints.HORIZONTAL;
    JLabel fontNameLabel = new JLabel(messages.getString("FontChooser.label.name"));
    fontPanel.add(fontNameLabel, c);
    c.gridx = 1;
    c.gridy = 0;
    JLabel fontStyleLabel = new JLabel(messages.getString("FontChooser.label.style"));
    fontPanel.add(fontStyleLabel, c);
    c.gridx = 2;
    c.gridy = 0;
    JLabel fontSizeLabel = new JLabel(messages.getString("FontChooser.label.size"));
    fontPanel.add(fontSizeLabel, c);
    c.gridx = 0;
    c.gridy = 1;
    c.weightx = 1.0;
    c.fill = GridBagConstraints.HORIZONTAL;
    fontNameTextField = new JTextField();
    fontNameTextField.setEnabled(false);
    fontNameTextField.getDocument().addDocumentListener(this);
    fontPanel.add(fontNameTextField, c);
    c.weightx = 0.0;
    c.gridx = 1;
    c.gridy = 1;
    fontStyleTextField = new JTextField();
    fontStyleTextField.setEnabled(false);
    fontStyleTextField.getDocument().addDocumentListener(this);
    fontPanel.add(fontStyleTextField, c);
    c.gridx = 2;
    c.gridy = 1;
    fontSizeTextField = new JTextField();
    fontSizeTextField.setColumns(4);
    fontSizeTextField.getDocument().addDocumentListener(this);
    fontPanel.add(fontSizeTextField, c);
    c.gridx = 0;
    c.gridy = 2;
    c.weightx = 1.0;
    c.weighty = 1;
    c.fill = GridBagConstraints.BOTH;
    fontNameList = new JList<>(fontNamesArray);
    fontNameList.addListSelectionListener(this);
    fontNameList.setVisibleRowCount(5);
    fontNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JScrollPane fontNameListPane = new JScrollPane(fontNameList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    fontPanel.add(fontNameListPane, c);
    c.gridx = 1;
    c.gridy = 2;
    c.weightx = 0.5;
    fontStyleList = new JList<>(fontStylesArray);
    fontStyleList.addListSelectionListener(this);
    fontStyleList.setVisibleRowCount(5);
    fontStyleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JScrollPane fontStyleListPane = new JScrollPane(fontStyleList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    fontPanel.add(fontStyleListPane, c);
    c.gridx = 2;
    c.gridy = 2;
    fontSizeList = new JList<>(fontSizesArray);
    fontSizeList.addListSelectionListener(this);
    fontSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    fontSizeList.setVisibleRowCount(5);
    JScrollPane fontSizeListPane = new JScrollPane(fontSizeList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    fontPanel.add(fontSizeListPane, c);
    c.insets = new Insets(8, 8, 4, 8);
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 0.0;
    c.weighty = 0.4;
    getContentPane().add(fontPanel, c);
    c.insets = new Insets(4, 8, 4, 8);
    c.gridx = 0;
    c.gridy = 1;
    c.weightx = 1.0;
    c.weighty = 0.6;
    previewArea = new JTextArea(messages.getString("FontChooser.pangram"));
    previewArea.setLineWrap(true);
    previewArea.setRows(4);
    JScrollPane pane = new JScrollPane(previewArea);
    TitledBorder border = BorderFactory.createTitledBorder(messages.getString("FontChooser.preview"));
    pane.setBorder(border);
    getContentPane().add(pane, c);
    JPanel buttonPanel = new JPanel(new GridBagLayout());
    c.insets = new Insets(4, 4, 4, 4);
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 1.0;
    c.weighty = 0.0;
    c.anchor = GridBagConstraints.LINE_START;
    c.fill = GridBagConstraints.NONE;
    JButton resetButton = new JButton(Tools.getLabel(messages.getString("FontChooser.reset")));
    resetButton.setMnemonic(Tools.getMnemonic(messages.getString("FontChooser.reset")));
    resetButton.setActionCommand(ACTION_COMMAND_RESET);
    resetButton.addActionListener(this);
    buttonPanel.add(resetButton, c);
    c.gridx = 1;
    c.gridy = 0;
    c.weightx = 0.0;
    c.weighty = 0.0;
    c.anchor = GridBagConstraints.LINE_END;
    c.fill = GridBagConstraints.NONE;
    JButton cancelButton = new JButton(Tools.getLabel(messages.getString("guiCancelButton")));
    cancelButton.setMnemonic(Tools.getMnemonic(messages.getString("guiCancelButton")));
    cancelButton.setActionCommand(ACTION_COMMAND_CANCEL);
    cancelButton.addActionListener(this);
    buttonPanel.add(cancelButton, c);
    c.gridx = 2;
    c.gridy = 0;
    JButton okButton = new JButton(Tools.getLabel(messages.getString("guiOKButton")));
    okButton.setMnemonic(Tools.getMnemonic(messages.getString("guiOKButton")));
    okButton.setActionCommand(ACTION_COMMAND_OK);
    okButton.addActionListener(this);
    buttonPanel.add(okButton, c);
    c.insets = new Insets(4, 8, 8, 8);
    c.gridx = 0;
    c.gridy = 2;
    c.anchor = GridBagConstraints.LINE_START;
    c.fill = GridBagConstraints.HORIZONTAL;
    getContentPane().add(buttonPanel, c);
    this.defaultFont = previewArea.getFont();
    setDefaultFont();
    getRootPane().setDefaultButton(cancelButton);
    this.applyComponentOrientation(ComponentOrientation.getOrientation(Locale.getDefault()));
    pack();
}
Also used : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) GridBagConstraints(java.awt.GridBagConstraints) Insets(java.awt.Insets) JTextArea(javax.swing.JTextArea) GridBagLayout(java.awt.GridBagLayout) ActionEvent(java.awt.event.ActionEvent) JButton(javax.swing.JButton) WindowAdapter(java.awt.event.WindowAdapter) JLabel(javax.swing.JLabel) JTextField(javax.swing.JTextField) TitledBorder(javax.swing.border.TitledBorder) WindowEvent(java.awt.event.WindowEvent) KeyStroke(javax.swing.KeyStroke) AbstractAction(javax.swing.AbstractAction)

Aggregations

WindowEvent (java.awt.event.WindowEvent)184 WindowAdapter (java.awt.event.WindowAdapter)128 JPanel (javax.swing.JPanel)41 JButton (javax.swing.JButton)38 BorderLayout (java.awt.BorderLayout)35 JFrame (javax.swing.JFrame)35 Dimension (java.awt.Dimension)31 ActionEvent (java.awt.event.ActionEvent)31 JLabel (javax.swing.JLabel)30 JScrollPane (javax.swing.JScrollPane)25 ActionListener (java.awt.event.ActionListener)23 GridBagConstraints (java.awt.GridBagConstraints)19 GridBagLayout (java.awt.GridBagLayout)19 FlowLayout (java.awt.FlowLayout)17 Insets (java.awt.Insets)14 Frame (java.awt.Frame)12 JTextArea (javax.swing.JTextArea)12 Container (java.awt.Container)11 JDialog (javax.swing.JDialog)11 IOException (java.io.IOException)9