diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index e206d70d..4c94b2e6 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,5 +1,10 @@
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/GUI.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/GUI.java
index f5eefe44..2b4a6e10 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/GUI.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/GUI.java
@@ -21,6 +21,7 @@ import com.google.common.base.Charsets;
import com.google.common.io.*;
import com.lyndir.lhunath.opal.system.logging.Logger;
import com.lyndir.lhunath.opal.system.util.TypeUtils;
+
import java.io.*;
import java.net.URI;
import java.net.URL;
@@ -48,7 +49,13 @@ public class GUI implements UnlockFrame.SignInCallback {
if (Config.get().checkForUpdates())
checkUpdate();
- TypeUtils.newInstance( AppleGUI.class ).or( new GUI() ).open();
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ }
+ catch (UnsupportedLookAndFeelException | ClassNotFoundException | InstantiationException | IllegalAccessException ignored) {
+ }
+
+ TypeUtils.newInstance( "com.lyndir.masterpassword.gui.platform.mac.AppleGUI" ).or( new GUI() ).open();
}
private static void checkUpdate() {
@@ -80,7 +87,7 @@ public class GUI implements UnlockFrame.SignInCallback {
}
}
- void open() {
+ protected void open() {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/ModelAuthenticationPanel.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/ModelAuthenticationPanel.java
index 56037f9e..b78aac31 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/ModelAuthenticationPanel.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/ModelAuthenticationPanel.java
@@ -13,6 +13,7 @@ import javax.annotation.Nullable;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
+import javax.swing.plaf.metal.MetalComboBoxEditor;
/**
@@ -51,6 +52,15 @@ public class ModelAuthenticationPanel extends AuthenticationPanel implements Ite
userField.setFont( Res.valueFont().deriveFont( 12f ) );
userField.addItemListener( this );
userField.addActionListener( this );
+ userField.setEditor(new MetalComboBoxEditor() {
+ @Override
+ protected JTextField createEditorComponent() {
+ JTextField editorComponents = Components.textField();
+ editorComponents.setForeground(Color.red);
+ return editorComponents;
+ }
+ });
+
add( userField );
add( Components.stud() );
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/PasswordFrame.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/PasswordFrame.java
index be6f9314..c6fd071e 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/PasswordFrame.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/PasswordFrame.java
@@ -149,11 +149,12 @@ public class PasswordFrame extends JFrame implements DocumentListener {
} );
// Password
- passwordField = new JPasswordField();
- passwordField.setAlignmentX( Component.CENTER_ALIGNMENT );
- passwordField.setEditable( false );
- passwordField.setHorizontalAlignment( JTextField.CENTER );
- passwordField.putClientProperty( "JPasswordField.cutCopyAllowed", true );
+ passwordField = Components.passwordField();
+ passwordField.setAlignmentX(Component.CENTER_ALIGNMENT);
+ passwordField.setHorizontalAlignment(JTextField.CENTER);
+ passwordField.putClientProperty("JPasswordField.cutCopyAllowed", true);
+ passwordField.setEditable(false);
+ passwordField.setBackground(null);
passwordField.setBorder( null );
passwordEchoChar = passwordField.getEchoChar();
passwordEchoFont = passwordField.getFont().deriveFont( 40f );
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/UnlockFrame.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/UnlockFrame.java
index 469c5a8f..5df63855 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/UnlockFrame.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/UnlockFrame.java
@@ -27,9 +27,21 @@ public class UnlockFrame extends JFrame {
super( "Unlock Master Password" );
this.signInCallback = signInCallback;
- setDefaultCloseOperation( DISPOSE_ON_CLOSE );
- setContentPane( root = Components.gradientPanel( new BorderLayout( 20, 20 ), Res.colors().frameBg() ) );
- root.setBorder( BorderFactory.createEmptyBorder( 20, 20, 20, 20 ) );
+ setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ setContentPane(root = Components.gradientPanel(new BorderLayout(20, 20), Res.colors().frameBg()));
+ root.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
+
+ addWindowFocusListener(new WindowAdapter() {
+ @Override
+ public void windowGainedFocus(WindowEvent e) {
+ root.setGradientColor(Res.colors().frameBg());
+ }
+
+ @Override
+ public void windowLostFocus(WindowEvent e) {
+ root.setGradientColor(Color.RED);
+ }
+ });
authenticationContainer = Components.boxLayout( BoxLayout.PAGE_AXIS );
authenticationContainer.setOpaque( true );
@@ -91,10 +103,10 @@ public class UnlockFrame extends JFrame {
JComponent toolsPanel = Components.boxLayout( BoxLayout.LINE_AXIS, incognitoCheckBox, Box.createGlue() );
authenticationContainer.add( toolsPanel );
for (JButton button : authenticationPanel.getButtons()) {
- button.setMargin( new Insets( 0, 0, 0, 0 ) );
- button.setAlignmentX( RIGHT_ALIGNMENT );
- button.setBorder( null );
toolsPanel.add( button );
+ button.setMargin( new Insets( 0, 0, 0, 0 ) );
+ button.setAlignmentX(RIGHT_ALIGNMENT);
+ button.setContentAreaFilled(false);
}
checkSignIn();
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/platform/mac/AppleGUI.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/platform/mac/AppleGUI.java
new file mode 100644
index 00000000..0e6559c6
--- /dev/null
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/platform/mac/AppleGUI.java
@@ -0,0 +1,45 @@
+package com.lyndir.masterpassword.gui.platform.mac;
+
+import com.apple.eawt.*;
+import com.lyndir.masterpassword.gui.GUI;
+import com.lyndir.masterpassword.gui.PasswordFrame;
+import com.lyndir.masterpassword.gui.User;
+
+import javax.swing.*;
+
+
+/**
+ * @author lhunath, 2014-06-10
+ */
+public class AppleGUI extends GUI {
+
+ public AppleGUI() {
+
+ Application application = Application.getApplication();
+ application.addAppEventListener( new AppForegroundListener() {
+
+ @Override
+ public void appMovedToBackground(AppEvent.AppForegroundEvent arg0) {
+ }
+
+ @Override
+ public void appRaisedToForeground(AppEvent.AppForegroundEvent arg0) {
+ open();
+ }
+ } );
+ application.addAppEventListener( new AppReOpenedListener() {
+ @Override
+ public void appReOpened(AppEvent.AppReOpenedEvent arg0) {
+ open();
+ }
+ } );
+ }
+
+ @Override
+ protected PasswordFrame newPasswordFrame(final User user) {
+ PasswordFrame frame = super.newPasswordFrame( user );
+ frame.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+
+ return frame;
+ }
+}
diff --git a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/util/Components.java b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/util/Components.java
index 6b167437..1874349e 100644
--- a/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/util/Components.java
+++ b/MasterPassword/Java/masterpassword-gui/src/main/java/com/lyndir/masterpassword/gui/util/Components.java
@@ -70,10 +70,10 @@ public abstract class Components {
public static JPasswordField passwordField() {
return new JPasswordField() {
{
- setBorder( BorderFactory.createCompoundBorder( BorderFactory.createLineBorder( Res.colors().controlBorder(), 1, true ),
- BorderFactory.createEmptyBorder( 4, 4, 4, 4 ) ) );
- setAlignmentX( LEFT_ALIGNMENT );
- setAlignmentY( BOTTOM_ALIGNMENT );
+ setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Res.colors().controlBorder(), 1, true),
+ BorderFactory.createEmptyBorder(4, 4, 4, 4)));
+ setAlignmentX(LEFT_ALIGNMENT);
+ setAlignmentY(BOTTOM_ALIGNMENT);
}
@Override
@@ -116,6 +116,7 @@ public abstract class Components {
((DefaultEditor) getEditor()).getTextField().setBorder( editorBorder );
setAlignmentX( LEFT_ALIGNMENT );
setAlignmentY( BOTTOM_ALIGNMENT );
+ setBorder(null);
}
@Override
@@ -147,7 +148,8 @@ public abstract class Components {
public static JCheckBox checkBox(final String label) {
return new JCheckBox( label ) {
{
- setFont( Res.controlFont().deriveFont( 12f ) );
+ setFont(Res.controlFont().deriveFont(12f));
+ setBackground(null);
setAlignmentX( LEFT_ALIGNMENT );
setAlignmentY( BOTTOM_ALIGNMENT );
}
@@ -162,9 +164,14 @@ public abstract class Components {
public static JComboBox comboBox(final ComboBoxModel model) {
return new JComboBox( model ) {
{
+// CompoundBorder editorBorder = BorderFactory.createCompoundBorder(
+// BorderFactory.createLineBorder( Res.colors().controlBorder(), 1, true ),
+// BorderFactory.createEmptyBorder( 4, 4, 4, 4 ) );
+// ((JComponent) ((BasicComboBoxEditor) getEditor()).getEditorComponent()).setBorder(editorBorder);
setFont( Res.controlFont().deriveFont( 12f ) );
setAlignmentX( LEFT_ALIGNMENT );
setAlignmentY( BOTTOM_ALIGNMENT );
+// setBorder(null);
}
@Override
@@ -195,14 +202,17 @@ public abstract class Components {
public void setGradientColor(@Nullable final Color gradientColor) {
this.gradientColor = gradientColor;
+ revalidate();
}
@Override
public void doLayout() {
super.doLayout();
- if (gradientColor != null)
+ if (gradientColor != null) {
paint = new GradientPaint( new Point( 0, 0 ), gradientColor, new Point( getWidth(), getHeight() ), gradientColor.darker() );
+ repaint();
+ }
}
@Override