From 6d1e7a78cf2cd687e9943503226a693660f79034 Mon Sep 17 00:00:00 2001 From: denny Date: Mon, 29 Feb 2016 20:14:52 -0500 Subject: [PATCH] Work in progress - added ability to add new alias identifiers and to auto save alias/identifier changes. --- src/alias/AliasController.java | 2 +- src/alias/AliasEditor.java | 4 +- src/alias/AliasFactory.java | 34 +++++++++++ src/alias/AliasIDType.java | 36 ++++++++---- src/alias/AliasIdentifierEditor.java | 88 ++++++++++++++++++++++++++-- src/alias/AliasModel.java | 4 +- src/playlist/PlaylistManager.java | 36 +++++++++++- 7 files changed, 179 insertions(+), 25 deletions(-) diff --git a/src/alias/AliasController.java b/src/alias/AliasController.java index dbe45414..f30c0e0f 100644 --- a/src/alias/AliasController.java +++ b/src/alias/AliasController.java @@ -55,7 +55,7 @@ public class AliasController extends JPanel mAliasModel = aliasModel; mEditor = new AliasEditor( mAliasModel, settingsManager ); - mAliasModel.addAliasEventListener( mEditor ); + mAliasModel.addListener( mEditor ); mIconCellRenderer = new IconCellRenderer( settingsManager ); diff --git a/src/alias/AliasEditor.java b/src/alias/AliasEditor.java index 95d43e44..03140636 100644 --- a/src/alias/AliasEditor.java +++ b/src/alias/AliasEditor.java @@ -52,9 +52,9 @@ public class AliasEditor extends JPanel implements ActionListener, Listener listener ) + public void addListener( Listener listener ) { mAliasEventBroadcaster.addListener( listener ); } - public void removeAliasEventListener( Listener listener ) + public void removeListener( Listener listener ) { mAliasEventBroadcaster.removeListener( listener ); } diff --git a/src/playlist/PlaylistManager.java b/src/playlist/PlaylistManager.java index 4fd5186f..64b21309 100644 --- a/src/playlist/PlaylistManager.java +++ b/src/playlist/PlaylistManager.java @@ -37,8 +37,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import properties.SystemProperties; +import sample.Listener; import alias.Alias; import alias.AliasDirectory; +import alias.AliasEvent; import alias.AliasList; import alias.AliasModel; import alias.Group; @@ -51,7 +53,7 @@ import controller.channel.ChannelModel; import controller.site.Site; import controller.system.SystemList; -public class PlaylistManager implements ChannelEventListener +public class PlaylistManager implements ChannelEventListener, Listener { private final static Logger mLog = LoggerFactory.getLogger( PlaylistManager.class ); @@ -83,8 +85,9 @@ public class PlaylistManager implements ChannelEventListener mAliasModel = aliasModel; mChannelModel = channelModel; - //Register for channel events so that we can save the playlist when - //any channels change + //Register for alias and channel events so that we can save the + //playlist with changes + mAliasModel.addListener( this ); mChannelModel.addListener( this ); } @@ -128,6 +131,33 @@ public class PlaylistManager implements ChannelEventListener load( playlistFolder.resolve( playlistFile ) ); } + /** + * Alias event listener method. Monitors alias events for events that + * indicate that the playlist has changed and queues automatic playlist + * saving. + */ + @Override + public void receive( AliasEvent event ) + { + if( !mPlaylistLoading ) + { + switch( event.getEvent() ) + { + case ADD: + case DELETE: + case CHANGE: + schedulePlaylistSave(); + break; + default: + //When a new event enum entry is added and received, throw an + //exception here to ensure developer adds support for the + //use case + throw new IllegalArgumentException( "Unrecognized Alias " + + "Event [" + event.getEvent().toString() + "]" ); + } + } + } + /** * Channel event listener method. Monitors channel events for events that * indicate that the playlist has changed and queues automatic playlist