diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/AuthenticationPanel.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/AuthenticationPanel.java
index 053cd7bf..7f499cf8 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/AuthenticationPanel.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/AuthenticationPanel.java
@@ -19,7 +19,7 @@ public abstract class AuthenticationPanel extends JPanel {
// Avatar
add( Box.createVerticalGlue() );
- add( new JLabel( new ImageIcon( Resources.getResource( "media/Avatars/avatar-0.png" ) ) ) {
+ add( new JLabel( Res.avatar(0) ) {
@Override
public Dimension getMaximumSize() {
return new Dimension( Integer.MAX_VALUE, Integer.MAX_VALUE );
@@ -37,4 +37,8 @@ public abstract class AuthenticationPanel extends JPanel {
public Component getFocusComponent() {
return null;
}
+
+ public String getHelpText() {
+ return null;
+ }
}
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/ConfigAuthenticationPanel.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/ConfigAuthenticationPanel.java
index f39945b0..e49adcdc 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/ConfigAuthenticationPanel.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/ConfigAuthenticationPanel.java
@@ -45,6 +45,15 @@ public class ConfigAuthenticationPanel extends AuthenticationPanel implements It
return (User) userField.getSelectedItem();
}
+ @Override
+ public String getHelpText() {
+ return ""
+ + "Reads users from ~/.mpw
"
+ + "Use the following syntax:
"
+ + "My Name:mymasterpassword
"
+ + "Make sure the read permissions
to the file are safe!";
+ }
+
public static boolean hasConfigUsers() {
return new File( System.getProperty( "user.home" ), ".mpw" ).canRead();
}
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/PasswordFrame.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/PasswordFrame.java
index ca170e11..83c5f183 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/PasswordFrame.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/PasswordFrame.java
@@ -2,6 +2,7 @@ package com.lyndir.lhunath.masterpassword;
import static com.lyndir.lhunath.opal.system.util.StringUtils.*;
+import com.google.common.io.Resources;
import com.lyndir.lhunath.masterpassword.util.Components;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
@@ -19,10 +20,7 @@ import javax.swing.event.*;
*/
public class PasswordFrame extends JFrame implements DocumentListener {
- private static final ExecutorService executor = Executors.newSingleThreadExecutor();
-
private final User user;
- private final JPanel root;
private final JTextField siteNameField;
private final JComboBox siteTypeField;
private final JSpinner siteCounterField;
@@ -36,8 +34,11 @@ public class PasswordFrame extends JFrame implements DocumentListener {
JLabel label;
setDefaultCloseOperation( DISPOSE_ON_CLOSE );
- setContentPane( root = new JPanel( new BorderLayout( 20, 20 ) ) );
- root.setBorder( new EmptyBorder( 20, 20, 20, 20 ) );
+ setContentPane( new JPanel( new BorderLayout( 20, 20 ) ) {
+ {
+ setBorder( new EmptyBorder( 20, 20, 20, 20 ) );
+ }
+ });
// User
add( label = new JLabel( strf( "Generating passwords for: %s", user.getName() ) ), BorderLayout.NORTH );
@@ -82,17 +83,21 @@ public class PasswordFrame extends JFrame implements DocumentListener {
} );
// Site Type & Counter
- sitePanel.add( Components.boxLayout( BoxLayout.LINE_AXIS, //
- siteTypeField = new JComboBox<>( MPElementType.values() ),
- siteCounterField = new JSpinner( new SpinnerNumberModel( 1, 1, Integer.MAX_VALUE, 1 ) ) {
- @Override
- public Dimension getMaximumSize() {
- return new Dimension( 50, getPreferredSize().height );
- }
- } ) );
+ JComponent siteSettings = Components.boxLayout( BoxLayout.LINE_AXIS, //
+ siteTypeField = new JComboBox<>( MPElementType.values() ),
+ siteCounterField = new JSpinner( new SpinnerNumberModel( 1, 1, Integer.MAX_VALUE, 1 ) ) {
+ @Override
+ public Dimension getMaximumSize() {
+ return new Dimension( 20, getPreferredSize().height );
+ }
+ } );
+ siteSettings.setAlignmentX( LEFT_ALIGNMENT );
+ sitePanel.add( siteSettings );
siteTypeField.setAlignmentX( LEFT_ALIGNMENT );
+ siteTypeField.setAlignmentY( CENTER_ALIGNMENT );
siteTypeField.setSelectedItem( MPElementType.GeneratedLong );
- siteCounterField.setAlignmentX( LEFT_ALIGNMENT );
+ siteCounterField.setAlignmentX( RIGHT_ALIGNMENT );
+ siteCounterField.setAlignmentY( CENTER_ALIGNMENT );
siteCounterField.addChangeListener( new ChangeListener() {
@Override
public void stateChanged(final ChangeEvent e) {
@@ -103,7 +108,7 @@ public class PasswordFrame extends JFrame implements DocumentListener {
// Password
add( passwordLabel = new JLabel( " ", JLabel.CENTER ), BorderLayout.SOUTH );
passwordLabel.setAlignmentX( LEFT_ALIGNMENT );
- passwordLabel.setFont( passwordLabel.getFont().deriveFont( 40f ) );
+ passwordLabel.setFont( Res.sourceCodeProBlack().deriveFont( 40f ) );
pack();
setMinimumSize( getSize() );
@@ -119,7 +124,7 @@ public class PasswordFrame extends JFrame implements DocumentListener {
final String siteName = siteNameField.getText();
final int siteCounter = (Integer) siteCounterField.getValue();
- executor.submit( new Runnable() {
+ Res.execute( new Runnable() {
@Override
public void run() {
final String sitePassword = MasterPassword.generateContent( siteType, siteName, user.getKey(), siteCounter );
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/Res.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/Res.java
new file mode 100644
index 00000000..b2663159
--- /dev/null
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/Res.java
@@ -0,0 +1,120 @@
+package com.lyndir.lhunath.masterpassword;
+
+import static com.lyndir.lhunath.opal.system.util.ObjectUtils.ifNotNullElse;
+import static com.lyndir.lhunath.opal.system.util.StringUtils.*;
+
+import com.google.common.base.Throwables;
+import com.google.common.io.Resources;
+import com.lyndir.lhunath.opal.system.logging.Logger;
+import java.awt.*;
+import java.awt.image.ImageObserver;
+import java.io.IOException;
+import java.net.URL;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.swing.*;
+
+
+/**
+ * @author lhunath, 2014-06-11
+ */
+public abstract class Res {
+
+ private static final ExecutorService executor = Executors.newSingleThreadExecutor();
+ private static final Logger logger = Logger.get( Res.class );
+
+ private static Font sourceCodeProBlack;
+
+ public static void execute(final Runnable job) {
+ executor.submit( new Runnable() {
+ @Override
+ public void run() {
+ try {
+ job.run();
+ }
+ catch (Throwable t) {
+ logger.err( t, "Unexpected: %s", t.getLocalizedMessage() );
+ }
+ }
+ } );
+ }
+
+ public static Icon iconQuestion() {
+ return new RetinaIcon( Resources.getResource( "media/icon_question@2x.png" ) );
+ }
+
+ public static Icon avatar(final int index) {
+ return new RetinaIcon( Resources.getResource( strf( "media/avatar-%d@2x.png", index ) ) );
+ }
+
+ public static Font sourceCodeProBlack() {
+ try {
+ URL resource = Resources.getResource( "fonts/SourceCodePro-Bold.otf" );
+ Font font = Font.createFont( Font.TRUETYPE_FONT, resource.openStream() );
+ return sourceCodeProBlack != null? sourceCodeProBlack: //
+ (sourceCodeProBlack = font);
+ }
+ catch (FontFormatException | IOException e) {
+ throw Throwables.propagate( e );
+ }
+ }
+
+ private static final class RetinaIcon extends ImageIcon {
+
+ private static final Pattern scalePattern = Pattern.compile(".*@(\\d+)x.[^.]+$");
+
+ private final float scale;
+
+ public RetinaIcon(final URL url) {
+ super( url );
+
+ Matcher scaleMatcher = scalePattern.matcher( url.getPath() );
+ if (scaleMatcher.matches())
+ scale = Float.parseFloat( scaleMatcher.group( 1 ) );
+ else
+ scale = 1;
+ }
+
+ //private static URL retinaURL(final URL url) {
+ // try {
+ // final boolean[] isRetina = new boolean[1];
+ // new apple.awt.CImage.HiDPIScaledImage(1,1, BufferedImage.TYPE_INT_ARGB) {
+ // @Override
+ // public void drawIntoImage(BufferedImage image, float v) {
+ // isRetina[0] = v > 1;
+ // }
+ // };
+ // return isRetina[0];
+ // } catch (Throwable e) {
+ // e.printStackTrace();
+ // return url;
+ // }
+ //}
+
+ @Override
+ public int getIconWidth() {
+ return (int) (super.getIconWidth() / scale);
+ }
+
+ @Override
+ public int getIconHeight() {
+ return (int) (super.getIconHeight() / scale);
+ }
+
+ public synchronized void paintIcon(Component c, Graphics g, int x, int y) {
+ ImageObserver observer = ifNotNullElse( getImageObserver(), c );
+
+ Image image = getImage();
+ int width = image.getWidth( observer );
+ int height = image.getHeight( observer );
+ final Graphics2D g2d = (Graphics2D) g.create( x, y, width, height );
+
+ g2d.scale( 1 / scale, 1 / scale );
+ g2d.drawImage( image, 0, 0, observer );
+ g2d.scale( 1, 1 );
+ g2d.dispose();
+ }
+ }
+}
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/UnlockFrame.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/UnlockFrame.java
index e12f7c07..ef15a188 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/UnlockFrame.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/lhunath/masterpassword/UnlockFrame.java
@@ -1,12 +1,10 @@
package com.lyndir.lhunath.masterpassword;
-import static com.lyndir.lhunath.opal.system.util.ObjectUtils.ifNotNullElse;
+import static com.lyndir.lhunath.opal.system.util.ObjectUtils.*;
import com.lyndir.lhunath.masterpassword.util.Components;
import java.awt.*;
import java.awt.event.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import javax.swing.*;
import javax.swing.border.*;
@@ -16,8 +14,6 @@ import javax.swing.border.*;
*/
public class UnlockFrame extends JFrame {
- private static final ExecutorService executor = Executors.newSingleThreadExecutor();
-
private final SignInCallback signInCallback;
private final JPanel root;
private final JButton signInButton;
@@ -77,13 +73,13 @@ public class UnlockFrame extends JFrame {
authenticationPanel.updateUser();
authenticationContainer.add( authenticationPanel, BorderLayout.CENTER );
- final JCheckBox configCheckBox = new JCheckBox( "Use Config File" );
- configCheckBox.setAlignmentX( LEFT_ALIGNMENT );
- configCheckBox.setSelected( useConfig );
- configCheckBox.addItemListener( new ItemListener() {
+ final JCheckBox typeCheckBox = new JCheckBox( "Use Config File" );
+ typeCheckBox.setAlignmentX( LEFT_ALIGNMENT );
+ typeCheckBox.setSelected( useConfig );
+ typeCheckBox.addItemListener( new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
- useConfig = configCheckBox.isSelected();
+ useConfig = typeCheckBox.isSelected();
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
@@ -92,12 +88,48 @@ public class UnlockFrame extends JFrame {
} );
}
} );
- authenticationContainer.add( configCheckBox );
+
+ JButton typeHelp = new JButton( Res.iconQuestion() );
+ typeHelp.setMargin( new Insets( 0, 0, 0, 0 ) );
+ typeHelp.setBackground( Color.red );
+ typeHelp.setAlignmentX( RIGHT_ALIGNMENT );
+ typeHelp.setBorder( null );
+ typeHelp.addActionListener( new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ final JDialog dialog = new JDialog( UnlockFrame.this, "Help", true );
+ dialog.setContentPane( new JPanel( new BorderLayout( 8, 8 ) ) {
+ {
+ setBorder( new EmptyBorder( 8, 8, 8, 8 ) );
+ }
+ } );
+ dialog.add( new JLabel( authenticationPanel.getHelpText() ), BorderLayout.CENTER );
+ dialog.add( new JButton( "OK" ) {
+ {
+ addActionListener( new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ dialog.dispose();
+ }
+ } );
+ }
+ }, BorderLayout.SOUTH );
+ dialog.pack();
+ dialog.setLocationRelativeTo( UnlockFrame.this );
+ dialog.setVisible( true );
+ }
+ } );
+ if (authenticationPanel.getHelpText() == null) {
+ typeHelp.setVisible( false );
+ }
+ JComponent typePanel = Components.boxLayout( BoxLayout.LINE_AXIS, typeCheckBox, Box.createGlue(), typeHelp );
+ typePanel.setAlignmentX( Component.LEFT_ALIGNMENT );
+ authenticationContainer.add( typePanel );
+
checkSignIn();
validate();
repack();
-
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
@@ -130,7 +162,7 @@ public class UnlockFrame extends JFrame {
signInButton.setEnabled( false );
signInButton.setText( "Signing In..." );
- executor.submit( new Runnable() {
+ Res.execute( new Runnable() {
@Override
public void run() {
final boolean success = signInCallback.signedIn( user );
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/fonts/SourceCodePro-Bold.otf b/MasterPassword/Java/masterpassword-gui/src/main/resources/fonts/SourceCodePro-Bold.otf
new file mode 100644
index 00000000..96b48775
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/fonts/SourceCodePro-Bold.otf differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media b/MasterPassword/Java/masterpassword-gui/src/main/resources/media
deleted file mode 120000
index c0b8c864..00000000
--- a/MasterPassword/Java/masterpassword-gui/src/main/resources/media
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../Resources/Media/
\ No newline at end of file
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0.png
new file mode 100644
index 00000000..6df3b1c1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0@2x.png
new file mode 100644
index 00000000..306ca9b5
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-0@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1.png
new file mode 100644
index 00000000..242619c0
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10.png
new file mode 100644
index 00000000..35f80e5c
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10@2x.png
new file mode 100644
index 00000000..a59c61b1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-10@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11.png
new file mode 100644
index 00000000..4562f3a6
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11@2x.png
new file mode 100644
index 00000000..0372e8c7
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-11@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12.png
new file mode 100644
index 00000000..bb3a3b11
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12@2x.png
new file mode 100644
index 00000000..36903d25
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-12@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13.png
new file mode 100644
index 00000000..4541ab58
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13@2x.png
new file mode 100644
index 00000000..6b71b615
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-13@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14.png
new file mode 100644
index 00000000..080b1d12
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14@2x.png
new file mode 100644
index 00000000..42b41be4
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-14@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15.png
new file mode 100644
index 00000000..bddce79c
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15@2x.png
new file mode 100644
index 00000000..a50ec0c4
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-15@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16.png
new file mode 100644
index 00000000..8b318240
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16@2x.png
new file mode 100644
index 00000000..a468c6b0
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-16@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17.png
new file mode 100644
index 00000000..7abd6f8d
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17@2x.png
new file mode 100644
index 00000000..57d5cba1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-17@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18.png
new file mode 100644
index 00000000..d3b2380d
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18@2x.png
new file mode 100644
index 00000000..f24242a1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-18@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1@2x.png
new file mode 100644
index 00000000..e6b92536
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-1@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2.png
new file mode 100644
index 00000000..e130c614
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2@2x.png
new file mode 100644
index 00000000..46bc4f5c
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-2@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3.png
new file mode 100644
index 00000000..c28868a3
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3@2x.png
new file mode 100644
index 00000000..7f7ff918
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-3@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4.png
new file mode 100644
index 00000000..9c5b7ed1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4@2x.png
new file mode 100644
index 00000000..4c59a0d1
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-4@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5.png
new file mode 100644
index 00000000..61773fbd
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5@2x.png
new file mode 100644
index 00000000..bd6efe2c
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-5@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6.png
new file mode 100644
index 00000000..de110435
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6@2x.png
new file mode 100644
index 00000000..b759e9ff
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-6@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7.png
new file mode 100644
index 00000000..47164fd7
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7@2x.png
new file mode 100644
index 00000000..8810bb21
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-7@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8.png
new file mode 100644
index 00000000..e6593d21
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8@2x.png
new file mode 100644
index 00000000..7e38a4bc
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-8@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9.png
new file mode 100644
index 00000000..b9b7656a
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9@2x.png
new file mode 100644
index 00000000..d05b86b8
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-9@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add.png
new file mode 100644
index 00000000..be68d16e
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add@2x.png
new file mode 100644
index 00000000..3e91b6dc
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/avatar-add@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/exit b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/exit
new file mode 100644
index 00000000..e69de29b
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question.png
new file mode 100644
index 00000000..c51cdca2
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question@2x.png b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question@2x.png
new file mode 100644
index 00000000..de9a996a
Binary files /dev/null and b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/icon_question@2x.png differ
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/resources/media/start b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/start
new file mode 100644
index 00000000..864f6922
--- /dev/null
+++ b/MasterPassword/Java/masterpassword-gui/src/main/resources/media/start
@@ -0,0 +1 @@
+3269
diff --git a/MasterPassword/Resources/Media/Lock/lock_blue.png b/MasterPassword/Resources/Media/Lock/lock_blue.png
deleted file mode 100644
index 88dc081f..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_blue.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_blue@2x.png b/MasterPassword/Resources/Media/Lock/lock_blue@2x.png
deleted file mode 100644
index 9cd9bcc4..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_blue@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_green.png b/MasterPassword/Resources/Media/Lock/lock_green.png
deleted file mode 100644
index d499b736..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_green.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_green@2x.png b/MasterPassword/Resources/Media/Lock/lock_green@2x.png
deleted file mode 100644
index ad4de112..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_green@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_idle.png b/MasterPassword/Resources/Media/Lock/lock_idle.png
deleted file mode 100644
index 716ac088..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_idle.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_idle@2x.png b/MasterPassword/Resources/Media/Lock/lock_idle@2x.png
deleted file mode 100644
index 82fcdade..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_idle@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_red.png b/MasterPassword/Resources/Media/Lock/lock_red.png
deleted file mode 100644
index 04507319..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_red.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/Lock/lock_red@2x.png b/MasterPassword/Resources/Media/Lock/lock_red@2x.png
deleted file mode 100644
index 60bc5303..00000000
Binary files a/MasterPassword/Resources/Media/Lock/lock_red@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/book.png b/MasterPassword/Resources/Media/book.png
deleted file mode 100644
index c7e440b1..00000000
Binary files a/MasterPassword/Resources/Media/book.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/book@2x.png b/MasterPassword/Resources/Media/book@2x.png
deleted file mode 100644
index f41f2b63..00000000
Binary files a/MasterPassword/Resources/Media/book@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/page-deblock.png b/MasterPassword/Resources/Media/page-deblock.png
deleted file mode 100644
index 3fee2faf..00000000
Binary files a/MasterPassword/Resources/Media/page-deblock.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/page-deblock@2x.png b/MasterPassword/Resources/Media/page-deblock@2x.png
deleted file mode 100644
index b042923a..00000000
Binary files a/MasterPassword/Resources/Media/page-deblock@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/page-gorillas.png b/MasterPassword/Resources/Media/page-gorillas.png
deleted file mode 100644
index 3fe6eb75..00000000
Binary files a/MasterPassword/Resources/Media/page-gorillas.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/page-gorillas@2x.png b/MasterPassword/Resources/Media/page-gorillas@2x.png
deleted file mode 100644
index 55b96bc9..00000000
Binary files a/MasterPassword/Resources/Media/page-gorillas@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-facebook.png b/MasterPassword/Resources/Media/social-facebook.png
deleted file mode 100644
index c196b2cb..00000000
Binary files a/MasterPassword/Resources/Media/social-facebook.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-facebook@2x.png b/MasterPassword/Resources/Media/social-facebook@2x.png
deleted file mode 100644
index 999b26bc..00000000
Binary files a/MasterPassword/Resources/Media/social-facebook@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-google+.png b/MasterPassword/Resources/Media/social-google+.png
deleted file mode 100644
index 1a83eea1..00000000
Binary files a/MasterPassword/Resources/Media/social-google+.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-google+@2x.png b/MasterPassword/Resources/Media/social-google+@2x.png
deleted file mode 100644
index 33e1f75d..00000000
Binary files a/MasterPassword/Resources/Media/social-google+@2x.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-twitter.png b/MasterPassword/Resources/Media/social-twitter.png
deleted file mode 100644
index 00e9b879..00000000
Binary files a/MasterPassword/Resources/Media/social-twitter.png and /dev/null differ
diff --git a/MasterPassword/Resources/Media/social-twitter@2x.png b/MasterPassword/Resources/Media/social-twitter@2x.png
deleted file mode 100644
index a75452d0..00000000
Binary files a/MasterPassword/Resources/Media/social-twitter@2x.png and /dev/null differ