* adjust default dialog sizes to make it work better on OSX

This commit is contained in:
Reinhard Pointner 2013-12-19 11:40:44 +00:00
parent 7756019568
commit 960b1bd9f8
2 changed files with 55 additions and 70 deletions

View File

@ -1,7 +1,5 @@
package net.sourceforge.filebot.ui; package net.sourceforge.filebot.ui;
import static java.awt.event.InputEvent.*; import static java.awt.event.InputEvent.*;
import static java.awt.event.KeyEvent.*; import static java.awt.event.KeyEvent.*;
import static javax.swing.KeyStroke.*; import static javax.swing.KeyStroke.*;
@ -50,65 +48,63 @@ import net.sourceforge.tuned.ui.DefaultFancyListCellRenderer;
import net.sourceforge.tuned.ui.ShadowBorder; import net.sourceforge.tuned.ui.ShadowBorder;
import net.sourceforge.tuned.ui.TunedUtilities; import net.sourceforge.tuned.ui.TunedUtilities;
public class MainFrame extends JFrame { public class MainFrame extends JFrame {
private JList selectionList = new PanelSelectionList(createPanelBuilders()); private JList selectionList = new PanelSelectionList(createPanelBuilders());
private HeaderPanel headerPanel = new HeaderPanel(); private HeaderPanel headerPanel = new HeaderPanel();
private static final PreferencesEntry<String> persistentSelectedPanel = Settings.forPackage(MainFrame.class).entry("panel.selected").defaultValue("1"); private static final PreferencesEntry<String> persistentSelectedPanel = Settings.forPackage(MainFrame.class).entry("panel.selected").defaultValue("1");
public MainFrame() { public MainFrame() {
super(Settings.getApplicationName()); super(Settings.getApplicationName());
// set taskbar / taskswitch icons // set taskbar / taskswitch icons
List<Image> images = new ArrayList<Image>(3); List<Image> images = new ArrayList<Image>(3);
for (String i : new String[] { "window.icon.large", "window.icon.medium", "window.icon.small" }) { for (String i : new String[] { "window.icon.large", "window.icon.medium", "window.icon.small" }) {
images.add(ResourceManager.getImage(i)); images.add(ResourceManager.getImage(i));
} }
setIconImages(images); setIconImages(images);
try { try {
// restore selected panel // restore selected panel
selectionList.setSelectedIndex(Integer.parseInt(persistentSelectedPanel.getValue())); selectionList.setSelectedIndex(Integer.parseInt(persistentSelectedPanel.getValue()));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
// ignore // ignore
} }
JScrollPane selectionListScrollPane = new JScrollPane(selectionList, VERTICAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_NEVER); JScrollPane selectionListScrollPane = new JScrollPane(selectionList, VERTICAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_NEVER);
selectionListScrollPane.setBorder(new CompoundBorder(new ShadowBorder(), selectionListScrollPane.getBorder())); selectionListScrollPane.setBorder(new CompoundBorder(new ShadowBorder(), selectionListScrollPane.getBorder()));
selectionListScrollPane.setOpaque(false); selectionListScrollPane.setOpaque(false);
headerPanel.getTitleLabel().setBorder(new EmptyBorder(8, 90, 10, 0)); headerPanel.getTitleLabel().setBorder(new EmptyBorder(8, 90, 10, 0));
JComponent c = (JComponent) getContentPane(); JComponent c = (JComponent) getContentPane();
c.setLayout(new MigLayout("insets 0, fill, hidemode 3", "95px[fill]", "fill")); c.setLayout(new MigLayout("insets 0, fill, hidemode 3", "95px[fill]", "fill"));
c.add(selectionListScrollPane, "pos 6px 10px n 100%-12px"); c.add(selectionListScrollPane, "pos 6px 10px n 100%-12px");
c.add(headerPanel, "growx, dock north"); c.add(headerPanel, "growx, dock north");
// show initial panel // show initial panel
showPanel((PanelBuilder) selectionList.getSelectedValue()); showPanel((PanelBuilder) selectionList.getSelectedValue());
selectionList.addListSelectionListener(new ListSelectionListener() { selectionList.addListSelectionListener(new ListSelectionListener() {
@Override @Override
public void valueChanged(ListSelectionEvent e) { public void valueChanged(ListSelectionEvent e) {
showPanel((PanelBuilder) selectionList.getSelectedValue()); showPanel((PanelBuilder) selectionList.getSelectedValue());
if (!e.getValueIsAdjusting()) { if (!e.getValueIsAdjusting()) {
persistentSelectedPanel.setValue(Integer.toString(selectionList.getSelectedIndex())); persistentSelectedPanel.setValue(Integer.toString(selectionList.getSelectedIndex()));
} }
} }
}); });
setSize(860, 630); setSize(980, 630);
// KEYBOARD SHORTCUTS // KEYBOARD SHORTCUTS
TunedUtilities.installAction(this.getRootPane(), getKeyStroke(VK_DELETE, CTRL_MASK | SHIFT_MASK), new AbstractAction("Clear Cache") { TunedUtilities.installAction(this.getRootPane(), getKeyStroke(VK_DELETE, CTRL_MASK | SHIFT_MASK), new AbstractAction("Clear Cache") {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
CacheManager.getInstance().clearAll(); CacheManager.getInstance().clearAll();
@ -116,22 +112,20 @@ public class MainFrame extends JFrame {
} }
}); });
} }
public static PanelBuilder[] createPanelBuilders() { public static PanelBuilder[] createPanelBuilders() {
return new PanelBuilder[] { new ListPanelBuilder(), new RenamePanelBuilder(), new AnalyzePanelBuilder(), new EpisodeListPanelBuilder(), new SubtitlePanelBuilder(), new SfvPanelBuilder() }; return new PanelBuilder[] { new ListPanelBuilder(), new RenamePanelBuilder(), new AnalyzePanelBuilder(), new EpisodeListPanelBuilder(), new SubtitlePanelBuilder(), new SfvPanelBuilder() };
} }
protected void showPanel(PanelBuilder selectedBuilder) { protected void showPanel(PanelBuilder selectedBuilder) {
final JComponent contentPane = (JComponent) getContentPane(); final JComponent contentPane = (JComponent) getContentPane();
JComponent panel = null; JComponent panel = null;
for (int i = 0; i < contentPane.getComponentCount(); i++) { for (int i = 0; i < contentPane.getComponentCount(); i++) {
JComponent c = (JComponent) contentPane.getComponent(i); JComponent c = (JComponent) contentPane.getComponent(i);
PanelBuilder builder = (PanelBuilder) c.getClientProperty("panelBuilder"); PanelBuilder builder = (PanelBuilder) c.getClientProperty("panelBuilder");
if (builder != null) { if (builder != null) {
if (builder.equals(selectedBuilder)) { if (builder.equals(selectedBuilder)) {
panel = c; panel = c;
@ -140,15 +134,15 @@ public class MainFrame extends JFrame {
} }
} }
} }
if (panel == null) { if (panel == null) {
panel = selectedBuilder.create(); panel = selectedBuilder.create();
panel.setVisible(false); // invisible by default panel.setVisible(false); // invisible by default
panel.putClientProperty("panelBuilder", selectedBuilder); panel.putClientProperty("panelBuilder", selectedBuilder);
contentPane.add(panel); contentPane.add(panel);
} }
// make visible, ignore action is visible already // make visible, ignore action is visible already
if (!panel.isVisible()) { if (!panel.isVisible()) {
headerPanel.setTitle(selectedBuilder.getName()); headerPanel.setTitle(selectedBuilder.getName());
@ -156,33 +150,29 @@ public class MainFrame extends JFrame {
Analytics.trackView(panel.getClass(), selectedBuilder.getName()); Analytics.trackView(panel.getClass(), selectedBuilder.getName());
} }
} }
private static class PanelSelectionList extends JList { private static class PanelSelectionList extends JList {
private static final int SELECTDELAY_ON_DRAG_OVER = 300; private static final int SELECTDELAY_ON_DRAG_OVER = 300;
public PanelSelectionList(PanelBuilder[] builders) { public PanelSelectionList(PanelBuilder[] builders) {
super(builders); super(builders);
setCellRenderer(new PanelCellRenderer()); setCellRenderer(new PanelCellRenderer());
setSelectionMode(ListSelectionModel.SINGLE_SELECTION); setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setBorder(new EmptyBorder(4, 5, 4, 5)); setBorder(new EmptyBorder(4, 5, 4, 5));
// initialize "drag over" panel selection // initialize "drag over" panel selection
new DropTarget(this, new DragDropListener()); new DropTarget(this, new DragDropListener());
} }
private class DragDropListener extends DropTargetAdapter { private class DragDropListener extends DropTargetAdapter {
private boolean selectEnabled = false; private boolean selectEnabled = false;
private Timer dragEnterTimer; private Timer dragEnterTimer;
@Override @Override
public void dragOver(DropTargetDragEvent dtde) { public void dragOver(DropTargetDragEvent dtde) {
if (selectEnabled) { if (selectEnabled) {
@ -190,67 +180,62 @@ public class MainFrame extends JFrame {
setSelectedIndex(index); setSelectedIndex(index);
} }
} }
@Override @Override
public void dragEnter(final DropTargetDragEvent dtde) { public void dragEnter(final DropTargetDragEvent dtde) {
dragEnterTimer = TunedUtilities.invokeLater(SELECTDELAY_ON_DRAG_OVER, new Runnable() { dragEnterTimer = TunedUtilities.invokeLater(SELECTDELAY_ON_DRAG_OVER, new Runnable() {
@Override @Override
public void run() { public void run() {
selectEnabled = true; selectEnabled = true;
// bring window to front when on dnd // bring window to front when on dnd
SwingUtilities.getWindowAncestor(((DropTarget) dtde.getSource()).getComponent()).toFront(); SwingUtilities.getWindowAncestor(((DropTarget) dtde.getSource()).getComponent()).toFront();
} }
}); });
} }
@Override @Override
public void dragExit(DropTargetEvent dte) { public void dragExit(DropTargetEvent dte) {
selectEnabled = false; selectEnabled = false;
if (dragEnterTimer != null) { if (dragEnterTimer != null) {
dragEnterTimer.stop(); dragEnterTimer.stop();
} }
} }
@Override @Override
public void drop(DropTargetDropEvent dtde) { public void drop(DropTargetDropEvent dtde) {
} }
} }
} }
private static class PanelCellRenderer extends DefaultFancyListCellRenderer { private static class PanelCellRenderer extends DefaultFancyListCellRenderer {
public PanelCellRenderer() { public PanelCellRenderer() {
super(10, 0, new Color(0x163264)); super(10, 0, new Color(0x163264));
// center labels in list // center labels in list
setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
setHighlightingEnabled(false); setHighlightingEnabled(false);
setVerticalTextPosition(SwingConstants.BOTTOM); setVerticalTextPosition(SwingConstants.BOTTOM);
setHorizontalTextPosition(SwingConstants.CENTER); setHorizontalTextPosition(SwingConstants.CENTER);
} }
@Override @Override
public void configureListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { public void configureListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.configureListCellRendererComponent(list, value, index, isSelected, cellHasFocus); super.configureListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
PanelBuilder panel = (PanelBuilder) value; PanelBuilder panel = (PanelBuilder) value;
setText(panel.getName()); setText(panel.getName());
setIcon(panel.getIcon()); setIcon(panel.getIcon());
} }
} }
} }

View File

@ -225,7 +225,7 @@ public class FormatDialog extends JDialog {
// initialize window properties // initialize window properties
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setSize(610, 430); setSize(620, 445);
// initialize data // initialize data
setState(initMode, lockOnBinding != null ? lockOnBinding : restoreSample(initMode), lockOnBinding != null); setState(initMode, lockOnBinding != null ? lockOnBinding : restoreSample(initMode), lockOnBinding != null);