Ticket #1977: EnhanceExtendedDialog.patch
File EnhanceExtendedDialog.patch, 4.4 KB (added by , 15 years ago) |
---|
-
src/org/openstreetmap/josm/gui/ExtendedDialog.java
6 6 import java.awt.event.ComponentEvent; 7 7 import java.awt.event.ComponentListener; 8 8 import java.awt.GridBagLayout; 9 import java.awt.Toolkit; 9 10 10 11 import javax.swing.AbstractAction; 11 12 import javax.swing.Action; … … 22 23 import javax.swing.KeyStroke; 23 24 24 25 import org.openstreetmap.josm.Main; 26 import org.openstreetmap.josm.gui.JMultilineLabel; 25 27 import org.openstreetmap.josm.tools.GBC; 26 28 import org.openstreetmap.josm.tools.I18n; 27 29 import org.openstreetmap.josm.tools.ImageProvider; … … 46 48 } 47 49 48 50 public ExtendedDialog(Component parent, String title, Component content, String[] buttonTexts) { 51 this(parent, title, content, buttonTexts, null); 52 } 53 54 // just display a breakable message 55 public ExtendedDialog(Component parent, String title, String message, String[] buttonTexts, String[] buttonIcons) { 49 56 super(JOptionPane.getFrameForComponent(parent), title, true); 50 bTexts = buttonTexts; 51 setupDialog(parent, title, content, buttonTexts, null); 57 58 JMultilineLabel lbl = new JMultilineLabel(message); 59 // Make it not wider than 2/3 of the screen 60 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 61 lbl.setMaxWidth(Math.round(screenSize.width*2/3)); 62 63 bTexts = buttonTexts; 64 setupDialog(parent, title, lbl, buttonTexts, buttonIcons); 52 65 } 53 66 67 public ExtendedDialog(Component parent, String title, String message, String[] buttonTexts) { 68 this(parent, title, message, buttonTexts, null); 69 } 70 54 71 private void setupDialog(Component parent, String title, Component content, String[] buttonTexts, String[] buttonIcons) { 72 setupEscListener(); 73 55 74 JButton button; 56 75 JPanel buttonsPanel = new JPanel(new GridBagLayout()); 57 76 … … 78 97 } 79 98 80 99 JPanel cp = new JPanel(new GridBagLayout()); 81 cp.add(content, GBC.eol().anchor(GBC.CENTER).insets( 0,10,0,0)); //fill(GBC.HORIZONTAL).100 cp.add(content, GBC.eol().anchor(GBC.CENTER).insets(5,10,5,0)); 82 101 cp.add(buttonsPanel, GBC.eol().anchor(GBC.CENTER).insets(5,5,5,5)); 83 102 84 JScrollPane pane = new JScrollPane(cp); 103 JScrollPane pane = new JScrollPane(cp); 85 104 pane.setBorder(null); 86 105 setContentPane(pane); 87 106 88 107 pack(); 89 108 90 // Try to make it not larger than the parent window or at least not larger than a reasonable value109 // Try to make it not larger than the parent window or at least not larger than 2/3 of the screen 91 110 Dimension d = getSize(); 92 Dimension x = new Dimension(700, 500); 111 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 112 Dimension x = new Dimension(Math.round(screenSize.width*2/3), Math.round(screenSize.height*2/3)); 113 93 114 try { 94 95 115 if(parent != null) 96 116 x = JOptionPane.getFrameForComponent(parent).getSize(); 97 117 } catch(NullPointerException e) { } … … 100 120 if(x.height > 0 && d.height > x.height) d.height = x.height; 101 121 setSize(d); 102 122 103 setLocationRelativeTo(parent); 104 105 setupEscListener(); 123 setLocationRelativeTo(parent); 106 124 setVisible(true); 107 125 } 108 126 -
src/org/openstreetmap/josm/Main.java
344 344 final String msg = uploadedModified ? "\n" 345 345 +tr("Hint: Some changes came from uploading new data to the server.") : ""; 346 346 int result = new ExtendedDialog(parent, tr("Unsaved Changes"), 347 new javax.swing.JLabel(tr("There are unsaved changes. Discard the changes and continue?")+msg),347 tr("There are unsaved changes. Discard the changes and continue?") + msg, 348 348 new String[] {tr("Save and Exit"), tr("Discard and Exit"), tr("Cancel")}, 349 349 new String[] {"save.png", "exit.png", "cancel.png"}).getValue(); 350 350