package net.sourceforge.squirrel_sql.client.session.mainpanel.overview; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.WidgetAdapter; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.WidgetEvent; import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.prefs.Preferences; public class OverviewFrame extends DialogWidget { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(OverviewFrame.class); private static final String PREF_KEY_OVERVIEW_FRAME_WIDTH = "Squirrel.overview.FrameWidth"; private static final String PREF_KEY_OVERVIEW_FRAME_HIGHT = "Squirrel.overview.FrameHight"; private JCheckBox _chkOnTop; public OverviewFrame(DataSetViewerTablePanel simpleTable, IApplication app, Window parent) { super(s_stringMgr.getString("OverviewFrame.title"), true, true, true, true, app, parent); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); final Container cont = getContentPane(); cont.setLayout(new BorderLayout()); if (app.getDesktopStyle().supportsLayers()) { JPanel pnlButtons = new JPanel(new GridBagLayout()); GridBagConstraints gbc; // i18n[resultFrame.stayOnTop=Stay on top] _chkOnTop = new JCheckBox(s_stringMgr.getString("OverviewFrame.stayOnTop")); gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); pnlButtons.add(_chkOnTop, gbc); _chkOnTop.setSelected(true); _chkOnTop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onStayOnTopChanged(); } }); gbc = new GridBagConstraints(2,0,1,1,1,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); pnlButtons.add(new JPanel(), gbc); cont.add(pnlButtons, BorderLayout.NORTH); } cont.add(new JScrollPane(simpleTable.getComponent()), BorderLayout.CENTER); int width = Preferences.userRoot().getInt(PREF_KEY_OVERVIEW_FRAME_WIDTH, 300); int hight = Preferences.userRoot().getInt(PREF_KEY_OVERVIEW_FRAME_HIGHT, 300); setSize(new Dimension(width, hight)); addWidgetListener(new WidgetAdapter() { @Override public void widgetClosing(WidgetEvent evt) { onWidgetClosing(); } }); } private void onWidgetClosing() { Dimension size = getSize(); Preferences.userRoot().putInt(PREF_KEY_OVERVIEW_FRAME_WIDTH, size.width); Preferences.userRoot().putInt(PREF_KEY_OVERVIEW_FRAME_HIGHT, size.height); } private void onStayOnTopChanged() { if(_chkOnTop.isSelected()) { setLayer(JLayeredPane.PALETTE_LAYER.intValue()); } else { setLayer(JLayeredPane.DEFAULT_LAYER.intValue()); } // Needs to be done in both cases because if the window goes back to // the default layer it goes back behind all other windows too. toFront(); } }