diff --git a/mail/src/linoleum/mail/SimpleClient.form b/mail/src/linoleum/mail/SimpleClient.form index 521aead9..69be403d 100644 --- a/mail/src/linoleum/mail/SimpleClient.form +++ b/mail/src/linoleum/mail/SimpleClient.form @@ -3,11 +3,6 @@
- - - - - @@ -197,6 +192,9 @@ + + + diff --git a/mail/src/linoleum/mail/SimpleClient.java b/mail/src/linoleum/mail/SimpleClient.java index d9bd401a..161edf73 100644 --- a/mail/src/linoleum/mail/SimpleClient.java +++ b/mail/src/linoleum/mail/SimpleClient.java @@ -89,13 +89,10 @@ public SettingsAction() { @Override public void actionPerformed(final ActionEvent e) { - optionPanel1.load(); - final int result = JOptionPane.showInternalConfirmDialog(getDialogParent(), optionPanel1, "Account settings", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); - switch (result) { - case JOptionPane.OK_OPTION: - optionPanel1.save(); - break; - default: + try { + getApplicationManager().open(new URI("prefs", getName(), null)); + } catch (final URISyntaxException ex) { + ex.printStackTrace(); } } } @@ -287,8 +284,6 @@ private void initComponents() { jSeparator2 = new javax.swing.JPopupMenu.Separator(); jMenuItem8 = new javax.swing.JMenuItem(); - optionPanel1.setFrame(this); - jLabel1.setText("URL :"); jLabel2.setText("Transport :"); @@ -356,6 +351,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { setResizable(true); setTitle("Simple JavaMail Client"); setName("Mail"); // NOI18N + setOptionPanel(optionPanel1); addInternalFrameListener(new javax.swing.event.InternalFrameListener() { public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) { } diff --git a/src/main/java/linoleum/FileManager.form b/src/main/java/linoleum/FileManager.form index d658f9f7..4164e2bb 100644 --- a/src/main/java/linoleum/FileManager.form +++ b/src/main/java/linoleum/FileManager.form @@ -227,6 +227,15 @@ + + + + + + + + + diff --git a/src/main/java/linoleum/FileManager.java b/src/main/java/linoleum/FileManager.java index ccb2f4f4..1e9eff38 100644 --- a/src/main/java/linoleum/FileManager.java +++ b/src/main/java/linoleum/FileManager.java @@ -107,6 +107,7 @@ public class FileManager extends FileSupport implements Runnable { private final Action renameAction = new RenameAction(); private final Action cancelSelectionAction = new CancelSelectionAction(); private final Action deleteAction = new DeleteAction(); + private final Action preferenceAction = new PreferenceAction(); private final FileChooser chooser = new FileChooser(); private final ListCellRenderer renderer = new Renderer(); private final DefaultListModel model = new DefaultListModel<>(); @@ -463,6 +464,21 @@ public void actionPerformed(final ActionEvent e) { } } + private class PreferenceAction extends AbstractAction { + private PreferenceAction() { + super("Preferences"); + } + + @Override + public void actionPerformed(final ActionEvent e) { + try { + getApplicationManager().open(new URI("prefs", getName(), null)); + } catch (final URISyntaxException ex) { + ex.printStackTrace(); + } + } + } + private Path newFolderFile; private Path editFile; @@ -1057,6 +1073,8 @@ private void initComponents() { jCheckBoxMenuItem2 = new javax.swing.JCheckBoxMenuItem(); jSeparator4 = new javax.swing.JPopupMenu.Separator(); jMenuItem11 = new javax.swing.JMenuItem(); + jSeparator5 = new javax.swing.JPopupMenu.Separator(); + jMenuItem12 = new javax.swing.JMenuItem(); jLabel2.setText("Home :"); @@ -1299,6 +1317,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); jMenu4.add(jMenuItem11); + jMenu4.add(jSeparator5); + + jMenuItem12.setAction(preferenceAction); + jMenu4.add(jMenuItem12); jMenuBar1.add(jMenu4); @@ -1420,6 +1442,7 @@ private void jScrollPane2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRS private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem10; private javax.swing.JMenuItem jMenuItem11; + private javax.swing.JMenuItem jMenuItem12; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem4; @@ -1436,6 +1459,7 @@ private void jScrollPane2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRS private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JPopupMenu.Separator jSeparator4; + private javax.swing.JPopupMenu.Separator jSeparator5; private linoleum.FileTable jTable1; private javax.swing.JTextField jTextField1; private linoleum.application.OptionPanel optionPanel1; diff --git a/src/main/java/linoleum/PreferenceManager.java b/src/main/java/linoleum/PreferenceManager.java index 199548ee..9aa7e9a1 100644 --- a/src/main/java/linoleum/PreferenceManager.java +++ b/src/main/java/linoleum/PreferenceManager.java @@ -1,5 +1,7 @@ package linoleum; +import java.net.URI; +import java.net.URISyntaxException; import java.util.List; import javax.swing.ImageIcon; import linoleum.application.Frame; @@ -15,13 +17,41 @@ public class PreferenceManager extends Frame { public PreferenceManager() { initComponents(); setIcon(new ImageIcon(getClass().getResource("/toolbarButtonGraphics/general/Properties24.gif"))); + setScheme("prefs"); } @Override - public void open() { + public void setURI(final URI uri) { + if (uri != null) { + final int index = jTabbedPane1.indexOfTab(uri.getSchemeSpecificPart()); + if (index > -1) { + current = index; + } + } + } + + @Override + public URI getURI() { + update(); + try { + return new URI("prefs", get(current).getName(), null); + } catch (final URISyntaxException e) { + e.printStackTrace(); + } + return null; + } + + private void update() { for(final OptionPanel panel : getApplicationManager().getOptionPanels()) { - jTabbedPane1.add(panel); + if (jTabbedPane1.indexOfTab(panel.getName()) < 0) { + jTabbedPane1.add(panel); + } } + } + + @Override + public void open() { + update(); jTabbedPane1.setSelectedIndex(current); get(current).load(); ready = true; @@ -53,7 +83,7 @@ public void init() { getApplicationManager().addClassPathListener(new ClassPathListener() { @Override public void classPathChanged(final ClassPathChangeEvent e) { - open(); + update(); } }); }