X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fnet%2Fpterodactylus%2Fjkeytool%2Fgui%2Fswing%2FSwingInterface.java;h=165a6d6ab791620aa2e1c679a0830d75ee10376d;hb=caae8a8c82efbd16ae5a45ee352a761e445d5de5;hp=95c8f9046b178c1cafc99a6e05bd3a6a62b45e0f;hpb=e5e4a88c5a229c289d3b43f0d0b1d4b4df91c9fb;p=jkeytool.git diff --git a/src/net/pterodactylus/jkeytool/gui/swing/SwingInterface.java b/src/net/pterodactylus/jkeytool/gui/swing/SwingInterface.java index 95c8f90..165a6d6 100644 --- a/src/net/pterodactylus/jkeytool/gui/swing/SwingInterface.java +++ b/src/net/pterodactylus/jkeytool/gui/swing/SwingInterface.java @@ -19,16 +19,30 @@ package net.pterodactylus.jkeytool.gui.swing; +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; import java.io.File; import java.security.KeyStore; import java.util.HashMap; import java.util.Map; +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.JToolBar; import net.pterodactylus.jkeytool.core.Core; import net.pterodactylus.jkeytool.gui.Interface; import net.pterodactylus.jkeytool.main.Main; +import net.pterodactylus.util.i18n.I18n; +import net.pterodactylus.util.i18n.gui.I18nAction; +import net.pterodactylus.util.i18n.gui.I18nMenu; +import net.pterodactylus.util.swing.StatusBar; /** * TODO @@ -40,12 +54,136 @@ public class SwingInterface implements Interface { /** The core to control. */ private Core core; + /** The I18n container. */ + private I18n i18n = new I18n("jkeytool", SwingInterface.class); + /** The main frame. */ private JFrame mainFrame = new JFrame("jkeytool " + Main.getVersion()); + /** The tab pane. */ + private JTabbedPane tabPane = new JTabbedPane(); + + /** The status bar. */ + private StatusBar statusBar = new StatusBar(); + + /** The “create key store” action. */ + private Action createKeyStoreAction; + + /** The “quit” action. */ + private Action quitAction; + /** Loaded key stores and their panels. */ private final Map keyStores = new HashMap(); + /** + * Creates a new Swing interface. + */ + public SwingInterface() { + createActions(); + createFrame(); + } + + // + // ACTIONS + // + + /** + * Creates a new key store. + */ + private void createKeyStore() { + /* TODO */ + } + + /** + * Exits the application. + */ + private void quit() { + System.exit(0); + } + + // + // PRIVATE METHODS + // + + /** + * Creates all used actions. + */ + private void createActions() { + createKeyStoreAction = new I18nAction(i18n, "jkeytool.action.createKeyStore") { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + createKeyStore(); + } + }; + quitAction = new I18nAction(i18n, "jkeytool.action.quit") { + + /** + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + quit(); + } + }; + } + + /** + * Creates the application main frame. + */ + private void createFrame() { + mainFrame.setJMenuBar(createMenubar()); + mainFrame.getContentPane().add(createToolbar(), BorderLayout.PAGE_START); + mainFrame.getContentPane().add(createCenterPanel(), BorderLayout.CENTER); + mainFrame.getContentPane().add(statusBar, BorderLayout.PAGE_END); + mainFrame.pack(); + } + + /** + * Creates the central panel of the frame. + * + * @return The central panel of the frame + */ + private JComponent createCenterPanel() { + JPanel centerPanel = new JPanel(new BorderLayout()); + centerPanel.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6)); + + centerPanel.add(tabPane, BorderLayout.CENTER); + + return centerPanel; + } + + /** + * Creates the menu bar of the frame. + * + * @return The menu bar of the frame + */ + private JMenuBar createMenubar() { + JMenuBar menubar = new JMenuBar(); + + JMenu fileMenu = new I18nMenu(i18n, "jkeytool.menu.file"); + menubar.add(fileMenu); + fileMenu.add(createKeyStoreAction); + fileMenu.addSeparator(); + fileMenu.add(quitAction); + + return menubar; + } + + /** + * Creates the tool bar of the frame. + * + * @return The tool bar of the frame + */ + private JToolBar createToolbar() { + JToolBar toolbar = new JToolBar(); + + toolbar.add(createKeyStoreAction); + toolbar.add(quitAction); + + return toolbar; + } + // // INTERFACE Interface // @@ -65,6 +203,7 @@ public class SwingInterface implements Interface { */ public void start() { mainFrame.setVisible(true); + statusBar.setText("jkeytool startup complete."); core.loadKeyStore(new File("client.p12")); } @@ -90,9 +229,9 @@ public class SwingInterface implements Interface { * {@inheritDoc} */ public void keyStoreLoaded(File keyStoreFile, KeyStore keyStore) { - KeyStorePanel keyStorePanel = new KeyStorePanel(keyStore); + KeyStorePanel keyStorePanel = new KeyStorePanel(i18n, keyStore); keyStores.put(keyStore, keyStorePanel); - mainFrame.getContentPane().add(keyStorePanel); + tabPane.addTab(keyStoreFile.getName(), keyStorePanel); } /**