2
0

Fix initialization dependency cycle & load files on init.

This commit is contained in:
Maarten Billemont 2018-08-18 13:43:21 -04:00
parent 6b9e1b8cb8
commit 40fdc8d248
4 changed files with 23 additions and 17 deletions

View File

@ -51,21 +51,23 @@ public final class MasterPassword {
private static final MasterPassword instance = new MasterPassword();
private final Collection<Listener> listeners = new CopyOnWriteArraySet<>();
private final MasterPasswordFrame frame = new MasterPasswordFrame();
@Nullable
private MPUser<?> activeUser;
private MasterPasswordFrame frame;
@Nullable
private MPUser<?> activeUser;
public static MasterPassword get() {
return instance;
}
public boolean addListener(final Listener listener) {
return listeners.add( listener );
public void addListener(final Listener listener) {
if (listeners.add( listener ))
listener.onUserSelected( activeUser );
}
public boolean removeListener(final Listener listener) {
return listeners.remove( listener );
public void removeListener(final Listener listener) {
listeners.remove( listener );
}
public void activateUser(final MPUser<?> user) {
@ -84,6 +86,9 @@ public final class MasterPassword {
public void open() {
Res.ui( () -> {
if (frame == null)
frame = new MasterPasswordFrame();
frame.setAlwaysOnTop( true );
frame.setVisible( true );
frame.setExtendedState( Frame.NORMAL );

View File

@ -114,9 +114,9 @@ public interface MPUser<S extends MPSite<?>> extends Comparable<MPUser<?>> {
@Nonnull
ImmutableCollection<S> findSites(@Nullable String query);
boolean addListener(Listener listener);
void addListener(Listener listener);
boolean removeListener(Listener listener);
void removeListener(Listener listener);
interface Listener {

View File

@ -211,13 +211,13 @@ public abstract class MPBasicUser<S extends MPBasicSite<?, ?>> extends Changeabl
}
@Override
public boolean addListener(final Listener listener) {
return listeners.add( listener );
public void addListener(final Listener listener) {
listeners.add( listener );
}
@Override
public boolean removeListener(final Listener listener) {
return listeners.remove( listener );
public void removeListener(final Listener listener) {
listeners.remove( listener );
}
@Override

View File

@ -66,6 +66,7 @@ public class MPFileUserManager {
protected MPFileUserManager(final File path) {
this.path = path;
reload();
}
public void reload() {
@ -128,12 +129,13 @@ public class MPFileUserManager {
return ImmutableSortedSet.copyOf( userByName.values() );
}
public boolean addListener(final Listener listener) {
return listeners.add( listener );
public void addListener(final Listener listener) {
if (listeners.add( listener ))
listener.onFilesUpdated( getFiles() );
}
public boolean removeListener(final Listener listener) {
return listeners.remove( listener );
public void removeListener(final Listener listener) {
listeners.remove( listener );
}
private void fireUpdated() {
@ -141,7 +143,6 @@ public class MPFileUserManager {
return;
ImmutableSortedSet<MPFileUser> files = getFiles();
for (final Listener listener : listeners)
listener.onFilesUpdated( files );
}