Package com.cburch.logisim.gui.prefs

Source Code of com.cburch.logisim.gui.prefs.PreferencesFrame$MyListener

/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.logisim.gui.prefs;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

import com.cburch.logisim.gui.generic.LFrame;
import com.cburch.logisim.gui.menu.LogisimMenuBar;
import com.cburch.logisim.util.LocaleListener;
import com.cburch.logisim.util.LocaleManager;
import com.cburch.logisim.util.WindowMenuItemManager;
import static com.cburch.logisim.util.LocaleString.*;

@SuppressWarnings("serial")
public class PreferencesFrame extends LFrame {
    private static WindowMenuManager MENU_MANAGER = null;

    public static void initializeManager() {
        MENU_MANAGER = new WindowMenuManager();
    }

    private static class WindowMenuManager extends WindowMenuItemManager
            implements LocaleListener {
        private PreferencesFrame window = null;

        WindowMenuManager() {
            super(getFromLocale("preferencesFrameMenuItem"), true);
            LocaleManager.addLocaleListener(this);
        }

        @Override
        public JFrame getJFrame(boolean create) {
            if (create) {
                if (window == null) {
                    window = new PreferencesFrame();
                    frameOpened(window);
                }
            }
            return window;
        }

        @Override
        public void localeChanged() {
            setText(getFromLocale("preferencesFrameMenuItem"));
        }
    }

    private class MyListener
            implements ActionListener, LocaleListener {
        @Override
        public void actionPerformed(ActionEvent event) {
            Object src = event.getSource();
            if (src == close) {
                WindowEvent e = new WindowEvent(PreferencesFrame.this,
                        WindowEvent.WINDOW_CLOSING);
                PreferencesFrame.this.processWindowEvent(e);
            }
        }

        @Override
        public void localeChanged() {
            setTitle(getFromLocale("preferencesFrameTitle"));
            for (int i = 0; i < panels.length; i++) {
                tabbedPane.setTitleAt(i, panels[i].getTitle());
                tabbedPane.setToolTipTextAt(i, panels[i].getToolTipText());
                panels[i].localeChanged();
            }
            close.setText(getFromLocale("closeButton"));
        }
    }

    private MyListener myListener = new MyListener();

    private OptionsPanel[] panels;
    private JTabbedPane tabbedPane;
    private JButton close = new JButton();

    private PreferencesFrame() {
        setDefaultCloseOperation(HIDE_ON_CLOSE);
        setJMenuBar(new LogisimMenuBar(this, null));

        panels = new OptionsPanel[] {
                new TemplateOptions(this),
                new IntlOptions(this),
                new WindowOptions(this),
                new LayoutOptions(this),
                new ExperimentalOptions(this),
        };
        tabbedPane = new JTabbedPane();
        int intlIndex = -1;
        for (int index = 0; index < panels.length; index++) {
            OptionsPanel panel = panels[index];
            tabbedPane.addTab(panel.getTitle(), null, panel, panel.getToolTipText());
            if (panel instanceof IntlOptions) {
                intlIndex = index;
            }

        }

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(close);
        close.addActionListener(myListener);

        Container contents = getContentPane();
        tabbedPane.setPreferredSize(new Dimension(450, 300));
        contents.add(tabbedPane, BorderLayout.CENTER);
        contents.add(buttonPanel, BorderLayout.SOUTH);

        if (intlIndex >= 0) {
            tabbedPane.setSelectedIndex(intlIndex);
        }


        LocaleManager.addLocaleListener(myListener);
        myListener.localeChanged();
        pack();
    }

    public static void showPreferences() {
        JFrame frame = MENU_MANAGER.getJFrame(true);
        frame.setVisible(true);
    }
}
TOP

Related Classes of com.cburch.logisim.gui.prefs.PreferencesFrame$MyListener

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.